您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页第7章 输入输出和接口应用

第7章 输入输出和接口应用

来源:尚车旅游网
第七章 输入/输出和接口应用

(input/output and interface application) §7.1 接口(interface)

外设的工作状态及数据通过接口送给主机,主机对外设的命令及数据通过接口送到外设

主机 接口 外设 信息:数据(数字量,模拟量,开关量),状态,控制

接口:CPU与内存及CPU与外设之间通过总线进行连接的逻辑部

件(电路),有存储器接口和I/O接口

端口:I/O接口内的寄存器,用来暂存和传送CPU与外设交换的数

据、状态和控制信息,每个端口都有一个地址

一.I/O接口的作用 1.外设与主机速度匹配

2.主机与外设交换信息:状态信息、数据信息和控制信息 3.变换传输方式

二.I/O接口的主要职能

实现数据缓冲,地址译码(提供I/O地址),信息转换,提供命令译码和状态信息,定时和控制.

三.I/O端口的编址方式

1.统一编址:也叫存储器编址,即存储器对应输入输出方式 2.编址:也叫I/O编址,即端口寻址的输入输出方式

§7.2 输入/输出方式(I/O mode) 通常采用三种输入/输出方式,即

程序控制、程序中断、直接存储器存取 一.程序控制输入/输出方式 1.无条件传送

CPU不考虑外设状态,只管用IN、OUT指令传送数据

2.条件传送,即查询方式

CPU在传送数据之前先查询外设状态,如果外设准备就绪,就与外设交换数据,否则继续查询

AND AL,80H ;检查最高位是否为0(0为准备好) JNZ CHECK ;未准备好,继续检查 MOV AL,STORE;准备好,从内存取数 OUT DATA,AL ;从数据端口输出 ┇

CHECK:IN AL,STATUS;读状态端口

二.程序中断输入/输出方式

CPU执行主程序,不用查询外设状态,而由外设通过中断请求线INTR(或NMI)向CPU请求中断,CPU响应后与外设进行信息交换,完成后继续执行主程序

三.直接存储器存取方式DMA(Diract Memory Access)

在DMA方式中,CPU响应总线请求让出总线,由DMA控制器直接控制存储器与外设的互相传送

(见P197,F8-14)

·另有一种叫专用I/O处理机方式被广泛采用,原来由CPU完成的各

种I/O操作与控制全部由I/O处理机(IOP)完成,与CPU并行工作。在8086/8088系列中,80就是一个常用的高性能IOP,它有2个通道,每个都兼有CPU功能和DMA功能。IOP专门用于处理高速I/O设备。

§7.3 定时与计数(timing and counting) Intel 8253可编程定时器/计数器

(可编程间隔定时器PIT——Programmable Interval Timer) 采用NMOS工艺,单一+5V电源,24脚双列 一.8253的基本结构和功能 1. 结构:内部结构及引脚

(见P188,F8-2,F8-3)

8253由数据总线缓冲器、读/写逻辑、控制字寄存器、三个计数器组成

·数据总线缓冲器 ·读/写逻辑

