串口發送一個字節的高4位0000,低4位xxxx就代表P3.5~P3.2的電平狀態
- #include <reg52.h>
- unsigned char num=0,num1;
- bit flag=0;
- void main()
- {
- SCON= 0x50; //8位數據,可變波特率
- TMOD= 0x21; //T0方式1T方式2
- TH0 = 0x4C; //設置定時初值50ms
- TL0 = 0x00; //設置定時初值50ms
- TH1 = 0xfd; //定時器1重裝
- TL1 = 0xfd; //定時器1(波特率9600)
- TR0 = 1; //開定時器0
- TR1 = 1; //開定時器1
- EA = 1; //開總中斷
- ET0 = 1; //開T0中斷
- ET1 = 0; //禁止定時器1中斷
- while(1)
- {
- if(flag==1)
- {
- flag=0; //5秒標志清0
- num1=(P3&0x3c)>>2; //讀取P3.2~P3.5,num1的低4位是P3.2~P3.5的狀態
- SBUF=num1; //串口發送數據
- while(!TI); //等待發送完成
- TI=0; //發送中斷請求標志位清0
- }
- }
- }
- //T0中斷服務程序
- void Timer0Interrupt(void) interrupt 1
- {
- TH0 = 0x4C; //重裝初值
- TL0 = 0x00; //重裝初值
- num++;
- if(num>=100)//5秒
- {
- num=0;
- flag=1;//5秒標志置1
- }
- }
復制代碼 |