实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C”给乙机,全部点亮;按下第四次K1,灯全灭
#include
sbit k=P1^0;
sbit P00=P0^0;
sbit P03=P0^3;
unsigned chari,NO;
void main(void) /* 主函数*/
{
SCON=0x40; /*方式1只发送,不接收*/ TMOD=0x20;
TH1=0xfd; /*给定时器T1赋初值,波特率为9600*/
TL1=0xfd;
TR1=1;
k=1;
NO=0;
while(1)
{
if(k==0)
{while(k==0);
NO=(NO+1)%4;
}
switch (NO)
{case 0 :P0=0xff;
break;
case 1 :P00=0;P03=1;
SBUF='A';
while(TI==0);
TI=0;
break;
case 2 : P00=1;
P03=0;
SBUF='B';
while(TI==0);
TI=0;
break;
case 3 : P00=0;
P03=0;
SBUF='C';
while(TI==0);
TI=0;
break;
}
}
for(i=250;i>0;i--){;} //延时
}
#include
sbit k=P1^0;
sbit P00=P0^0;
sbit P03=P0^3;
unsigned char NO;
void main() /*主函数*/
{
SCON=0x50; /*设置串口为方式3,允许接收REN=1*/
TMOD=0x20;
TH1=0xfd; /*给定时器T1赋初值,波特率为9600*/
TL1=0xfd;
TR1=1;
P0=0xff;
while(RI==0); /*检测接收中断标志RI,RI=0,未接收完,则循环等待*/
{RI=0;
switch (SBUF)
{ case 'A': P00=0;P03=1;
break;
case 'B':P00=1;P03=0;
break;
case 'C': P00=P03=0;
break;
}
}
}
符合不???
89c51吗?