(见P1,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# 写入计数器1# 写入计数器2# 写入控制寄存器 读计数器0# 读计数器1# 读计数器2# 0 0 1 1 1 1 x x x x 0 1 1 x x ·控制字寄存器 ·三个计数器

无操作(三态) 未选中(三态) 无操作(三态)

(见P186,F8-1)

由一个16位的可预置值的减法计数器构成,引脚

CLK——输入脉冲,其周期不能小于380ns(即f<2.5MHZ) GATE——门控信号,作为控制计数器工作的外部信号,低电平禁止计数

OUT——输出,计数到0时输出,可作为中断请求线 2.主要功能

(1)三个的16位计数器通道,每个计数器都可以二进制或二——十进制方式计数

(2)每个计数器的计数频率范围为0~2MHZ (3)每个通道有6种工作方式由编程选择 (4)所有的输入/输出都与TTL兼容

二.8253的控制字

由CPU向8253写入,用来选择8253的工作方式

D7 D6 D5 D4 D3 D2 D1 D0 数制 计数 器 读/写 格式 工 作 方 式 (见P193,F8-10)

D7D6= 00 选择计数器0# 01 选择计数器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 二进制(0~FFFFH) 1 BCD (0~9999) 三.8253的工作方式

1. 方式0:计数结束产生中断

(见P1,F8-4)

特点:(1)不重复计数,计数到OUT保持高,只有写入新计数值时OUT

变低才开始新计数

(2)计数过程若GATE=0时暂停计数,GATE=1时继续计数 (3)计数中若改写计数值,则立即按新值重新计数(若写16位,

写第一字节停止计数,写第二字节按新值重新计数)

(4) 计数在WR信号上升沿后的下一个时钟脉冲开始

设8088CPU系统地址总线A1A0与8253的A1A0相连,A15~A2经译码器输出后与8253的CS相连,则8253的端口地址为40H~43H,以下初始化使计数器2#工作于方式0

MOV AL,90H;10 01 000 0——2#,低8位,方式0,二进制 OUT 43H,AL;送往控制字寄存器 MOV AL,60H;计数值 OUT 42H,AL;送往通道2

(PC机只用A0~A9共10条作I/O地址) 2.方式1:可编程单拍脉冲

(见P190,F8-5)

特点:(1)单脉冲宽度为N个输入脉冲周期(CLK)(可以是外部事件

不等间隔脉冲)

(2)计数到后可用GATE再次启动

(3)计数过程中,可用GATE重新触发,重新计数

(4)计数过程中可重写计数值而不影响计数,计数到后再次触发

则按新值计数

3.方式2:速率发生器(分频脉冲发生器)

(见P191,F8-6)

特点:(1)通道可连续工作,输出固定频率的脉冲

(2)GATE变低时停止计数,变高后的下一个CLK重新计数 (3)计数过程可改变计数值不影响计数,计数到后下一次按新值

计数

4.方式3:方波速率发生器

(见P191,F8-7)

特点:(1)若计数值为偶数则OUT输出一半高一半低,若计数值为奇

数则OUT输出高电平比低电平多一个CLK

(2)GATE=1允许计数,GATE=0禁止计数.若计数过程中GATE

变0又变1则重新装入初值计数

(3)计数过程中写入新值要等现行计数的半方波结束之前收到

GATE脉冲才用新值开始计数

5.方式4:软件触发选通

(见P192,F8-8)

特点:(1)GATE必须保持1才能软件触发(GATE为0时禁止计数) 计数过程中GATE为0停止计数,恢复1时重新计数 (2)计数过程中若改变计数值,则按新值重新计数(若写16位,

写第一字节停止计数,写第二字节开始计数)

6.方式5:硬件触发选通

(见P192,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在计数过程中写入新值后立即有效,其他方式须在外部

触发或计数到后才有效

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,72H OUT 43H,AL MOV AL,00H OUT 41H,AL

MOV AL,73H;控制字 OUT 43H,AL

MOV AL,24H;计数值低8位 OUT 41H,AL

MOV AL,04H OUT 41H,AL

MOV AL,10H;计数值高8位 OUT 41H,AL;1#口地址

二进制计数值0400H低8位为0故可只写高8位,控制字为01100010 ·CPU可用IN指令随时读入8253任一通道的计数现行值,因需先低

后高分二次读取,必须锁存计数以免计数值不断变化,可用GATE信号暂停计数或CPU送一个通道控制字(D5D4=00),后者不影响计数器计数,而只锁存当前值,CPU二次读取后锁存自动解除 例:读通道1的计数值

MOV AL,40H;01000000锁存1# OUT 43H,AL

IN AL,41H ;读低8位 MOV DL,AL

IN 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×65536≈55ms(BCD计数840ns×10000≈8.4ms) Tmin=840ns×1=840ns 五.IBM PC/XT中的定时器/计数器使用 IBM 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=H,N=12H)

·2#通道为方式3,用于产生6HZ的方波输出,OUT2经与门并滤

掉高频分量后送扬声器发声,用8255-5的PB1、PB0来控制与门和GATE2以控制发声时间,PB1、PB0同时为高的时间长短即发音长短,长3秒,短0.5秒(CW=B6H,N=533H) ROM—BIOS对8253-5的编程如下:

;计数器0用于定时(约55ms)中断

MOV AL,00110110B;0#,方式3,写16位,二进制计数 OUT 43H,AL

MOV AL,0 ;计数值65536(840ns×65536≈55ms) OUT 40H,AL ;写入低字节

OUT 40H,AL ;写入高字节 ;计数器1用于定时(约15s)DMA请求 (2ms内可刷新132行多于全部128行)

MOV AL,01010100B;1#,方式2,只写低字节,二进制计数 OUT 43H,AL

MOV AL,12H ;计数值18(840ns×18≈15s) OUT 41H,AL

;计数器2用于产生6KHZ的方波送至扬声器发声, 声响子程序为BEEP,入口地址为FFA08H

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 61H,AL ;输出使扬声器发声 SUB CX,CX ;CX为65536作延时用 DEC BL ;BL为发声长短的入口条件

JNZ G7 ;BL=6长声(3秒),BL=1短声(0.5秒) MOV AL,AH ;取回AH中的8255B口输出值 OUT 61H,AL ;恢复8255B口,停止发声 RET ;返回 按任意键时发声停止

BEEP PROC NEAR

G7: LOOP G7 ;循环延时

例:在PC机上用8253计数器2产生600HZ方波使扬声器发声,当

STACK SEGMENT STACK

DB 256 DUP(0) SEGMENT

DW 1983 ;1.19MHZ/600HZ=1983 ENDS SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK PUSH DS MOV AX,0 PUSH AX MOV AX,DATA

STACK ENDS DATA FRED DATA CODE

START PROC FAR

MOV DS,AX

IN AL,61H ;读PB口状态 OR AL,03H ;使PB1、PB0均为1

OUT 61H,AL ;写新PB口值,以使扬声器发声 MOV AL,0B6H;2#,方式3,写16位,二进制计数 OUT 43H,AL

MOV BX,FRED;分频计数值 MOV AL,BL ;先写低字节 OUT 42H,AL

MOV AL,BH ;再写高字节 OUT 42H,AL ;输出600HZ方波 MOV AH,0 ;调用BIOS的读键盘程序 INT 16H ;等待敲入键 IN AL,61H ;读PB口状态 AND AL,0FCH;使PB1、PB0均为0 OUT 61H,AL ;扬声器停止工作 RET ;结束返回DOS ENDS END START

START ENDP CODE

§7.4 并行通信(parallel communication) Intel 8255A可编程并行输入输出接口 40脚双列直插式,NMOS工艺,单一+5V 一.8255A的结构与功能

(见P213,F9-1)

1.三个8位数据端口A、B、C,C口又可分为二个4位端口即上C口

和下C口

A口带数据输出锁存和缓冲器、数据输入锁存器 B口带数据输入/输出的锁存/缓冲器、数据输入缓冲器 C口带数据输出锁存/缓冲器、数据输入缓冲器(输入无锁存) B、C口的驱动能力可达4mA(达林顿级) 2.A组和B组控制电路

用以接收CPU的命令字决定两组的工作方式或对C口按位复位/置

3.数据总线缓冲器

三态8位缓冲器,用以和系统数据总线直接连接,实现CPU与8255A

信息传送 4.读/写控制逻辑

管理所有数据、控制字、状态字传送 端口选择及控制:(见P214,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 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)方式2:(应答式)选通双向输入输出工作方式 ·A、B、C口都可工作于方式0

A、B口可工作于方式1,此时C口作控制位或状态位

方式2只有A口可选用,此时B口可工作于方式0、1,C控制位或状态位

1.工作方式控制字

用于选择A、B、上C、下C口的工作方式,8位,最高位1为特征位

格式:(见P215,F9-2) D7 D6 D5 D4 D3 D2 D1 D0 特征位 方式选择 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输入 上C口为方式0输入,下C口此时为B口的联络线 其控制字为:8EH,即

1 0 0 0 1 1 1 0 方式0 A出 上C入 方式1 B入 下C出

2.置位/复位控制字

8位,最高位0为特征位,用于对C口的任一位置位或复位 一个控制字只能设置一位 格式:(见P216,F9-3) D7 D6 D5 D4 D3 D2 D1 D0 特征位 (无用,置000) 位选择 置位/复位 0 无关 000 0 1置位 001 1 0复位 010 2 011 3 100 4 101 5 110 6 111 7 例:使PC7为1的控制字为00001111B(0FH)

·工作方式和置位/复位控制字共用一个控制字寄存器端口地址而用特征位区分

三.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输入(见P218,F9-5)

① STB:选通输入,低有效时数据由外部送入输入锁存器

② IBF:输入缓冲器满,高有效时表示输入锁存器满,它由STB置位,RD上升沿复位

③ INTR:中断请求,高有效时8255A向CPU请求中断,A口用PC3,B口用PC0

它是当STB、IBF、INTE为高时有效的(被置高) ④ INTE A:A口中断允许,由用户对PC4置位/复位来控制 INTE B:B口中断允许,由用户对PC2置位/复位来控制 <2>方式1输出(见P217,F9-4)

① OBF:输出缓冲器满,低有效时表示CPU已把数据输出到端口 OBF由WR的上升沿置有效,由ACK有效使其恢复为高 ② ACK:外设响应信号,低有效时表示已接收CPU输出的数据 ③ INTR:中断请求,高有效时表示外设已接收数据,请求再输出数据 当ACK、OBF、INTE为高时INTR置位(=1),WR的后沿使其复位(=0)

④ INTE A:A口中断允许,由用户对PC6置位/复位来控制 INTE B:B口中断允许,由用户对PC2置位/复位来控制

3.方式2(见P219,F9-6)

选通双向输入输出方式,可工作于查询或中断方式 方式2只有A口可用

① INTR:中断请求,高电平有效,输入或输出都可向CPU请求中断 ② OBF:输出缓冲器满,低有效时表示CPU已把数据送到端口A ③ ACK:响应信号,低有效启动A口三态输出缓冲器送出数据(否则缓冲器三态)

ACK上升沿作为数据已输出的回答信号

④ INTE1:与输出缓冲器相关的中断允许,对应PC6,1允许、0屏蔽 ⑤ STB:选通输入,低有效时外设把数据输入到端口输入锁存器 ⑥ IBF:输入缓冲器满,高有效时表示数据已进入输入锁存器 ⑦ INTE2:与输入缓冲器相关的中断允许,对应PC4,1允许、0屏蔽

·当A口工作于方式2时,B口可工作在方式0、方式1,此时C口各位的功能为: D7 D6 D5 D4 D3 D2 D1 D0 I/O I/O I/O 方式0 OBFA INTE1 IBFA INTE2 INTRA INTEB IBFB INTRB 方式1输入 (ACKA) (STBA) (STBB) INTEB OBFB INTRB 方式1输出 (ACKB) A组状态 B组状态

(方式控制字设置完后)它形成一个方式状态字,CPU可用读C口得到

·例:设A口为双向中断传送,B口为方式1输入,则方式控制字为 1 1    1 1  —— 11000110B=C6H

A 方 式 2

B

B 方 输 式 入 1

A口方式2输入中断允许,则PC4=1,C口置位/复位控制字为00001001B=09H

A口方式2输出中断允许,则PC6=1,C口置位/复位控制字为00001101B=0DH

·注意:一个按位置位/复位控制字只能对C口的某一位设置 ·CPU响应中断,则在中断服务子程序中首先从C口读状态字,判别

IBF或OBF是否有效以决定输入或输出

·如果A口或B口工作于选通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: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为1 SW-8 SW-7 SW-6 SW-5 SW-4 SW-3 SW-2 SW-1 软盘驱动器数 显示器 系统板上RAM

00——1个 01—4025彩色 01——128KB 0—常规 0—正常工作 01——2个 10—8025彩色 10——192KB 1—循环自检 10——3个 11—单色或多个 11——256KB

11——4个 显示器 00——0KB 1—有8087

以下是ROM-BIOS初始化部分的读系统开关的一段8255A-5初始化编程,读DIP开关程序段

MOV AL,10001001B OUT 63H,AL OUT 61H,AL

IN AL,62H AND AL,0FH

MOV AL,10100101B

;方式0,A口、B口输出,C口输入 ;

;PB3为低以读取DIP低4位 ;送到B口 ;先做其他测试 ;读C口 ;截取低4位

MOV AH,AL OUT 61H,AL NOP

;存于AH中

MOV AL,10101101B ;使PB3为高电平,其他位不变

;等待数据输入稳定 ;再读C口 ;设置循环计数为4 ;取高4位 ;高4位低4位合并 ;AX的高字节清0

IN AL,62H MOV CL,4 ROL AL,CL

AND AL,0F0H OR AL,AH SUB AH,AH

MOV DATA_WORD[OFFSET EQUIP-FLAG],AX;存入设备标志单MOV AL,10011001B OUT 63H,AL

;重设8255A方式0,A口、B口、C口

元(2字节) 输入

至此得8位DIP配置状态,系统进入正常工作

例1.CPU通过8255A的PA0输出500HZ的矩形波 即在PA0交替输出“0”、“1”电平,各保持1ms 设8255A端口地址为60H~63H

START:MOV AL,80H;

OUT 63H,AL XOR AL,AL CALL D1MS NOT AL JMP REPT

REPT: OUT 60H,AL

D1MS: MOV CX,280 WAIT: LOOP WAIT

RET

例2.8255通过PC/XT62芯总线与系统连接,其地址为218H~21BH,

现用C口连接8个发光二极管,若C口输出低电平灯亮,高电平灯灭.请用软件定时,使一个灯亮,每隔0.5秒从低位向高位循环移动一次,若有键按下则停止运行.

CODE

SEGMENT

ASSUME CS:CODE,DS:CODE,SS:CODE MOV DS,AX MOV SS,AX MOV AX,0100H MOV SP,AX MOV DX,21BH OUT DX,AL MOV DX,21AH MOV BH,0FEH OUT DX,AL CALL D500MS ROL BH,1 MOV AH,0BH INT 21H AND AL,AL JZ CONT MOV AX,4C00H INT 21H

;延时0.5秒子程序

MOV BL,50

;无键按下AL=0,有键按下AL=0FFH

;延时0.5秒 ;左移1位 ;调用读键中断 ;C口地址 ;8255控制口地址

MOV AL,10000000B ;C口输出

START: MOV AX,CODE

CONT: MOV AL,BH

D500MS PROC NEAR DLY: MOV CX,2801 WAIT1: LOOP WAIT1

DEC BL JNZ DLY RET

D500MS ENDP

CODE

ENDS END START

例3.系统用I/O通道通过8255A把内存DTAB单元开始的一组字节

型数据从A口输出打印(用中断方式)

设8255A的A口为方式1输出,A口地址为218H,控制寄存器地址为21BH

方式控制字:10100000=A0H

(01——方式1,0——A口输出) 置位/复位控制字:00001101=0DH (110——PC6 ,1——置1)

DATA DTAB

SEGMENT

DB 11H,56H,88H,96H,33H„„

COUNT EQU $-DTAB OCW1 DB ? DATA

ENDS

DW 20 DUP(?) SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK MOV DS,AX

MOV DX,OFFSET INTPROC MOV AX,250AH INT 21H

MOV AX,DATA MOV DS,AX MOV DX,21BH MOV AL,10100000B OUT DX,AL

MOV AL,00001101B ;PC6置1使INTEA=1允许A口中断

;设中断向量

;(AL=n,DS:DX=入口地址)

STACK SEGMENT STACK STACK ENDS CODE

START:MOV AX,CS

OUT DX,AL CLI

IN AL,21H MOV OCW1,AL AND AL,0FBH OUT 21H,AL STI

MOV CX,COUNT-1 MOV BX,OFFSET DTAB MOV DX,218H MOV AL,[BX] OUT DX,AL

LOOP WAIT1 CLI

MOV AL,OCW1 OUT 21H,AL STI

MOV AX,4C00H INT 21H

;中断服务子程序

MOV AL,[BX] OUT DX,AL MOV AL,20H OUT 20H,AL STI IRET ENDS END START

;OCW2的D5=1中断结束信号 ;发到ISR(中断服务寄存器)

;恢复IMR原状态 ;送屏蔽寄存器端口

;送出第一个字符 ;等待中断 ;开放IRQ2中断

;读IMR状态(中断屏蔽寄存器)

WAIT1:JMP WAIT1

INTPROC:INC BX

CODE

·8259的中断屏蔽寄存器某位为“0”该级中断开放,“1”屏蔽 ·中断处理结束后应向中断服务寄存器ISR发中断服务结束信号

(OCW2的D5=1)以取消该级正在服务标志

§7.5 串行通信(serial communication)

数据逐位顺序传送,通信线路简单,成本低,特别适用于远距离

传送

常用的可编程串行I/O接口芯片有Z80SIO、INS8250、Intel8251

1.异步通信方式(传送时不必和数据一起发送同步时钟脉冲) 异步通信中,CPU与外设之间有两项规定,即字符格式和波特率 ① 字符格式:字符的编码形式和规定,如

ASCII码规定:每个串行字符由四个部分组成

1个起始位,5~8个数据位,1个奇偶校验位,1~2个停止位

小于最高数据传输率(见P223,F9-11)

最高数据传输率 起始位至停止位构成一帧,传送一个字符 相邻两字符间的位为空闲位,可任意长 起始位的下降沿使接收设备中的时钟同步复位 ② 波特率:每秒传输代码(字符)的位数,单位:波特 1波特=1位/秒

设数据传送速率为120字符/秒,每个字符10位,则传送的波特

率为

10120=1200波特

每位传送的时间Td为波特率的倒数,即位时间 Td10.833ms 1200 ·注意:波特率与有效数据位传送速率有所区别,如上例每个字符10

位,7个有效数据位,因此有效数据位传送率为

7120=840位/秒 而波特率为1200波特

异步通信的传送速率早先在50~9600波特,现已达56千波特

2.同步通信方式

传送时不必加起始位和停止位,而是把数据成块传送

在数据块开始处用一或两个8位的同步字符来指明,同步字符由用

户设定

接收器接收数据时首先搜索同步字符,找到后才开始装配数据

在同步传送中,要求接收器时钟和发送器时钟严格同步,因此电路

比较复杂

同步传送速率高于异步传送速率,可在56千波特以上

二.串行通信中的基本技术 1.数据传送方向 单工通信

A站发,B站收 AB 半双工通信

A站B站轮流收发,即A发B收,B发A收 A 全双工通信

A站和B站可同时收发 AB

2.信号的调制和解调

数字通信需要有很宽的频带,一般用作远程通信的电话线频带较窄,数字信号经传输后会产生畸变

在发送端用调制器(Modulator)把数字信号转换为模拟信号 在接收端用解调器(Demodulator)把模拟信号转换为数字信号 调制时可用两个不同频率的低频信号表示“0”和“1”

B

三.异步接收器/发送器

异步接收器/发送器由三部分组成,即接受器、发送器和控制部件

·接收器接收串行数据经过一个移位寄存器(8位)变为并行数据经缓冲器后到并行数据总线供CPU读取

·发送器则把CPU送来的数据经8位的发送数据寄存器和一个20位的发送移位寄存器后输出串行数据

·收/发器工作时,接收部分自动检查每个字符的停止位(“1”)以便同步,若停止位为0,则发出错误信息供CPU处理(接收子程序中处理) ·收/发器用外部时钟来和接收的数据同步,外部时钟周期Tc 每位数据占用时间Td,有

Td = K Tc (K = 16 或 ,波特率系数) 即每个数据位时间Td为外部时钟周期的16或倍 设K = 16

收发器在空闲位之后在外部时钟的每个上升沿采样接收数据,采样9个“0”后,每16个Tc读一次数据值,这样保证读取的时刻正好在数据位的中间位置,避开了信号上升沿下降沿位置而得正确信号 ·通信时应约定字符格式和波特率

INS8250 UART就是可编程通用异步收发器 (Universal Asynchronous Receiver/Transmitter)

四.Intel 8251可编程串行输入输出接口

USART(Universal Synchronous/Asynchronous Receiver/Transmitter) 同步、异步全双工收/发 结构:(P226,F9-12)

1.数据总线缓冲器:CUP写入控制命令和待发送字符,读出状态

信息和接收的数据

2.接收器:接收RxD脚上的串行数据转换为并行数据存于接收缓

冲器中

3.发送器:由发送缓冲器和并—串移位寄存器组成,将来自CPU

的并行数据变为串行数据经TxD脚发送出去

4.读写控制逻辑:(见P227,T9-2) CS 0 0 0 0 1 C/D 0 1 0 1 × RD 0 0 1 1 × WR 1 1 0 0 × 操作 CPU读8251数据 CPU读8251状态 CPU写数据到8251 CPU写命令到8251 无操作 C/D=1对控制寄存器操作,C/D=0对数据寄存器操作 5.调制解制:远程通信时需要调制解调器,该控制电路用以和

调制解调器作应答,近程时直接与外设联络

引脚:28脚,双列 接系统总线一侧 1.D7~0,三态双向

2.CLK,产生8251的内部时序,周期在0.42µs ~1.35µs CLK的频率在同步方式时大于RxC、TxC的30倍 在异步方式时大于RxC、TxC的4.5倍 3.CS,片选

4.C/D,控制/数据端口选择,通常与地址总线A0连接 5.TxRDY(Transmitter Ready),发送准备好

当发送缓冲器空、CTS=0、TxEN=1(OCW的D0),TxRDY=1 6.TxE(Transmitter Empty),发送器空

7.RxRDY(Receiver Ready),接收器准备好,CPU可读数据 8.SYNDET(Synchronous detect),同步检测 高有效时,检测到同步字符

接外设一侧

1.DTR(Data Terminal Ready),数据终端准备好,低有效 由命令字D1=1有效,表示CPU准备就绪 2.DSR(Data Set Ready),数据装置准备好,低有效 表示调制器或外设准备好,准备好时状态字D7=1 DTR和DSR是接收器的一对应答信号,外设为发送方 3.RTS(Request To Send),请求传送,低有效

用于通知调制器CPU准备好发送,可由命令字D5=1使其有效 4.CTS(Clear To Send),准许传送,低有效 有效时,发送器发送数据

RTS和CTS是发送器的一对应答信号,外设为接收方 5.RxC(Receiver Clock),接收器时钟

同步时等于波特率,异步时是波特率的1、16、倍 6.RxD(Receiver Data),接收器数据 7.TxC(Transmitter Clock),发送器时钟

同步时等于波特率,异步时是波特率的1、16、倍 8.TxD(Transmitter Data),发送器数据 另有RESET、RD、WR、Vcc、GND共28脚

三个控制字:工作方式、操作命令、状态控制字 1.工作方式控制字(P229,F9-13) 决定8251工作在异步或同步方式

2.操作命令控制字:(P229,F9-14) 控制接收或发送数据

D0:发送允许,1允许发送,0屏蔽发送

D1:数据终端准备好,1置引脚DTR低有效,表示数据终端准备就绪 D2:接收允许,1允许接收,0屏蔽接收

D3:发中止字符,1使引脚TxD低,输出终止字符,0正常工作 D4:错误标志复位,1使状态寄存器PE、OE、FE复位 D5:发送请求,1置引脚RTS低,发送请求有效 D6:内部复位,1使8251复位以便重置方式字 D7:搜索同步字符,1启动搜索同步字符 3.状态字:(P230,F9-15)

用以读取8251传送数据时所处状态

D5:FE(framing error),帧错误(格式错误),只用于异步方式,当接

收器在一个字符的结尾没有检测到规定的停止位时,FE置1

D4:OE(overrun error),溢出错,CPU没有把字符读走下一个字符又

到,OE置1,上一个字符丢失

D3:PE(parity error),奇偶错,当接收器检测到奇偶错时,PE置1 FE、OE、PE有效都不禁止8251工作,它们由命令字的ER复位 D7、D6、D2、D1同引脚定义

D0:发送准备好,与引脚定义不同,只要数据缓冲器一空就置位,而引

脚TxRDY置位条件是:数据缓冲器空、CTS、TxEN同时有效

8251的初始化:

三个控制字没有特征位,方式和命令控制字合一端口,必须按顺序

写入

方式控制字必须跟在复位命令之后,

硬件方法是RESET有效,软件方法是对控制口送三个0再送一

个40H,这是8251的编程约定

流程:(P231,F9-16)

例:8251以查询方式接收数据,异步传送,K=,偶校验,1停止位,

7数据位

设8251数据口地址为208H(C/D=0),控制口地址为209H 工作方式控制字:01111011B=7BH 01 11 10 11 1停止位 偶校验 7数据位 异步K=

操作命令控制字:00010110B=16H

0 0 0 1 0 1 1 0 不搜索 不 不 清除 正常 允许 数据 不允许 同步 复位 发送 错误 工作 接收 终端 发送 字符 标志 准备好

例:8251以查询方式发送数据,异步传送,K=,偶校验,1停止位,

7数据位

设8251数据口地址为208H,控制口地址为209H 工作方式控制字:01111011B=7BH 01 11 10 11 1停止位 偶校验 7数据位 异步K= 操作命令控制字:00110001B=31H

0 0 1 1 0 0 0 1 不搜索 不 请求 清除 正常 不允许 数据 允许 同步 复位 发送 错误 工作 接收 终端未 发送 字符 标志 准备好

五.RS-232C

MOV DX,209H MOV AL,7BH OUT DX,AL MOV AL,31H OUT DX,AL

AND AL,1 ;检查TxRDY(D0=1发送器准备好) JZ WAIT1 MOV DX,208H

MOV AL,DATA;取待发送数据 OUT DX,AL ┇

MOV DX,209H MOV AL,7BH OUT DX,AL MOV AL,16H OUT DX,AL

AND AL,2 ;检查RxRDY(D1=1接收器准备好) JZ WAIT1 MOV DX,208H IN AL,DX ┇

WAIT1:IN AL,DX;读状态字

WAIT1:IN AL,DX;读状态字

串行通信接口的一种标准(由美国电子工程学会推荐,也叫EIA标准),有25条引线的D型连接器(见P255,F10-8,F10-9)

它的常用引脚有9个 9脚连接器 3 2 7 8 6 5 1 4 9 25脚连接器 2 3 4 5 6 7 8 20 22 含义 TXD发送数据 RXD接收数据 RTS请求传送 CTS允许传送 DSR数据装置就绪 GND信号地 DCD数据载波检测 DTR数据终端就绪 RI响铃指示 方向 出 入 出 入 入 入 出 入 基本的数据传送引脚有TXD、RXD和GND三个,在近距离两台微机串行通信,可采用无MODEM连接,即将两机的TXD、RXD交叉相连,GND与GND相连

(见P257,F10-12)

RS-232规定+3V~+15V表示“0”电平,-3V~ -15V表示“1”电平 RS-232发送器1488用来把TTL电平转换为±10V RS-232接收器14用来把±10V转换为TTL电平

(见P258,F10-13)

远距离通信须经MODEM,例如8251与MODEM连接

CD为MODEM的载波检测信号

MODEM的TxD和RxD为EIA电平,须经RS-232发送器接收器

做TTL与EIA变换

§7.6 人机接口(human-computer interface) (P291)

本章要点: 1.I/O方式

无条件、有条件I/O方式,中断方式,DMA方式 2.接口、端口、编址方式 3.定时与计数8253

工作方式,定时量计算,初始化,应用编程 4.并行接口8255

工作方式,初始化,应用编程 5.串行通信

基本方式,基本技术,字符格式,波特率 异步通信的约定,调制解调,8251

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务