- #include<reg51.h>
- #define uchar flag1,flag2,flag3
- sbit key1=P1^0;
- sbit key2=P2^1;
- sbit key3=P2^2;
- flag1=1,flag2=1,flag3=1;
- unsigned char i;
- unsigned char n;
- unsigned char code Tab[ ]={0xA5,0X20}; //開始掃描命令
- unsigned char a[4]; //接收數據數組
- float b[1]; //提取后的數據數組
- void delay(unsigned int time);
- void Send(unsigned char dat) //發送命令
- {
- SBUF=dat;
- while(TI==0);
- TI=0;
- }
- void UsartInit()
- {TMOD=0x20; //定時器T1工作方式2
- SCON=0x50; //串口工作方式1允許接收(REN=1)
- PCON=0x00; //正常波特率9600
- TH1=0xfd; //初值設定,波特率9600
- TL1=0xfd;
- TR1=1; //打開計數器
- EA=1; //打開總中斷
- ES=1;} //打開中斷允許中的串口中斷允許
- void key_scan() //按鍵掃描
- {if(!key1){delay(10);if(!key1)flag1=0;}
- if(!key2){delay(10);if(!key2)flag2=0;}
- if(!key3){delay(10);if(!key3)flag3=0;}
- }
- void delay(unsigned int time) //延時
- { unsigned int j = 0;
- for(;time>0;time--)
- for(j=0;j<110;j++);}
- void main()
- {
- UsartInit(); //串口初始化
- key_scan(); //按鍵掃描
- if(flag1==0&flag2==1&flag3==1) //判斷是否開始掃描
- { flag1=1; //清零按鍵標志
- for (i=0;i<2;i++) //串口發送
- {
- Send(Tab[i]);
- delay(20);
- }
- delay(300);
- n=0;
- while(n<5) //串口接收
- while(RI==0);
- {a[n]=SBUF;
- RI=0;
- n++;}}
-
-
- }
復制代碼
|