串口发送一个字节的高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
- }
- }
复制代码 |