本帖最后由 wulin 于 2018-10-19 15:48 编辑
楼主提出问题含糊不清。不知你的程序是从哪里抄来的,根据头文件是使用的STC12C5A60S2,看串口初始化程序是使用的串口2。串口2的数据缓冲寄存器应该是S2BUF并且使用独立波特率发生器。由于你只发不收,不必开串口中断。给你写了示例程序,Keil 调试通过,未经实物验证。
#include <STC12C5A60S2.H>
//sbit relay=P3^1;
sbit HighLow=P1^0;
//sbit status=P1^1;
bit a;
void UartInit(void) //9600bps@11.0592MHz
{
AUXR &= 0xF7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
AUXR &= 0xFB; //独立波特率发生器时钟为Fosc/12,即12T
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR |= 0x10; //启动独立波特率发生器
}
void send_uart1(unsigned char ck1)
{
S2BUF=ck1;
while(S2TI==0);
S2TI=0;
}
void main()
{
UartInit();
HighLow=1;
a=HighLow;
while(1)
{
if(HighLow^a)//只在P1.0电平变化时发送数据
{
a=~a;
send_uart1(HighLow);
}
}
}
|