串口UART初始化:
1、设置输入输出脚。TRTSG,PORTG
2、清中断。U1TXIF,U1RXIF
3、设置中断优先级。U1TXIP
4、U1MODE
5、U1STA
6、U1BRG(波特率)
7、开收发中断
UXSTA: UARTX状态和控制寄存器
UXRXREG: UARTX接收寄存器
UXTXREG: UARTX发送寄存器
UXBRG: UARTX波特率寄存器
通过置位UTXEN使能位(UXSTA<10>)使能发送
当UXTXREG寄存器记载了数据且UXBRG产生了移位时钟后才发送。
设置UART发送:
1、初始化UXBRG寄存器来获取最合适的波特率
2、写PDSEL<1:0>(UXMODE<2:1>)和STSEL(UXMODE<0>)位来设置数据位数,停止位数和奇偶校验选择
3、如需发送中断,置位中断使能控制寄存器(IEC)中的UXTXIE。IPC(中断优选级控制寄存器)中的UXTXIP<2:0>来指定中断优先级。写UTXISEL(UXSTA<15>)来控制发送中断模式
4、使能UART模块(UARTEN(UXMODE<15>)置位)
5、置位UTXEN(UXSTA<10>)来使能发送。。UXTXIF置1.。 UART发送中断时,UXTXIF清零
6、想UXTXREG寄存器中加载数据(开始发送)
TSR移位寄存器中的数据来自于发送FIFO缓冲器UXTXREG中的数据。
总之,当UTXEN(UXSTA<10>)使能发送+UXTXREG加载数据+UXBRG有移位时钟则开始发送。
串口控制:
MODE
STA
波特率BRG
数据REG
串口有查询方式和中断方式。一般采用的是中断方式。
IO口做串口:
配置串口为模式1 SCON=0X50;
位置定时器T1为模式2,即自动重装模式 TMOD &= 0X0F;// 清零T1的控制位
TMOD |= 0X20;//配置T1为模式2
根据波特率计算TH1和TL1的初值(PCON可进行波特率加倍) TH1=256-(11059200/12/32/baud); //计算T1重载值
TL1=TH1;//初值等于重载值
打开定时器控制寄存器TR1让定时器跑起来 ET1=0;//禁止T1中断
TR1=1;//启动T1
T1作为波特率发生器时,千万不能再使能T1的中断。