以下是我用STC8A4K照著官方寫的,已經在開發板上驗證成功了
手頭上沒有現成的8A8K電路板,但實際都是8A系列的,是一樣的
你對比一下
/*================================
Stc8a4k串口2測試程序
單片機型號:STC8A4K
波特率:9600
==================================*/
#include "Stc8a.h"
bit busy;
char wptr;
char rptr;
char buffer[16];
//===========================================================
//函數名:Delay1000ms()
//功能:延遲1s
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 57;
j = 27;
k = 112;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//===========================================================
void Uart2Isr() interrupt 8
{
if (S2CON & S2TI)
{
S2CON &= ~S2TI;
busy = 0;
}
if (S2CON & S2RI)
{
S2CON &= ~S2RI;
}
}
//===========================================================
void Uart2Init()
{
S2CON = 0x50; //8位數據,可變波特率:9600
AUXR &= 0xFB; //定時器時鐘12T模式
T2L = 0xE8; //設置定時初始值
T2H = 0xFF; //設置定時初始值
AUXR |= 0x10; //定時器2開始計時
}
//===========================================================
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
//===========================================================
void Uart2SendStr(char *p)
{
while (*p!= '\0')
{
Uart2Send(*p++);
}
}
//===========================================================
void main()
{
Uart2Init();
IE2 = 0x01;
EA = 1;
while (1)
{
Uart2SendStr("Uart Test !\r\n");
Delay1000ms();
}
}
//=========================================================== |