CT107D-串口通信
串口通信能用到的寄存器:SCON PCON TMOD
SCON Serial Control Register 串口控制寄存器 0x98H
SCON的各位定义及作用
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0-SM2 控制着串口工作的方式,REN接收控制位,如果REN为1,则运行接收串口数据
TB8和RB8分别为发送和接收数据位8,在方式2和3中它会被发送或接收
TI是发送中断标志位,每当发送完成一次数据之后,该位会被硬件置1,需要手动清零,才能继续发送数据
RI是接收中断标志位,每当接收完成一次数据之后,该位会被硬件置1,需要手动清零,才能继续接收数据
PCON Power Control Register 功率控制寄存器 0x87H
PCON的各位定义及作用
SMOD SMOD0 LVDF POF GF1 GF0 PD IDL
SMOD——S可以被认为是Serial,也就是串口,该位与串口通信有关,该位为0时波特率正常,为1时翻倍
TMOD TIMER/COUNTER MODE CONTROL REGISTER 定时器、计数器模式控制寄存器 0x89H
TMOD分为两半,从第7位至第4位为控制定时器1的GATE C/T M1 M0 从第4位至第0位控制定时器0
GATE位是定时器/计数器控制位,当该为为1时才有效
C/T位为功能选择位,C/T为0时为T模式,即计时器模式,当该位为1时为C模式,即计数器模式
M0和M1为工作方式位,对应如下
void UartInit(void) //9600bps@11.0592MHz { PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 TMOD |= 0x20; //设定定时器1为8位自动重装方式 TL1 = 0xFD; //设定定时初值 TH1 = 0xFD; //设定定时器重装值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 }