以下是我用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();
}
}
//=========================================================== |