|
內有講解文檔與程序
用串口助手發送字符‘1’ LED1亮
發送其他 LED8個燈閃爍一次 當第三次輸錯時,蜂鳴器響一次
波特率9600
單片機源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit BEEP = P2^3;
- uint i;
- unsigned char flag,a;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- TMOD=0x20;//設置串口工作方式1
- TH1=0xfd;
- TL1=0xfd;//波特率9600
- TR1=1;//開定時器1
- REN=1;
- SM0=0;
- SM1=1;
- EA=1;//開總中斷
- ES=1;//開串口中?
- BEEP = 1;
- i=0;
- while(1);
- }
- void ser() interrupt 4
- {
- ES=0;//關閉串行中斷
- RI=0;//清除串行接受標志位
- a=SBUF;
- switch(a)//以字符形式輸入
- {
- case '1':P1=0xfe;SBUF='1';i=1;
- while(!TI);
- TI=0;
- break;
- default :
- if(i==3)
- {
- i=1;
- BEEP = 0;
- delay(100);
- BEEP = 1;
- P1=0xff;
- }
- else
- {
- i++;
- P1=0x00;
- delay(100);
- P1=0xff;
- }
- // case '2':P1=0xfc;SBUF='2';
- // while(!TI);
- // TI=0;
- // break;
- // case '3':P1=0xf8;SBUF='3';
- // while(!TI);
- // TI=0;
- // break;
- // case '4':P1=0xf0;SBUF='4';
- // while(!TI);
- // TI=0;
- // break;
- // case '5':P1=0xe0;SBUF='5';
- // while(!TI);
- // TI=0;
- // break;
- // case '6':P1=0xc0;SBUF='6';
- // while(!TI);
- // TI=0;
- // break;
- // case '7':P1=0x80;SBUF='7';
- // while(!TI);
- // TI=0;
- // break;
- // case '8':P1=0x00;SBUF='8';
- // while(!TI);
- // TI=0; ;
- // break;
- }
- ES=1;//允許串口中斷
- }
復制代碼
所有資料51hei提供下載:
串口密碼.zip
(171.37 KB, 下載次數: 10)
2020-1-10 14:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|