最近开始学习使用STC单片机来做项目,支持国产芯片,STC单片机的标准库大多已寄存器操作为主,入门成本比较高,需要加强这部分基础知识
1. 定义特殊寄存器
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98; // 串口1控制寄存器
sfr SBUF = 0x99; // 串口1发送缓冲
使用sfr关键字定义特殊寄存器SCON 串口1控制寄存器
scon有8个BIt,是一个可寻址的特殊寄存器, 这里可以使用sbit来定义 0x98地址处的8位别名
0x98 ^ (bit_address)
/* SCON */
sbit SM0 = 0x9F;
sbit SM1 = 0x9E;
sbit SM2 = 0x9D;
sbit REN = 0x9C;
sbit TB8 = 0x9B;
sbit RB8 = 0x9A;
sbit TI = 0x99; // 发送忙标识
sbit RI = 0x98; // 接收忙标识
2. 操作串口发送数据
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{