STC15W204S串口通訊控制LED亮滅!此芯片大家注意,它是沒有定時器1的,所以我走了一點誤區,沒有注意看資料。實際實驗是正常的。
74.jpg (572.49 KB, 下載次數: 26)
下載附件
2023-5-12 17:33 上傳
須.png (120.82 KB, 下載次數: 26)
下載附件
2023-5-12 17:33 上傳
單片機源程序如下:- #include <reg51.h>
- #include <intrins.h>
- unsigned char buf;
- sfr P5=0xC8;//xxxx,1111 端口5
- sfr T2L=0xD7;//xxxx,1111 端口5
- sfr T2H=0xD6;//xxxx,1111 端口5
- sfr AUXR=0x8E;//xxxx,1111 端口5
- sfr BRT=0x9C;//xxxx,1111 端口5
- sbit led0=P5^5;
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位數據,可變波特率
- AUXR |= 0x01; //串口1選擇定時器2為波特率發生器
- AUXR |= 0x04; //定時器時鐘1T模式
- T2L = 0xE0; //設置定時初始值
- T2H = 0xFE; //設置定時初始值
- AUXR |= 0x10; //定時器2開始計時
- ES=1;
- EA=1;
- }
- main()
- {
- /*SCON = 0x50;// 8位數據,可變波特率 9600bps 11.0592MHZ
- AUXR|=0X01;// 串口1選擇定時器2為波特率發生器
- AUXR|=0X04; //1T模式
- T2L=0XE0;
- T2H=0XFE;
- AUXR|=0X10;//開定時器2
- ES=1;
- EA=1;*/
- UartInit();
- while(1);
- }
- void uart() interrupt 4
- {
- ES=0;
- RI=0;
- buf=SBUF;
- switch(buf)
- {
- case 0:led0=0;break;//發送0燈亮
- case 1:led0=~led0;break; //發送1燈取反
-
- default:P5=0XFF;break; //否則滅掉
- }
- ES=1; //清除發送完成標志位
- }
復制代碼
|