第7章_输入输出和接口应用_第1页
第7章_输入输出和接口应用_第2页
第7章_输入输出和接口应用_第3页
第7章_输入输出和接口应用_第4页
第7章_输入输出和接口应用_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 输入/输出和接口应用 (input/output and interface application)§7.1 接口(interface) 外设的工作状态及数据通过接口送给主机,主机对外设的命令及数据通过接口送到外设主机 接口 外设 信息:数据(数字量,模拟量,开关量),状态,控制 接口:CPU与内存及CPU与外设之间通过总线进行连接的逻辑部件(电路),有存储器接口和I/O接口 端口:I/O接口内的寄存器,用来暂存和传送CPU与外设交换的数据、状态和控制信息,每个端口都有一个地址 一I/O接口的作用 1外设与主机速度匹配 2主机与外设交换信息:状态信息、数据信息和控制信息 3

2、变换传输方式 二I/O接口的主要职能 实现数据缓冲,地址译码(提供I/O地址),信息转换,提供命令译码和状态信息,定时和控制. 三I/O端口的编址方式 1统一编址:也叫存储器编址,即存储器对应输入输出方式 2独立编址:也叫I/O编址,即端口寻址的输入输出方式§7.2 输入/输出方式(I/O mode) 通常采用三种输入/输出方式,即 程序控制、程序中断、直接存储器存取 一程序控制输入/输出方式 1无条件传送 CPU不考虑外设状态,只管用IN、OUT指令传送数据 2条件传送,即查询方式 CPU在传送数据之前先查询外设状态,如果外设准备就绪,就与外设交换数据,否则继续查询CHECK:IN

3、 AL,STATUS;读状态端口AND AL,80H ;检查最高位是否为0(0为准备好)JNZ CHECK ;未准备好,继续检查MOV AL,STORE;准备好,从内存取数OUT DATA,AL ;从数据端口输出 二程序中断输入/输出方式 CPU执行主程序,不用查询外设状态,而由外设通过中断请求线INTR(或NMI)向CPU请求中断,CPU响应后与外设进行信息交换,完成后继续执行主程序 三直接存储器存取方式DMA(Diract Memory Access) 在DMA方式中,CPU响应总线请求让出总线,由DMA控制器直接控制存储器与外设的互相传送 (见P237,F8-14) ·另有一种

4、叫专用I/O处理机方式被广泛采用,原来由CPU完成的各种I/O操作与控制全部由I/O处理机(IOP)完成,与CPU并行工作。如8086/8088系列中的8089(IOP),它有2个独立通道,每个都兼有CPU功能和DMA功能。IOP专门用于处理高速I/O设备。§7.3 定时与计数(timing and counting) Intel 8253可编程定时器/计数器 (可编程间隔定时器PITProgrammable Interval Timer) 采用NMOS工艺,单一+5V电源,24脚双列 一8253的基本结构和功能1 结构:内部结构及引脚(见P226,F8-2,F8-3) 8253由数

5、据总线缓冲器、读/写逻辑、控制字寄存器、三个计数器组成 ·数据总线缓冲器 ·读/写逻辑(见P227,T8-1)CS RD WR A1 A0寄存器选择和操作 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 x x x x 0 1 1 x x写入计数器0#写入计数器1#写入计数器2#写入控制寄存器读计数器0#读计数器1#读计数器2#无操作(三态)未选中(三态)无操作(三态) ·控制字寄存器 ·三个计数器 (见P225,F8-1) 由一个16位的

6、可预置值的减法计数器构成,引脚 CLK输入脉冲,其周期不能小于380ns(即) GATE门控信号,作为控制计数器工作的外部信号,低电平禁止计数 OUT输出,计数到0时输出,可作为中断请求线 2主要功能 (1)三个独立的16位计数器通道,每个计数器都可以二进制或二十进制方式计数 (2)每个计数器的计数频率范围为02MHZ (3)每个通道有6种工作方式由编程选择 (4)所有的输入/输出都与TTL兼容 二8253的控制字 由CPU向8253写入,用来选择8253的工作方式D7D6D5D4D3D2D1D0计数器读/写格式工作 方式数制(见P232,F8-10) D7D6= 00 选择计数器0# 01

