|
/* 名稱:甲機(jī)發(fā)送控制命令字符 說(shuō)明:甲單片機(jī)負(fù)責(zé)向外發(fā)送控制命令字符“A”、“B”、“C”,或者停止發(fā)送,乙機(jī)根據(jù)所接收到的字符完成LED1閃爍、LED2閃爍、雙閃爍、或停止閃爍。 */ #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit LED1=P0^0; sbit LED2=P0^3; sbit K1=P1^0; //延時(shí) void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } //向串口發(fā)送字符 void Putc_to_SerialPort(uchar c) { SBUF=c; while(TI==0); TI=0; } //主程序 void main() { uchar Operation_No=0; SCON=0x40; //串口模式1 TMOD=0x20; //T1工作模式2 PCON=0x00; //波特率不倍增 TH1=0xfd; TL1=0xfd; TI=0; TR1=1; while(1) { if(K1==0) //按下K1時(shí)選擇操作代碼0,1,2,3 { while(K1==0); Operation_No=(Operation_No+1)%4; } switch(Operation_No) //根據(jù)操作代碼發(fā)送A/B/C或停止發(fā)送 { case 0: LED1=LED2=1; break; case 1: Putc_to_SerialPort('A'); LED1=~LED1;LED2=1; break; case 2: Putc_to_SerialPort('B'); LED2=~LED2;LED1=1; break; case 3: Putc_to_SerialPort('C'); LED1=~LED1;LED2=LED1; break; } DelayMS(100); } }
圖片2.png (47.93 KB, 下載次數(shù): 30)
下載附件
2020-7-10 10:22 上傳
1.PCON=0x00; //波特率不倍增-----------------通訊的時(shí)候不都是固定波特率的嗎?
2.Operation_No=(Operation_No+1)%4;----------------為什么要加1再對(duì)4取余數(shù)呢?
3.case 0: LED1=LED2=1; break; case 1: Putc_to_SerialPort('A'); LED1=~LED1;LED2=1; break; case 2: Putc_to_SerialPort('B'); LED2=~LED2;LED1=1; break; case 3: Putc_to_SerialPort('C'); LED1=~LED1;LED2=LED1; break;----------------------------case0和其他的case定義怎么不一樣?LED1=~LED1;LED2=1;------------------先把LED1取反的值給到LED1,然后LED2=1?這個(gè)啥意思
|