- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DOS串口编程
? 查看文章 ? DOS串口编程
2008-12-17 21:26
DOS串口编程
第一章 串行通信接口串行通信使用单条数据线代替了并行通信的8位数据线,传输的距离更远。通信接口每次从CPU得到8位数据,然后通过一个并行入串行出的移位寄存器,转换成串行位,每次发送一位,将数据发送出去。同样,在接收端也必须有一个串行入并行出的移位寄存器来接收串行数据。并组合打包成一个字节。
以串行方式进入数据线的是由0和1组成的数据,一组这样的数叫做一个字符,一个字符可能有8位,或者7位,6位,5位。在传输中,每个字符都要加上起始位和终止位,起始位总是1位,终止位可以是1位或2位。为了保证传输数据的正确性,有时还包括一位效验位。一般芯片都允许编程时设定效验方式为奇效验,偶效验或者无效验。
串行通信的数据传输速率用bps(bits per second)来表示。另外,还有一种表示信号传输速率的单位是波特率(band rate)。波特率是一种信号调制单位,和bps不一定相等,它定义每秒钟传输的离散信号的数目。所谓的离散信号,就是指不均匀的,不连续的也不相关的信号。更详细的讲解请查阅相关文档。通信端口的传输速率从110bps到115200bps,经验表明,波特率相当于9600bps的时候,传输相当稳定。
1960年电子工业协会(Electronics Industries Association,EIA)制定了RS-232接口标准,以后又陆续发布了修订版本,这是目前广泛应用于个人计算机上的串行接口,用于近程数据通信,连接一些外部设备。下图就是我们经常用到的9针RS-232插头,每个引脚的定义为:引脚方向名称描述含义1输入CDCarrier Detect数据载波检测2输入RXDReceive Data数据接收端3输出TXDTransmit Data数据发送端4输出DTRData Terminal Ready数据终端准备就绪(计算机)5-SGSystem Ground信号地6输入DSRData Set Ready数据设备准备就绪7输出RTSRequest to Send请求发送(计算机要求发送数据)8输入CTSClear to Send清除发送(MODEM准备接收数据)9输入RIRing Indicator响铃指示
以上信号在通信过程中可能会被全部或者部分使用,把两台计算机通过串口连接起来,最简单的通讯仅需TXD及RXD及SG即可完成。
第二章 端口设置IBM PC和80x86兼容机可以连接4个串行端口,即COM1~COM4,相应的BIOS中的编号为COM0~COM3,但程序每次只能对其中一个端口进行存取。计算机启动时,自检程序就会测试4个COM端口是否存在,并把每个COM端口的I/O地址写到BIOS的数据区0040:0000~0040:0007共8个字节,每个COM地址占用2个字节。如果系统没有连接串行端口,BIOS数据区的这几个单元内容就成为0。用debug可以查看COM端口地址。
Cdebug-d 0040:0000 L080040:0000 F8 03 F8 02 E8 03 E8 02
上例查看结果表明系统中有4个COM端口,对应I/O地址分别为3F8,2F8,3E8,2E8。每个COM端口都包括一组8位的寄存器,这四个地址都叫做基地址,也就是第一个寄存器的I/O地址,其他寄存器的地址按照递增的顺序排列。COM1的基地址是3F8,COM2的基地址是2F8,COM3的基地址是3E8,COM4的基地址是2E8。我们通过这些寄存器编程控制数据接收或者发送。
COM1及COM3使用PC机中断4,COM2及COM4使用中断3。
第三章 寄存器1 寄存器组COM端口的寄存器组如下表所示,共有12个寄存器,使用了8个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分。DLAB是线路控制寄存器的第7位。
基地址读/写寄存器缩写描述0 Write-发送保持寄存器(DLAB=0)0 Read-接收数据寄存器(DLAB=0)0Read/Write-波特率低八位(DLAB=1)1 Read/WriteIER中断允许寄存器1 Read/Write-波特率高八位(DLAB=1)2 ReadIIR中断标识寄存器2 WriteFCRFIFO控制寄存器3 Read/WriteLCR线路控制寄存器4 Read/WriteMCRMODEM控制寄存器5 ReadLSR线路状态寄存器6 ReadMSRMODEM状态寄存器7 Read/Write-Scratch
文档评论(0)