7、选择计数器1# 10 选择计数器2# 11 非法选择 D5D4= 00 计数器锁存命令(这时计数单元CE的数据锁存到输出锁存器OL中) 01 只读/写计数器低8位(高8位自动设0) 10 只读/写计数器高8位(低8位自动设0) 11 先读/写计数器低8位,再读/写计数器高8位 D3D2D1= 000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5 D0= 0 二进制(0FFFFH) 1 BCD (09999) 三8253的工作方式1 方式0:计数结束产生中断(见P228,F8-4) 特点:(1)不重复计数,计数到OUT保持高,只有写入新计数值时OUT变低

8、才开始新计数 (2)计数过程若GATE=0时暂停计数,GATE=1时继续计数 (3)计数中若改写计数值,则立即按新值重新计数(若写16位,写第一字节停止计数,写第二字节按新值重新计数) (4) 计数在WR信号上升沿后的下一个时钟脉冲开始设8088CPU系统地址总线A1A0与8253的A1A0相连,A15A2经译码器输出后与8253的CS相连,则8253的端口地址为40H43H,以下初始化使计数器2#工作于方式0 MOV AL,90H;10 01 000 02#,低8位,方式0,二进制 OUT 43H,AL;送往控制字寄存器 MOV AL,60H;计数值 OUT 42H,AL;送往通道2 (PC

9、机只用A0A9共10条作I/O地址) 2方式1:可编程单拍脉冲(见P229,F8-5) 特点:(1)单脉冲宽度为N个输入脉冲周期(CLK)(可以是外部事件不等间隔脉冲) (2)计数到后可用GATE再次启动 (3)计数过程中,可用GATE重新触发,重新计数 (4)计数过程中可重写计数值而不影响计数,计数到后再次触发则按新值计数 3方式2:速率发生器(分频脉冲发生器)(见P230,F8-6) 特点:(1)通道可连续工作,输出固定频率的脉冲 (2)GATE变低时停止计数,变高后的下一个CLK重新计数 (3)计数过程可改变计数值不影响计数,计数到后下一次按新值计数 4方式3:方波速率发生器(见P230

10、,F8-7) 特点:(1)若计数值为偶数则OUT输出一半高一半低,若计数值为奇数则OUT输出高电平比低电平多一个CLK (2)GATE=1允许计数,GATE=0禁止计数若计数过程中GATE变0又变1则重新装入初值计数 (3)计数过程中写入新值要等现行计数的半方波结束之前收到GATE脉冲才用新值开始计数 5方式4:软件触发选通(见P231,F8-8) 特点:(1)GATE必须保持1才能软件触发(GATE为0时禁止计数) 计数过程中GATE为0停止计数,恢复1时重新计数 (2)计数过程中若改变计数值,则按新值重新计数(若写16位,写第一字节停止计数,写第二字节开始计数) 6方式5:硬件触发选通(见

11、P231,F8-9) 特点:(1)计数过程中若有GATE触发则重新计数 (2)计数过程中写入新值不影响计数,(计数到或未完)若有GATE触发则按新值开始计数 8253工作方式小结: 1方式2、4、5输出波形相同,为一个CLK周期的负脉冲 初始时方式0在写入CW后OUT为低,其余方式为高 2方式1、5由硬件触发计数,方式1输出的单脉冲为N个CLK周期时间的负脉冲,N为计数值,方式5为一个CLK周期时间的负脉冲 3方式0、2、3、4由软件触发(仍受GATE控制)计数 4方式2、3连续计数,方式0、1、4、5一次计数,计数到后从最大值(十六进制FFFFH或BCD9999)继续倒计数 5方式0、4在计

12、数过程中写入新值后立即有效,其他方式须在外部触发或计数到后才有效 6方式1、5由GATE启动计数,方式0、2、3、4由GATE控制计数 四8253的初始化编程步骤 1写入通道控制字选择工作方式 2写入计数值,若规定只写8位,则另8位自动设0;若规定写16位,则分二次写入,先低8位,后高8位 例:把通道1设为工作方式1,计数1024次,则 通道控制字 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1# 写16位 方式1 二进制 1# 写16位 方式1 BCD 计数值 0400H(二进制计数) 1024H(BCD计数)MOV AL,72HMOV AL,73H;控制字OUT 43H

