单片机的串口通信功能是比较常用的功能。
80C51的串行口
我在学习的过程中,觉得SBUF的使用方法是最难的,于是对着这个图和资料一步步理解,才搞明白一点“A=SBUF”和“SBUF=A”的意思。
51单片机通过特殊功能寄存器SBUF对串行接收或串行发送寄存器进行访问,两个寄存器共用一个地址99H,但在物理上是两个独立的寄存器。当接收数据时,写“A=SBUF”,单片机会自动将串口接收寄存器中的数据取走给A;当发送数据时,写“SBUF=A”,程序执行完这条语句便自动开始将串口发送寄存器中的数据一位位从串口发送出去。这些知识可以在书籍上面找到。
对定时器和串口初始化
void uasrinit()
{
TMOD=0X20;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
TH1=0xfa; //波特率位4800 晶振频率为11.0592MHz
TL1=0Xfa;
// PCON=0x80; //把SMOD=1,该状态下串口方式1,2,3的波特率加倍
TR1=1;//打开定时器
SM0=0;
SM1=1; //串口通信方式1,10位异步收发(8位数据)
REN=1; //打开接收
ES=1; //串口中断打开
EA=1; //打开总中断
}
中断程序
void uasr(