STC15W204S串口通讯控制LED亮灭!此芯片大家注意,它是没有定时器1的,所以我走了一点误区,没有注意看资料。实际实验是正常的。
单片机源程序如下:- #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; //清除发送完成标志位
- }
复制代码
|