看了一下你的程序,給你修改了一下。問題原因主要在中斷程序中沒有把PC傳過來的數(shù)讀取,就關(guān)閉中斷程序了。
導(dǎo)致后面沒法判斷。
#include<reg52.h>
#define uchar unsigned char
unsigned char a,flag;
sbit D1=P3^5;
void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; ES=1; //開串口中斷 EA=1;
while(1) { if(flag==1) //如果標志位為1 { ES=0; //關(guān)閉串行中斷位(這點重要) if(a==0xff)
D1=0;
else
D1=1;
} } } void risc() interrupt 4 { if(RI==1) //如果接受標志位為1,則說明已經(jīng)接收到一幀數(shù)據(jù) { RI=0; //寫軟件把接受標志位清零 SBUF=a; //讀SBUF中的數(shù)據(jù),放入a變量中 flag=1; //設(shè)置標志位為1 } }
|