一般我们玩单片机都要研究串口,串口一开始最头痛的无非就是波特率和中断
波特率初始化可以用STC-ISP生成代码,比如STC15W408AS这一款单片机,只有串口0和串口2,需要波特率9600,则可以在STC-ISP中输入如下参数
点击生成C代码,即可自动生成如下代码
void UartInit(void) //9600
{
SCON = 0x50; //sfr SCON = 0x98;
AUXR |= 0x04; //sfr AUXR = 0x8E;
T2L = 0xE0; //sfr T2L = 0xD7;
T2H = 0xFE; //sfr T2H = 0xD6;
AUXR |= 0x10; //
ES = 1; //sbit ES = IE^4; sfr IE = 0xA8;
}
其实就是调定时器,两个接口速率相同才可以通讯,核心在于T2L和T2H的值,其他的则是选择哪个口哪个定时器什么的(那些位啊选择啊什么的太复杂就不讲了)
如果直接把上面的内容复制进去,可能会有报错,说找不到像SCON ,AUXR这些地址,其实都在头文件里定义好的,如果没有头文件也可以在ISP中找
获取以后包含进来即可
中断函数的编写如下
void Uart() interrupt 4
{
ES=0;