我實測了 沒問題(為了降低工作時的功耗 我把led調的特暗 陽光下不太明顯)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^4; //端口改成我的模塊上電源燈口了
uchar flag=0,a=0;
void init() //這孩紙寫程序怎么不標注呢
{
TMOD=0x20;
TH1=0xfd;
TL1=0xf9;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()
{
init(); //串口初始化
while(1) //循環
{
if(flag==1) //如果 接收標記為1
{
ES=0; //關串口中斷
if(a==0x01) //如果接受位是0x01
{
led=0; //開led
}
if(a==0x3f) //如果接受位是0x3f
{
led=1; //關led
}
flag=0; //接收標記清零
ES=1; //開串口中斷
}
}
}
void chuan() interrupt 4 //中斷服務
{
RI=0; //RI位清零
a=SBUF; //負值 變量a值為接收緩沖區
flag=1; //接收標記置1
}
發01開
01開.jpg (318.72 KB, 下載次數: 73)
下載附件
2017-4-9 13:09 上傳
發02關
02關.jpg (309.4 KB, 下載次數: 100)
下載附件
2017-4-9 13:09 上傳
發01再開我沒截圖 反正都一樣
發3f關
3f關.jpg (307.96 KB, 下載次數: 71)
下載附件
2017-4-9 13:09 上傳
|