如果不仔细,任何一点疏漏都会导致失败。下面这个程序基本没有改动,经实物验证无误。
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- 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;
- RI=0;
- tempdata=SBUF;
- if(tempdata=='1')
- {
- LED1=1;
- LED2=0;
- }
- if(tempdata=='2')
- {
- LED2=1;
- LED1=0;
- }
- }
- void main(void)
- {
- UartInit();
- LED1=0;
- LED2=0;
- while(1)
- {
- }
- }
复制代码
|