波特率dlm_第6讲 串行通信16550.ppt

UART芯片16550简介 16550结构 4. 控制寄存器的格式 接收数据缓冲寄存器(只读),发送缓冲寄存器(只写) 波特率除数寄存器(低字节) 波特率除数寄存器(高字节) 线路控制寄存器LCR 线路状态寄存器LSR 寄存器端口地址分配 线路控制寄存器LCR 线路状态寄存器LSR FIFO控制器FCR(只写) 波特率发生器 时钟源频率1.8432MHz 时钟频率= 波特率*16倍*分频系数 即:分频系数=1843200/(波特率*16) 波特率与分频系数对应表 16550初始化流程 16550初始化例题要求 要求串行数据帧包含8位有效数据、1位停止位、采用奇校验方式,编写设置波特率为9600的初始化程序。 根据公式计算,波特率为9600时,分频值为000CH 请编写满足该要求的16550初始化程序 根据线路控制寄存器LCR的约定,控制字 16550初始化程序 CTR EQU 3FBH;控制口,基地址+3 DLSB EQU 3F8H;除数低字节口,基地址+0 DMSB EQU 3F9H;除数高字节口,基地址+1 MOVAL;设置波特率时 ;要求特征位DLAB为1 MOVDX,CTR;线控寄存器端口地址 OUTDX,AL;写入特征位 MOVAL,0CH;波特率分频值低字节 MOVDX,DLSB;分频值低位端口地址 OUTDX,AL;写入分频值低位 MOVAL,00H;波特率分频值高字节 INCDX;分频值高位端口地址 OUTDX,AL;写入分频值高位 MOVAL ;控制字 MOVDX,CTR;线控寄存器端口地址 OUTDX,AL;写入控制字 *guzhaolin@126.com 时钟 DLAB A2 A1 A0 被访问的寄存器 串口1的地址 0 0 0 0 接收缓冲器RBR、发送缓冲器THR 3F8H+0 0 0 0 1 中断允许寄存器IER 3F8H+1 1 0 0 0 中断标识寄存器IIR(只读) FIFO控制器FCR(只写) 3F8H+2 × 0 1 0 传输线控制寄存器LCR 3F8H+3 × 0 1 1 传输线状态寄存器LSR 3F8H+4 除数寄存器(低字节)DLL 3F8H+0 除数寄存器(高字节)DLM 3F8H+1 × 1 0 1 1 0 0 1 寻址识别 1:分频 0:收发数据、中断 D7 D6 D5 D4 D3 D2 D1 D0 XX0:校验位无效 001:奇校验 011:偶校验 101:校验0 111:校验恒1 校 验方 式 数据 帧长 00:5位 01:6位 10:7位 11:8位 设置简断 1-强制间断 0-正常 停止位 1:1位半或2位 0:1位停止位 DLAB D7 D6 D5 D4 D3 D2 D1 D0 0 恒定值 1:发送移位空 1:发送缓冲空 1:检测到间断 1:帧错 1:奇偶校验错 1:数据溢出错误 1:接收数据就绪 D7 D6 D5 D4 D3 D2 D1 D0 1:清除发送FIFO缓冲器 1: 清除接收FIFO缓冲器 1:允许FIFO缓冲器工作 01H 00H 115200 02H 00H 57600 05H 00H 23040 06H 00H 19200 0AH 00H 11520 0CH 00H 9600 10H 00H 7200 18H 00H 4800 20H 00H 3600 30H 00H 2400 40H 00H 1800 60H 00H 1200 C0H 00H 600 80H 01H 300 00H 03H 150 17H 04H 110 00H 06H 75 00H 09H 50 分频器DLL(L) 分频器DLM(H) 波特率 16550串口芯片的初始化编程就是设置波特率、确定串行通信的数据帧格式、使能等。 设置波特率 设置数据位数、停止位、校验位 使能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值