13、,ALOUT 43H,ALMOV AL,00HMOV AL,24H;计数值低8位OUT 41H,ALOUT 41H,ALMOV AL,04HMOV AL,10H;计数值高8位OUT 41H,ALOUT 41H,AL;1#口地址 二进制计数值0400H低8位为0故可只写高8位,控制字为01100010 ·CPU可用IN指令随时读入8253任一通道的计数现行值,因需先低后高分二次读取,必须锁存计数以免计数值不断变化,可用GATE信号暂停计数或CPU送一个通道控制字(D5D4=00),后者不影响计数器计数,而只锁存当前值,CPU二次读取后锁存自动解除 例:读通道1的计数值MOV AL,40

14、H;01000000锁存1#OUT 43H,ALIN AL,41H ;读低8位MOV DL,ALIN AL,41H ;读高8位MOV DH,AL;计数值保存在DX中 ·时间常数(计数值)的计算: N=T/ N 计数值(时间常数即计数常数) T 定时量 CLK脉冲周期(IBM PC/XT为1.19MHZ,14.31818÷3÷4,=840ns) 一个通道的定时范围(取=840ns) Tmax=840ns×6553655ms(BCD计数840ns×) Tmin=840ns×1=840ns 五IBM PC/XT中的定时器/计数器使用 IBM

15、 PC/XT使用8253-5,端口地址: 0#为40H,1#为41H,2#为42H,控制字寄存器为43H ·0#通道为方式3,GATE0=1,OUT0作为中断请求接至8259A中断控制器的IRQ0,用于报时时钟和磁盘驱动器的马达定时(CW=36H,N=0即216) ·1#通道为方式2,GATE1=1,OUT1经D触发器对8237A-5 DMA控制器通道0的DMA请求DREQ0,用于定时启动刷新动态RAM(CW=54H,N=12H) ·2#通道为方式3,用于产生1KHZ的方波输出,OUT2经与门并滤掉高频分量后送扬声器发声,用8255-5的PB1、PB0来控制与门和

16、GATE2以控制发声时间,PB1、PB0同时为高的时间长短即发音长短,长3秒,短0.5秒(CW=B6H,N=533H) ROMBIOS对8253-5的编程如下:;计数器0用于定时(约55ms)中断MOV AL,00110110B;0#,方式3,写16位,二进制计数OUT 43H,ALMOV AL,0 ;计数值65536(840ns×6553655ms)OUT 40H,AL ;写入低字节OUT 40H,AL ;写入高字节;计数器1用于定时(约15ms)DMA请求 (2ms内可刷新132行多于全部128行)MOV AL,01010100B;1#,方式2,只写低字节,二进制计数OUT 43

17、H,ALMOV AL,12H ;计数值18(840ns×1815ms)OUT 41H,AL;计数器2用于产生1KHZ的方波送至扬声器发声, 声响子程序为BEEP,入口地址为FFA08HBEEP PROC NEAR MOV AL,10110110B;2#,方式3,写16位,二进制计数 OUT 43H,AL MOV AX,0533H ;计数值1331 OUT 42H,AL ;写低8位 MOV AL,AH ; (初始化结束) OUT 42H,AL ;写高8位 IN AL,61H ;读8255的B口原输出值 MOV AH,AL ;存于AH OR AL,03H ;使PB1、PB0均为1 OUT

18、 61H,AL ;输出使扬声器发声 SUB CX,CX ;CX为65536作延时用G7: LOOP G7 ;循环延时 DEC BL ;BL为发声长短的入口条件 JNZ G7 ;BL=6长声(3秒),BL=1短声(0.5秒) MOV AL,AH ;取回AH中的8255B口输出值 OUT 61H,AL ;恢复8255B口,停止发声 RET ;返回 例:8253计数器2产生600HZ方波使扬声器发声,当按任意键时发声停止STACKSEGMENT STACKDB 256 DUP(0)STACKENDSDATASEGMENTFREDDW 1983 ;1.19MHZ/600HZ=1983DATAENDSC

19、ODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTARTPROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXIN AL,61H ;读PB口状态OR AL,03H ;使PB1、PB0均为1OUT 61H,AL ;写新PB口值,以使扬声器发声MOV AL,0B6H;2#,方式3,写16位,二进制计数OUT 43H,ALMOV BX,FRED;分频计数值MOV AL,BL ;先写低字节OUT 42H,ALMOV AL,BH ;再写高字节OUT 42H,AL ;输出600HZ方波MOV AH,0 ;调用BIOS的读键盘

