一、功能描述
甲机的P1.0端口接开关,乙机的P1.0端口接LED灯,程序运行,接通SW1,LED1灯亮。
甲机的P1.0、P1.1、P1.2、P1.3、P1.4端口接开关,乙机的P1.0、P1.1、P1.2、P1.3、P1.4端口接LED灯,程序运行,接通开关SW1、SW2、SW3、SW4、SW5,则与之相对应的LED1、LED2、LED3、LED4、LED5灯亮。
二、电路图
三、程序
//甲机发送程序
#include <REGX51.H>
#define uchar unsigned char
sbit SW=P1^0;
void main()
{
TMOD=0x20;
TH1=0xfa;
TL1=0xfa;
SCON=0x50;
PCON=0x00;
TR1=1;
while(1)
{
SBUF=P1;
while(!TI);
TI=0;
}
}
//乙机接收程序
#include <REGX51.H>
#define uchar unsigned char
sbit LED=P1^0;
void main()
{
TMOD=0x20;
TH1=0xfa;
TL1=0xfa;
SCON=0x50;
PCON=0x00;
TR1=1;
while(1)
{
while(!RI);
P1=SBUF;
RI=0;
}
}
四、小结
本节课,学习了利用发送设备给接受设备发送数据,实现了甲机给乙机发送命令,实现灯亮的效果。在我输完代码,运行程序,发现程序并没有如老师所讲的那样LED1亮,然后我重新检查了一遍我所打代码,发现了我的问题—乙机的程序第二行的LED=P1^0输成了SW=P1^0,改正后第一个电路可以成功运行,使LED1灯亮。再打第二组代码时,发现灯未通开关常亮,没能找到问题,求助同学,找到了问题—未将乙机代码倒数第四行改为P1=SBUF,修改程序后,成功实现产品功能。