本帖最后由 skw168 于 2019-10-15 15:23 编辑
最近开始研究硬件串口通信,将过程记录下; 本次使用的单片机是HT50F53
涉及到串口的寄存器一共有5个,分别是 TXR_RXR 寄存器-------发送接收数据寄存器 USR 寄存器------------串口状态寄存器 UCR1 寄存器-----------控制寄存器 UCR2 寄存器-----------控制寄存器 BRG 寄存器------------波特率设定寄存器
1.串口的发送细节 可以不使用中断,每隔一段时间发送一次 初始化 _ucr1 = 0x00; _ucr1 |= B7_SET; //串口使能 _ucr2 = 0x00;
//_rie = 1; //接收中断使能位 _brg = 25; //波特率设置
_ucr2 |= B7_SET; //发送使能 //_ucr2 |= B6_SET; //接受使能 开始发送 buff_usr = _usr; //读一下USR寄存器 _txr_rxr = 0x80; //将数据写入缓存器
2.串口的接收细节 需开启串口接收完成中断功能 初始化 _ucr1 = 0x00; _ucr1 |= B7_SET; //串口使能 _ucr2 = 0x00;
_rie = 1; //接收中断使能位 _brg = 25; //波特率设置
//_ucr2 |= B7_SET; //发送使能 _ucr2 |= B6_SET; //接收使能
_intc2 |= EN_UART_INT; //打开串口中断 在中断里面接收 DEFINE_ISR(ISR_UART, 0x2C) { if(_rxif) { buff_rx = _txr_rxr; GCC_NOP(); GCC_NOP();
//buff_usr = _usr; //读USR寄存器 //_txr_rxr = buff_rx; //将接收到的数据发送出去 } } 3.使用实例 使用电脑上的串口调试工具,将数据发送给单片机,单片机再将数据传回电脑
end |