如果不仔細,任何一點疏漏都會導致失敗。下面這個程序基本沒有改動,經實物驗證無誤。
無標題.jpg (20.79 KB, 下載次數: 16)
下載附件
2020-5-13 20:58 上傳
- #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)
- {
- }
- }
復制代碼
|