20、程序INT 16H ;等待敲入键IN AL,61H ;读PB口状态AND AL,0FCH;使PB1、PB0均为0OUT 61H,AL ;扬声器停止工作RET ;结束返回DOSSTARTENDPCODEENDSEND START§7.4 并行通信(parallel communication) Intel 8255A可编程并行输入输出接口 40脚双列直插式,NMOS工艺,单一+5V 一8255A的结构与功能 (见P253,F9-1) 1三个8位数据端口A、B、C,C口又可分为二个4位端口即上C口和下C口 A口带数据输出锁存和缓冲器、数据输入锁存器 B口带数据输入/输出的锁存/缓冲器、数

21、据输入缓冲器 C口带数据输出锁存/缓冲器、数据输入缓冲器(输入无锁存) B、C口的驱动能力可达4mA(达林顿级) 2A组和B组控制电路 用以接收CPU的命令字决定两组的工作方式或对C口按位复位/置位 3数据总线缓冲器 三态8位缓冲器,用以和系统数据总线直接连接,实现CPU与8255A信息传送 4读/写控制逻辑 管理所有数据、控制字、状态字传送 端口选择及控制:(见P255,T9-1)A1 A0 RD WR CS功 能 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 x x x x 1 x x 1 1 0

22、 1 1 0 1 0端口A®数据总线端口B®数据总线 输入(读)端口C®数据总线数据总线®端口A数据总线®端口B 输出数据总线®端口C (写)数据总线®控制字寄存器数据总线为三态数据总线为三态 断开非法状态 A1A0可选择4个口地址即A、B、C口和控制字寄存器 RESET复位信号,高有效时清除控制字寄存器并置A、B、C口为输入方式 二8255A的控制字 8255A三种工作方式: (1)方式0:基本输入输出工作方式(程序控制,即无条件和查询I/O方式) (2)方式1:(应答式)选通输入输出工作方式(程序中断I/O方式) (3)

23、方式2:(应答式)选通双向输入输出工作方式 ·A、B、C口都可工作于方式0 A、B口可工作于方式1,此时C口作控制位或状态位 方式2只有A口可选用,此时B口可工作于方式0、1,C控制位或状态位 1工作方式控制字 用于选择A、B、上C、下C口的工作方式,8位,最高位1为特征位 格式:(见P256,F9-2)D7D6D5D4D3D2D1D0特征位 方式选择 A口 上C口 方式选择 B口 下C口 1 00 方式0 1输入 1输入 0方式0 1输入 1输入 01 方式1 0输出 0输出 1方式1 0输出 0输出 1x 方式2 A组 B组 例:8255A的A口为方式0输出,B口为方式1输入 上

24、C口为方式0输入,下C口此时为B口的联络线 其控制字为:8EH,即 1 0 0 0 1 1 1 0 方式0 A出 上C入 方式1 B入 下C出 2置位/复位控制字 8位,最高位0为特征位,用于对C口的任一位置位或复位 一个控制字只能设置一位 格式:(见P256,F9-3)D7D6D5D4D3D2D1D0特征位 (无用,置000) 位选择 置位/复位 0 无关 000 0 1置位 001 1 0复位 010 2 011 3 100 4 101 5 110 6 111 7 例:使PC7为1的控制字为00001111B(0FH) ·工作方式和置位/复位控制字共用一个控制字寄存器端口地址而用

25、特征位区分 三8255A的工作方式 1方式0 基本的输入输出方式 用I/O指令对端口读写,作无条件传送或条件(查询)传送,条件传送时用C口的某些位作A口、B口的控制和状态位 A口、B口、上C口、下C口有16种不同的输入输出组合 ·方式0输入: ·方式0输出: 2方式1 选通输入输出方式,即程序中断I/O方式 A口、B口作选通端口,并且用C口的三位作控制线(应答线和中断请求线) 如果A口和B口都选方式1,则C口还余二条可作输入或输出 <1>方式1输入(见P259,F9-5) STB:选通输入,低有效时数据由外部送入输入锁存器 IBF:输入缓冲器满,高有效时表示输入

