|
我寫了一個串口通信程序
目的:功能1.當按鍵按下時可以發送數據出去。
功能2.判斷接收的數據,當數據是1或2時,可以分別點亮一盞燈。
問題:只要功能1實現了,功能2就再也實現不了,求解。
#include<reg52.h>
#define uchar unsigned char
sbit KEY1=P3^3;
sbit led1=P2^0;
sbit led2=P2^1;
uchar a,b,n;
void init();
void main()
{
init();
while(1)
{
n=a;
switch(n) //接收的數據控制燈的亮滅
{
case 1: led1=0,led2=1; break;
case 2: led2=0,led1=1; break;
default: led1=1,led2=1; break;
}
if(KEY1==0)
{
while(!KEY1); //按鍵按下一次,數據發送一次
ES =0;
SBUF=1;
while(!TI);
TI=0;
EA=1;
}
}
}
//串口通信函數
void init()
{
SCON = 0X50; //選擇方式1,并允許串口接收數據
TMOD = 0X20; //選擇工作方式2,可自動重裝
PCON = 0X80; //波特率加倍
TH1 = 0XF3;//波特率為2400
TL1 = 0XF3;//同上
TR1 = 1; //啟動定時器
EA = 1;//打開總中斷
ES =1; //打開串口中斷
}
void ser() interrupt 4
{
RI =0;
a =SBUF;
}
|
|