通过串行通信远程控制流水灯(速度可控).DOCMCU1的P1口接有8个LED灯,MCU2的P2.2口接有一个控制流水灯暂停与启动的按钮SW,通电后,8个灯按从P1.7到P1.0的顺序流水,速度为每个灯亮0.5秒,按一下按钮SW,流水暂停,再按一下SW,流水继续。(晶振频率为11.0592MHz)
实验程序: // MCU1的程序 #include <reg51.h> #define U8 unsigned char U8 code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; U8 cnt=0; bit run=1; void main(void){ EA=1; TMOD=0x20; SCON=0x50; ET0=1; TH0=0xee; TL0=0; TH1=0xfd; TL1=0xfd; TR0=1; TR1=1; while(1) { if(R1==1) { R1=0; run=!run; } } } void timeint(void) interrupt 1 { static U8 i=0; TH0=0xee; TL0=0; i=i & 0x07; P1=tab[i]; if(cnt==100) { cnt=0; i ; } If(run)cnt ; } //MCU2的程序,查询按钮,发送指令B表示按过一次按钮。 #include <reg51.h> sbit butt=P2^2; void main(void){ TMOD=0x20; SCON=0x50; TH1=0xfd; TL1=0xfd; TR1=1; while(1) { if(butt==0) { SBUF=’B’; while(T1==0); T1=0; while(butt==0); } } }
评论