26、锁存器满,它由STB置位,RD上升沿复位 INTR:中断请求,高有效时8255A向CPU请求中断,A口用PC3,B口用PC0 它是当STB、IBF、INTE为高时有效的(被置高) INTE A:A口中断允许,由用户对PC4置位/复位来控制 INTE B:B口中断允许,由用户对PC2置位/复位来控制 <2>方式1输出(见P258,F9-4) OBF:输出缓冲器满,低有效时表示CPU已把数据输出到端口 OBF由WR的上升沿置有效,由ACK有效使其恢复为高 ACK:外设响应信号,低有效时表示已接收CPU输出的数据 INTR:中断请求,高有效时表示外设已接收数据,请求再输出数据 当ACK、

27、OBF、INTE为高时INTR置位(=1),WR的后沿使其复位(=0) INTE A:A口中断允许,由用户对PC6置位/复位来控制 INTE B:B口中断允许,由用户对PC2置位/复位来控制 3方式2(见P260,F9-6) 选通双向输入输出方式,可工作于查询或中断方式 方式2只有A口可用 INTR:中断请求,高电平有效,输入或输出都可向CPU请求中断 OBF:输出缓冲器满,低有效时表示CPU已把数据送到端口A ACK:响应信号,低有效启动A口三态输出缓冲器送出数据(否则缓冲器三态) ACK上升沿作为数据已输出的回答信号 INTE1:与输出缓冲器相关的中断允许,对应PC6,1允许、0屏蔽 ST

28、B:选通输入,低有效时外设把数据输入到端口输入锁存器 IBF:输入缓冲器满,高有效时表示数据已进入输入锁存器 INTE2:与输入缓冲器相关的中断允许,对应PC4,1允许、0屏蔽 ·当A口工作于方式2时,B口可工作在方式0、方式1,此时C口各位的功能为:D7D6D5D4D3D2D1D0 I/O I/O I/O 方式0OBFA INTE1 IBFA INTE2 INTRA INTEB IBFB INTRB 方式1输入 (ACKA) (STBA) (STBB) INTEB OBFB INTRB 方式1输出 (ACKB) A组状态 B组状态 (方式控制字设置完后)它形成一个方式状态字,CPU

29、可用读C口得到 ·例:设A口为双向中断传送,B口为方式1输入,则方式控制字为 1 1 ´ ´ ´ 1 1 ´ 11000110B=C6H ABB 方方输 式式入 21 A口方式2输入中断允许,则PC4=1,C口置位/复位控制字为00001001B=09H A口方式2输出中断允许,则PC6=1,C口置位/复位控制字为00001101B=0DH ·注意:一个按位置位/复位控制字只能对C口的某一位设置 ·CPU响应中断,则在中断服务子程序中首先从C口读状态字,判别IBF或OBF是否有效以决定输入或输出 ·如果A口或B口工

30、作于选通I/O方式而屏蔽中断,则C口的状态字可作查询或I/O方式之用 四IBM PC/XT的8255A-5使用 PC/XT系统板上使用一片8255A-5,工作在方式0 (1)A口在系统上电自检时暂为输出,输出部件检测标志,自检后设为输入,用于键盘中断处理程序中读取已串并转换完的键盘扫描码 (2)B口输出,用于对键盘串并转换,RAM和I/O通道检验以及扬声器等的启动控制 (3)C口输入,高4位为一些状态测试位,低4位用来读取系统板的配置开关DIP的设置情况 8255A-5在系统中的I/O地址: A口60H B口61H C口62H 控制字寄存器63H 对B口, PB0:1 定时器2选通控制 PB1

31、:1 扬声器数据 PB2:备用 PB3:0 允许读DIP低4位/1允许读DIP高4位 PB4:0 允许RAM奇校验 PB5:0 允许I/O通道校验 PB6:0 保持键盘时钟为低 PB7:0 允许键盘数据/1清除键盘数据 对C口高4位, PC4:1 扬声器状态 PC5:1 定时器通道2输出 PC6:1 I/O通道校验 PC7:1 RAM奇偶校验 DIP开关ON为0,OFF为1SW-8SW-7SW-6SW-5SW-4SW-3SW-2SW-1软盘驱动器数 显示器 系统板上RAM 001个 0140´25彩色 01128KB 0常规 0正常工作 012个 1080´25彩色 101

32、92KB 1循环自检 103个 11单色或多个 11256KB 114个 显示器 00640KB 1有8087以下是ROM-BIOS初始化部分的读系统开关的一段8255A-5初始化编程,读DIP开关程序段MOV AL,10001001B;方式0,A口、B口输出,C口输入OUT 63H,AL;MOV AL,10100101B;PB3为低以读取DIP低4位OUT 61H,AL;送到B口;先做其他测试IN AL,62H;读C口AND AL,0FH;截取低4位MOV AH,AL;存于AH中MOV AL,10101101B;使PB3为高电平,其他位不变OUT 61H,ALNOP;等待数据输入稳定IN A

