|
為什么不關(guān)發(fā)送什么數(shù)據(jù),兩個燈都會同時亮,,沒有按程序控制,小白求解!
程序如下:
#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 //中斷服務(wù)響應(yīng)
{
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);
}
1589350109(1).jpg (8.27 KB, 下載次數(shù): 34)
下載附件
2020-5-13 14:09 上傳
1589350291(1).jpg (19.76 KB, 下載次數(shù): 38)
下載附件
2020-5-13 14:11 上傳
|
|