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)相关推荐

  1. FTP的主动传输模式(PORT Mode)及被动传输模式(Passive Mode)(PASV)(FTP客户端 client 服务端 server 通信原理)

    ftp> ? passive passive enter passive transfer mode 文章目录 FTP的特殊性 主动传输模式和被动传输模式 FTP的特殊性 大多数的TCP服务是使 ...

  2. FTP协议主动(Port)模式和被动(Passive)两种模式详解

    FTP协议主动(Port)模式和被动(Passive)两种模式详解 FTP(File Transfer Protocol)是文件传输协议的简称. 正如其名所示: FTP的主要作用,就是让用户连接上一个 ...

  3. iOS端Socket连接、发送数据(一)

    一.Socket的应用 IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室.礼物 (2)微信.QQ等即时聊天 (3)游戏对话.技能等 二.SOCKET原理 套接字(socket ...

  4. SalttSack自动化运维(四)——JINJA模块

    一.调用jinja 1.脚本指定jinja参数 [root@server1 pillar]# cd /srv/salt/apache/ [root@server1 apache]# vim insta ...

  5. windows平台HTTP代理server搭建(CCproxy)

    HTTP代理(CCproxy) 一.拓扑图 二.CCproxy的安装和配置 1.安装CCproxy (1)下载CCproxy无线破解版(没破解的都仅仅支持最多三个用户同一时候连接). (2)按说明安装 ...

  6. linux内核中的GPIO系统之(1):软件框架

    一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...

  7. SAMBA服务和FTP服务讲解(week3_day1)--技术流ken

    samba服务 Smb主要作为网络通信协议; Smb是基于cs架构: 完成Linux与windows之间的共享:linux与linux之间共享用NFS 第一步:安装samba [root@ken ~] ...

  8. 《面向对象软件工程》笔记(一)

    <面向对象软件工程>笔记第一章 软件和软件工程 1.软件的一种分类:定制软件Custom Software.通用软件Generic Software.嵌入式软件Embeded Softwa ...

  9. 客户端与服务端的TCP通信实现(Qt)

    一:TCP通信介绍 .TCP是面向连接的可靠传输的协议,协议规定交换的双方必须是服务端和客户端的两个角色: ---   服务端负责监听网络端口,等待客户端的连接,用连接的socket完成信息的交互: ...

最新文章

  1. 华为推CPU Turbo,荣耀Note10突破3000档
  2. web.py搭建服务器
  3. android 百度悬浮搜索框,百度的搜索框效果如何实现的???
  4. 十大最美的数据中心建筑
  5. mysql数据修改-DEDE
  6. mysql信息函数和加密函数_MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)...
  7. JUnit单元测试的几个规律总结
  8. 201671010444 夏向明 词频统计软件项目报告
  9. 智能优化算法:水基湍流优化算法-附代码
  10. java 拼音首字母 高效_如何实现一个高效的拼音匹配库?解决多音字,首字母匹配等问题...
  11. python爬取琳琅社区整站视频
  12. 考拉情书---一片道歉叶
  13. 矿大计算机学院的周裕浩,2019年“中国矿业大学优秀创新硕士奖学金”评选结果...
  14. markdown文档插入表情符号支持的英文单词大全 官方
  15. 2023年贵州省职业技能大赛“网络安全” 项目比赛任务书
  16. php开发微信手册,PHP技术开发微信公众平台
  17. OpenCV入门 图像的边缘填充与融合
  18. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...
  19. 平新乔《微观经济学十八讲》课后习题答案
  20. 旋钮编码器c代码_旋转编码器EC11驱动

热门文章

  1. “流血”的物流,“补血”的德邦
  2. 在xp上安装linux只需要对安装盘符格式为fat32就行了吗,从硬盘安装在XP下装红旗linux双系统...
  3. 言语线索有限的突显性对自闭症儿童面孔选择性注意的影响与典型儿童不同
  4. 区块链时代正开启 中原精英探讨区块链未来 ----2018华中首届区块链论坛郑州开幕
  5. 人机融合智能中的计算-算计问题
  6. layout_marginStart和layout_marginEnd
  7. 构建自己的知识体系(IT、理财等)
  8. (转载)怎样输入德语中的特殊字符
  9. 15分钟分析伦敦银今日走势
  10. 静态词向量预训练模型