33、L,62H;再读C口MOV CL,4;设置循环计数为4ROL AL,CLAND AL,0F0H;取高4位OR AL,AH;高4位低4位合并SUB AH,AH;AX的高字节清0MOV DATA_WORDOFFSET EQUIP-FLAG,AX;存入设备标志单元(2字节)MOV AL,10011001B;重设8255A方式0,A口、B口、C口输入OUT 63H,AL至此得8位DIP配置状态,系统进入正常工作 例1CPU通过8255A的PA0输出500HZ的矩形波 即在PA0交替输出“0”、“1”电平,各保持1ms 设8255A端口地址为60H63HSTART:MOV AL,80H;OUT 63H,

34、ALXOR AL,ALREPT:OUT 60H,ALCALL D1MSNOT ALJMP REPTD1MS:MOV CX,280WAIT:LOOP WAITRET 例28255通过PC/XT62芯总线与系统连接,其地址为218H21BH,现用C口连接8个发光二极管,若C口输出低电平灯亮,高电平灯灭请用软件定时,使一个灯亮,每隔0.5秒从低位向高位循环移动一次,若有键按下则停止运行CODESEGMENTASSUME CS:CODE,DS:CODE,SS:CODESTART:MOV AX,CODEMOV DS,AXMOV SS,AXMOV AX,0100HMOV SP,AXMOV DX,21BH;

35、8255控制口地址MOV AL,10000000B;C口输出OUT DX,ALMOV DX,21AH;C口地址MOV BH,0FEHCONT:MOV AL,BHOUT DX,ALCALL D500MS;延时0.5秒ROL BH,1;左移1位MOV AH,0BH;调用读键中断INT 21HAND AL,AL;无键按下AL=0,有键按下AL=0FFHJZ CONTMOV AX,4C00HINT 21HD500MSPROC NEAR;延时0.5秒子程序MOV BL,50DLY:MOV CX,2801WAIT1:LOOP WAIT1DEC BLJNZ DLYRETD500MSENDPCODEENDSE

36、ND START 例3系统用I/O通道通过8255A把内存DTAB单元开始的一组字节型数据从A口输出打印(用中断方式) 设8255A的A口为方式1输出,A口地址为218H,控制寄存器地址为21BH 方式控制字:10100000=A0H (01方式1,0A口输出) 置位/复位控制字:00001101=0DH (110PC6 ,1置1)DATASEGMENTDTABDB 11H,56H,88H,96H,33HCOUNTEQU $-DTABOCW1DB ?DATAENDSSTACKSEGMENT STACKDW 20 DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE,

37、DS:DATA,SS:STACKSTART:MOV AX,CSMOV DS,AXMOV DX,OFFSET INTPROCMOV AX,250AH;设中断向量INT 21H;(AL=n,DS:DX=入口地址)MOV AX,DATAMOV DS,AXMOV DX,21BHMOV AL,10100000BOUT DX,ALMOV AL,00001101B;PC6置1使INTEA=1允许A口中断OUT DX,ALCLIIN AL,21H;读IMR状态(中断屏蔽寄存器)MOV OCW1,ALAND AL,0FBH;开放IRQ2中断OUT 21H,ALSTIMOV CX,COUNT-1MOV BX,OF

38、FSET DTABMOV DX,218HMOV AL,BXOUT DX,AL;送出第一个字符WAIT1:JMP WAIT1;等待中断LOOP WAIT1CLIMOV AL,OCW1;恢复IMR原状态OUT 21H,AL;送屏蔽寄存器端口STIMOV AX,4C00HINT 21HINTPROC:INC BX;中断服务子程序MOV AL,BXOUT DX,ALMOV AL,20H;OCW2的D5=1中断结束信号OUT 20H,AL;发到ISR(中断服务寄存器)STIIRETCODEENDSEND START ·8259的中断屏蔽寄存器某位为“0”该级中断开放,“1”屏蔽 ·中

