|
我写了一个串口通信程序
目的:功能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;
}
|
|