为什么不关发送什么数据,两个灯都会同时亮,,没有按程序控制,小白求解!
程序如下:
#include <reg51.h>
#include <stdio.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
sbit LED1=P3^4;
sbit LED2=P3^3;
void UartInit(void)//初始化
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 串行控制寄存器
TMOD = 0x20; // TMOD: timer 1, 模式 2, 8-bit 重装
PCON = 0x00; //波特率不加倍
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TL1 = TH1; //波特率9600
TR1 = 1; // TR1: timer 1 打开 启动T
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
void UartISR(void) interrupt 4 //中断服务响应
{
uchar tempdata;
i=SBUF;
if(RI)
{
switch(i)
{
case'1':LED1=1;LED2=0;break;
case'2':LED1=0;LED2=1;break;
default:LED1=1;LED2=1;break;
}
tempdata=SBUF;
RI=0;
SBUF=tempdata;
}
if(TI)
{TI=0;}
}
void main(void)
{
UartInit();
LED1=0;
LED2=0;
while(1);
}
|