Com port (1)
Port Address
一般而言,COM口的I/O地址是固定的,
3F8/2F8 BaseAdd + 0 Transmit/Receive Buffer
3F9/2F9 BaseAdd + 1 IER
3FA/2FA BaseAdd + 2 IIR(Read)/FCR(write)
3FB/2FB BaseAdd + 3 LCR
3FC/2FC BaseAdd + 4 MCR
3FD/2FD BaseAdd + 5 LSR
3FE/2FE BaseAdd + 6 MSR
3FF/2FF BaseAdd + 7 Scratch Pad Register
Abbreviate
CD - Carrier Detect
CTS - Clear to Send
DCD - Data Carrier Detect
DCE - Data communication Equipment
DDCD - Delta Data Carrier Detect
DLAB - baud rate divisor
DSR - Data set ready
DTE - Data Terminal Equipment
DTR - Data terminal ready
FCR - FIFO Control Register
FIFO - First In First Out
IER - Interrupt Enable Register
IIR - Interrupt Identification Register
LCR - Line Control Register
LSR - Line Status Register
MCR - Modem Control Register
MSR - Modem Status Register
RD - Receive Data
RI - Ring indicator
RTS - Request to Send
TD - Transmit Data
THRE - Transmitter Holding Register Empty
TSRE - Transmitter Shift Register Empty
Set Baud Rate
当LCR(Base Address+3) BIT7是1的时候,往Base+0/Base+1这两个端口写的数据就是要设置的波特率。
Baud Rate | Base+1 | Base+0 | Baud Rate | Base+1 | Base+0 |
50 | 0x09 | 0x00 | 2400 | 0x00 | 0x30 |
110 | 0x04 | 0x17 | 3600 | 0x00 | 0x20 |
150 | 0x03 | 0x00 | 4800 | 0x00 | 0x18 |
300 | 0x01 | 0x80 | 7200 | 0x00 | 0x10 |
600 | 0x00 | 0xC0 | 9600 | 0x00 | 0x0C |
1200 | 0x00 | 0x60 | 19200 | 0x00 | 0x06 |
1800 | 0x00 | 0x40 | 38400 | 0x00 | 0x03 |
2000 | 0x00 | 0x3A | 57600 | 0x00 | 0x02 |
115200 | 0x00 | 0x01 |
Example Code:
BaudRateTable:
dw 01h ; 115200 0
dw 02h ; 57600 1
dw 03h ; 38400 2
dw 06h ; 19200 3
dw 0Ch ; 9600 4
mov dx, Base+3
in al, dx
jmp short $+2 ; delay
or al, 80h
out dx, al ; set LCR BIT7
jmp short $+2
push ax ; save the data
lea si, cs:BaudRateTable
shl bx, 1 ; bx =0/1/2/3/4
add si, bx ; si point the divisor
mov ax, word ptr cs:[si]
; al, base+0 value
; ah, base+1 value
mov dx, Base+0
out dx, al
jmp short $+2
xchg ah, al
inc dx
out dx, al
jmp short $+2
pop ax
and al, 07fh ; clear BIT7
mov dx, base+3
out dx, al
jmp short $+2
Transmission parameters Knowledge
LCR BIT1 BIT0 ---- Word length
0 0 5 bit
0 1 6 bit
1 0 7 bit
1 1 8 bit
LCR BIT2 ---- stop bits length
0 1bits
2 2bits
LCR BIT3 ---- Parity or not
0 disable parity
1 enable parity
LCR BIT5 BIT4 ---- Parity control
0 0 odd parity
0 1 even parity
1 0 parity is always 1
1 1 parity is always 0
如果我们要设置字长是8,停止位是1,无奇偶校验程序如下:
Sample Code
mov dx, base+3
in al, dx
jmp short $+2
or al, 03 ; set 8bit
and al, 011111011b ; set 1 stop bit
and al, 011110111b ; set no parity
out dx, al
jmp short $+2
Com port (1)相关推荐
- FTP的主动传输模式(PORT Mode)及被动传输模式(Passive Mode)(PASV)(FTP客户端 client 服务端 server 通信原理)
ftp> ? passive passive enter passive transfer mode 文章目录 FTP的特殊性 主动传输模式和被动传输模式 FTP的特殊性 大多数的TCP服务是使 ...
- FTP协议主动(Port)模式和被动(Passive)两种模式详解
FTP协议主动(Port)模式和被动(Passive)两种模式详解 FTP(File Transfer Protocol)是文件传输协议的简称. 正如其名所示: FTP的主要作用,就是让用户连接上一个 ...
- iOS端Socket连接、发送数据(一)
一.Socket的应用 IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室.礼物 (2)微信.QQ等即时聊天 (3)游戏对话.技能等 二.SOCKET原理 套接字(socket ...
- SalttSack自动化运维(四)——JINJA模块
一.调用jinja 1.脚本指定jinja参数 [root@server1 pillar]# cd /srv/salt/apache/ [root@server1 apache]# vim insta ...
- windows平台HTTP代理server搭建(CCproxy)
HTTP代理(CCproxy) 一.拓扑图 二.CCproxy的安装和配置 1.安装CCproxy (1)下载CCproxy无线破解版(没破解的都仅仅支持最多三个用户同一时候连接). (2)按说明安装 ...
- linux内核中的GPIO系统之(1):软件框架
一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...
- SAMBA服务和FTP服务讲解(week3_day1)--技术流ken
samba服务 Smb主要作为网络通信协议; Smb是基于cs架构: 完成Linux与windows之间的共享:linux与linux之间共享用NFS 第一步:安装samba [root@ken ~] ...
- 《面向对象软件工程》笔记(一)
<面向对象软件工程>笔记第一章 软件和软件工程 1.软件的一种分类:定制软件Custom Software.通用软件Generic Software.嵌入式软件Embeded Softwa ...
- 客户端与服务端的TCP通信实现(Qt)
一:TCP通信介绍 .TCP是面向连接的可靠传输的协议,协议规定交换的双方必须是服务端和客户端的两个角色: --- 服务端负责监听网络端口,等待客户端的连接,用连接的socket完成信息的交互: ...
最新文章
- 华为推CPU Turbo,荣耀Note10突破3000档
- web.py搭建服务器
- android 百度悬浮搜索框,百度的搜索框效果如何实现的???
- 十大最美的数据中心建筑
- mysql数据修改-DEDE
- mysql信息函数和加密函数_MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)...
- JUnit单元测试的几个规律总结
- 201671010444 夏向明 词频统计软件项目报告
- 智能优化算法:水基湍流优化算法-附代码
- java 拼音首字母 高效_如何实现一个高效的拼音匹配库?解决多音字,首字母匹配等问题...
- python爬取琳琅社区整站视频
- 考拉情书---一片道歉叶
- 矿大计算机学院的周裕浩,2019年“中国矿业大学优秀创新硕士奖学金”评选结果...
- markdown文档插入表情符号支持的英文单词大全 官方
- 2023年贵州省职业技能大赛“网络安全” 项目比赛任务书
- php开发微信手册,PHP技术开发微信公众平台
- OpenCV入门 图像的边缘填充与融合
- 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...
- 平新乔《微观经济学十八讲》课后习题答案
- 旋钮编码器c代码_旋转编码器EC11驱动
热门文章
- “流血”的物流,“补血”的德邦
- 在xp上安装linux只需要对安装盘符格式为fat32就行了吗,从硬盘安装在XP下装红旗linux双系统...
- 言语线索有限的突显性对自闭症儿童面孔选择性注意的影响与典型儿童不同
- 区块链时代正开启 中原精英探讨区块链未来 ----2018华中首届区块链论坛郑州开幕
- 人机融合智能中的计算-算计问题
- layout_marginStart和layout_marginEnd
- 构建自己的知识体系(IT、理财等)
- (转载)怎样输入德语中的特殊字符
- 15分钟分析伦敦银今日走势
- 静态词向量预训练模型