39、断处理结束后应向中断服务寄存器ISR发中断服务结束信号(OCW2的D5=1)以取消该级正在服务标志§7.5 串行通信(serial communication) 数据逐位顺序传送,通信线路简单,成本低,特别适用于远距离传送 常用的可编程串行I/O接口芯片有Z80SIO、INS8250、Intel8251等 1异步通信方式(传送时不必和数据一起发送同步时钟脉冲) 异步通信中,CPU与外设之间有两项规定,即字符格式和波特率 字符格式:字符的编码形式和规定,如 ASCII码规定:每个串行字符由四个部分组成 1个起始位,58个数据位,1个奇偶校验位,12个停止位 小于最高数据传输率(见P26

40、5,F9-11) 最高数据传输率 起始位至停止位构成一帧,传送一个字符 相邻两字符间的位为空闲位,可任意长 起始位的下降沿使接收设备中的时钟同步复位 波特率:每秒传输代码(字符)的位数,单位:波特 1波特=1位/秒 设数据传送速率为120字符/秒,每个字符10位,则传送的波特率为 10´120=1200波特 每位传送的时间Td为波特率的倒数,即位时间 Td ·注意:波特率与有效数据位传送速率有所区别,如上例每个字符10位,7个有效数据位,因此有效数据位传送率为 7´120=840位/秒 而波特率为1200波特 异步通信的传送速率早先在509600波特,现已达56千

41、波特 2同步通信方式 传送时不必加起始位和停止位,而是把数据成块传送 在数据块开始处用一或两个8位的同步字符来指明,同步字符由用户设定 接收器接收数据时首先搜索同步字符,找到后才开始装配数据 在同步传送中,要求接收器时钟和发送器时钟严格同步,因此电路比较复杂 同步传送速率高于异步传送速率,可在56千波特以上 二串行通信中的基本技术 1数据传送方向 单工通信 A站发,B站收 A®B 半双工通信 A站B站轮流收发,即A发B收,B发A收 AB 全双工通信 A站和B站可同时收发 A«B 2信号的调制和解调 数字通信需要有很宽的频带,一般用作远程通信的电话线频带较窄,数字信号经传输后

42、会产生畸变 在发送端用调制器(Modulator)把数字信号转换为模拟信号 在接收端用解调器(Demodulator)把模拟信号转换为数字信号 调制时可用两个不同频率的低频信号表示“0”和“1” 三异步接收器/发送器 异步接收器/发送器由三部分组成,即接受器、发送器和控制部件 ·接收器接收串行数据经过一个移位寄存器(8位)变为并行数据经缓冲器后到并行数据总线供CPU读取 ·发送器则把CPU送来的数据经8位的发送数据寄存器和一个20位的发送移位寄存器后输出串行数据 ·收/发器工作时,接收部分自动检查每个字符的停止位(“1”)以便同步,若停止位为0,则发出错误信息供C

43、PU处理(接收子程序中处理) ·收/发器用外部时钟来和接收的数据同步,外部时钟周期Tc 每位数据占用时间Td,有 Td = K Tc (K = 16 或 64,波特率系数) 即每个数据位时间Td为外部时钟周期的16或64倍 设K = 16 收发器在空闲位之后在外部时钟的每个上升沿采样接收数据,采样9个“0”后,每16个Tc读一次数据值,这样保证读取的时刻正好在数据位的中间位置,避开了信号上升沿下降沿位置而得正确信号 ·通信时应约定字符格式和波特率 INS8250 UART就是可编程通用异步收发器 (Universal Asynchronous Receiver/Transm

44、itter) 四Intel 8251可编程串行输入输出接口 USART(Universal Synchronous/Asynchronous Receiver/Transmitter) 同步、异步全双工收/发 结构:(P268,F9-12) 1数据总线缓冲器:CUP写入控制命令和待发送字符,读出状态信息和接收的数据 2接收器:接收RxD脚上的串行数据转换为并行数据存于接收缓冲器中 3发送器:由发送缓冲器和并串移位寄存器组成,将来自CPU的并行数据变为串行数据经TxD脚发送出去 4读写控制逻辑:(见P270,T9-2)CSC/DRDWR操作000010101×0011×1100×CPU读8251数据CPU读8251状态CPU写数据到8251CPU写命令到8251无操作 C/D=1对控制寄存器操作,C/D=0对数据寄存器操作 5调制解调控制:远程通信时需要调制解调器,该控制电路用以和调制解调器作应答,近程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论