本帖最后由 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);
}
}
}
|