打印

HT50F53串口的使用

[复制链接]
642|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skw168|  楼主 | 2019-10-15 15:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

137

帖子

6

粉丝