|
本帖最后由 wulin 于 2018-10-19 15:48 編輯
樓主提出問題含糊不清。不知你的程序是從哪里抄來的,根據(jù)頭文件是使用的STC12C5A60S2,看串口初始化程序是使用的串口2。串口2的數(shù)據(jù)緩沖寄存器應(yīng)該是S2BUF并且使用獨(dú)立波特率發(fā)生器。由于你只發(fā)不收,不必開串口中斷。給你寫了示例程序,Keil 調(diào)試通過,未經(jīng)實(shí)物驗(yàn)證。
#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位數(shù)據(jù),可變波特率
AUXR &= 0xFB; //獨(dú)立波特率發(fā)生器時(shí)鐘為Fosc/12,即12T
BRT = 0xFD; //設(shè)定獨(dú)立波特率發(fā)生器重裝值
AUXR |= 0x10; //啟動(dòng)獨(dú)立波特率發(fā)生器
}
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電平變化時(shí)發(fā)送數(shù)據(jù)
{
a=~a;
send_uart1(HighLow);
}
}
}
|
|