Download presentation
Presentation is loading. Please wait.
1
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器8253 9.3 可编程串行输入/输出接口芯片8251A
第九章 可编程接口芯片及其与CPU的接口 9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器8253 9.3 可编程串行输入/输出接口芯片8251A
2
9.1 可编程并行输入/输出接口芯片8255A A的内部结构
3
A的引脚分配 一、与外设联系的引脚 A口有PA0~PA7 8个引脚,同样B口和C口均有PB0~PB7,PC0~PC7 8个引脚。 二、与CPU联系的引脚 数据和命令通道线D0~D7,读/写控制引脚RD、WR、CS、A0,A1,RESET。 三、端口地址控制引脚 CS A1 A 端口 A口地址 B口地址 C口地址 控制端口地址
4
9.1.3 8255A的工作方式及编程 一、8255A的工作方式 1、方式0(基本输入/输出方式) 2、方式1(选通输入/输出方式)
3、方式2(双向传送方式) 各端口可工作的方式: A口:方式0、方式1、方式2 B口:方式0、方式1 C口:方式0
5
二、8255A的控制字 1、方式控制字 D B 组 C口低半字节 : 1- 输入 , 0- 输出 口: 1- ,0- 方式选择: 0- 方式
7 6 5 4 3 2 1 B 组 C口低半字节 : 1- 输入 , 0- 输出 口: 1- ,0- 方式选择: 0- 方式 0,1- A组 C 口高半字节 :1- A 方式控制字标志: 1- 有效 00- 方式0 01- 方式1 1X- 方式2
6
2、C口置“1”/清“0”控制字 D 位控 : 1- 置 1,0- 清0 状 态 选中位 0 0 0 0 0 1 0 1 0 0 1 1
7 6 5 4 3 2 1 位控 : 1- 置 1,0- 清0 状 态 选中位 PC 位控字标志 : 0- 有效 无效
7
9.1.4 8255A各工作方式的功能及应用 一、8255A工作在方式0 特点:
8255A工作在方式0时,各个端口(包括2个8位端口A、B及2个4位端口C)的输入、输出可以有16种不同的组合。在这种方式下,任一个端口都由CPU用简单的输入/输出指令进行读/写。不用提供“联络”信号,适用于各种同步传送情况。 另外,方式0也可用于程序查询方式来进行数据传送。此时,通常以A口和B口作为数据口,而用C口的某些位作为输入输出“联络”信号。注意,输入“联络”信号和输出“联络”信号不在同一4位C口中。
8
方式0应用举例1(同步情况): 例 A的A口和B口工作在方式0,A口为输入端口,接有4个开关;B口为输出端口,接有1个7段发光二极管,其硬件连接电路如图所示。试编一程序要求7段发光二极管显示开关所拨通的数字。
9
分析: 1、端口地址 A口:8020H C口:8024H B口:8022H 控制口:8026H 2、字符代码对照表 显示字符 段代码 显示字符 段代码 FH FH H FH BH A H FH b CH H c H DH d EH DH E H H F H
10
程序: APORT EQU 8020H BPORT EQU 8022H CONTR EQU 8026H DATA SEGMENT
TAB1 DB 3FH,06H,5BH,4FH, …… DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS, AX MOV AL,90H ;定义8255A工作方式 MOV DX,CONTR OUT DX,AL
11
ADDR1: MOV DX,APORT ;取开关值
IN AL,DX AND AL,0FH ;屏蔽高4位 MOV BX,OFFSET TAB1 ;取代码表首址 XLAT ;找到字符代码 MOV DX,BPORT ;输出显示 OUT DX,AL MOV CX,0400H ;显示延时 ADDR2:DEC CX JNZ ADDR JMP ADDR MOV AH,4CH INT 21H CODE ENDS END START
12
方式0应用举例2(异步查询情况): 例2 如图所示,假设8255A端口A,B,C及控制口的地址分别为80H,81H,82H和83H;打印机的选通信号为STB,纸带读入机的驱动信号为DRV,编写接口程序。
13
程序片段: MOV AL, 83 H ;8255A初始化 OUT 83H, AL ;打印机驱动程序 PST: IN AL, 82H TEST AL, 04H JNZ PST MOV AL, BL ;若打印数据在BL中 OUT 80H, AL MOV AL, 0DH OUT 83H, AL ;选通打印机 DEC AL OUT 83H, AL ;断开打印机
14
;输入机驱动程序 MOV AL, 09H OUT 83H, AL ;启动输入机 PRT: IN AL, 82H TEST AL, 01H JZ PRT ;未准备好,循环 IN AL, 81H ;准备好,读入数据 MOV BL, AL MOV AL, 08H OUT 83H, AL ;断开输入机
15
方式0应用举例3(异步查询情况): 例3 利用8255A实现打印机接口,打印BL中的数据。
打印机工作时序如左图所示。数据接口将数据传送到打印机的数据端口,利用一个负脉冲STROBE打入锁存。这时打印机可发回答信号ACK,然后由打印机处理。同时打印机送出高电平信号BUSY,表示打印机忙于打印。一旦BUSY变为低电平,表示打印结束,即可接收下一数据。 请利用8255A工作方式0实现上述打印控制。硬件连接如右图.
16
根据连线分析得知4个端口地址依次为:80H,84H,88H,8CH
程序如下: MOV AL, B OUT 8CH, AL ;8255A初始化 WAIT:IN AL,88H ;读BUSY TEST AL,01H JNZ WAIT ;BUSY=1等待 MOV AL,BL OUT 80H,AL ;数据输出 MOV AL, B OUT 8CH,AL ;PC7置低电平 MOV AL, B OUT 8CH,AL ;PC7恢复高电平
17
二、8255A工作在方式1 特点: 8255A工作在方式1时,数据输入/输出操作要在选通信号控制下完成。A口和B口可作为输入或输出口,而C口的某些位作为“联络”信息。和方式0相比,最重要的差别在于C口的这些位与联络信号有着固定的一一对应关系。A口的联络信息由C口的PC3 ~ PC7提供,B口的联络信息由C口的PC0~ PC3提供。另外,8255A在方式1下具有中断能力,可以发出中断请求信号,为CPU工作在中断方式提供了条件。 由于输入接口和输出接口所需的选通控制不同,下面分别予以介绍。
18
1、选通输入方式 (1)选通输入方式C口“联络”信号定义图
19
(2)方式1输入时“联络”信号时序图
20
2、选通输出方式 (1)选通输出方式C口“联络”信号定义图
21
(2)方式1输出时“联络”信号时序图
22
方式1应用举例1(异步查询情况): 例1 在某一系统中接有一个μ80微型打印机,8255A作为输出接口,工作在选通方式,试编一程序将缓冲区BUFF内的400H个字节的ASCII码送打印机打印,其接口硬件电路如图所示。
23
8255A作为打印机接口电路源程序如下: APORT EQU 0FFF8H CPORT EQU 0FFFCH CONTR EQU 0FFFEH DATA SEGMENT BUFF DB 400H DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX,400H ;字节长度 MOV AL, 0A8H ;8255A控制字 MOV DX, CONTR OUT DX,AL
24
MOV DI, OFFSET BUFF ABC1: MOV AL,[DI] ;ASCII码输出 MOV DX,APORT OUT DX,AL MOV DX,CPORT ABC2: IN AL,DX ;查OBFA信号 AND AL,80H ;OBFA变高了吗? JZ ABC ;否;再查 ABC3: IN AL,DX ;查BUSY信号 AND AL,10H ;BUSY变低吗? JNZ ABC ;否,再查 INC DI ;是,传送下一个数 LOOP ABC1 MOV AH,4CH ;返回操作系统 INT 21H CODE ENDS END START
25
方式1应用举例2(中断情况): 例2 利用8255工作方式1实现打印控制。8255A工作在方式1时,PC7作为OBFA输出端,PC6作为ACKA输入端,PC3作为INTRA输出端,其硬件连接如图所示。设中断类型码为0BH,中断服务程序首地址为PRINTER。
26
程序片段设计如下: MOV AL,10100000B OUT 8CH,AL ;初始化 MOV AL,00001101B
OUT 8CH,AL ;INTEA置1 MOV AH,25H ;设置DOS调用功能号 MOV AL,0BH ;设置类型码 LEA DX,PRINTER ;设置中断服务程序偏移地址 MOV BX,SEG PRINTER ;设置中断服务程序段地址 MOV DS,BX INT 21H ;DOS功能调用,设置中断向量 STI ;开中断 …… PRINTER PROC FAR ;中断服务程序 MOV AL,BL OUT 80H,AL ;输出打印 IRET PRINTER ENDP
27
8255A只有A口可工作在方式2,此时B口可工作在方式0或者方式1。
特点: 8255A只有A口可工作在方式2,此时B口可工作在方式0或者方式1。 8255A工作在方式2,CPU通过它与外设交换数据可采用无条件传送方式,查询传送方式或中断传送方式。A口设置为方式2,也就是说从A口既可以输入数据,也可以输出数据,但某时某刻只能是输入或输出。实际上是A口方式1输入和输出的组合形式。
28
方式2下C口“联络”信号定义图
29
9.2 可编程计数器/定时器8253 的内部结构及功能 一、内部结构及引脚
30
端口地址分配: CS A1 A 端口地址 #计数器地址 #计数器地址 #计数器地址 控制字寄存器地址 计数器的内部结构 二、功能 计数器方式 定时器方式
31
9.2.2 8253的编程 设置控制字(写入控制寄存器地址) 初始化 赋计数初值(写入相应计数器地址) 包括
读计数器内容 (从相应计数器地址读出)
32
一、控制字格式 1 BCD 计数 D SC RL M 二进制计数 工作方式选择 000 方式 001 10 11 100 101
7 6 5 4 3 2 SC RL M 二进制计数 工作方式选择 000 方式 001 10 11 100 101 计数长度选择 00 将计数器中的数据锁存于输出锁存器 01 选择计数器低8位读或写,高8位自动为0 选择计数器高8位读或写,低8位自动为0 选择先低后高两个字节读或写 计数器选择 计数器0 计数器1 计数器2 非法
33
二、对计数器赋计数初值 控制字写完后,接着赋计数初值。计数初值写入计数器的格式必须按照控制字的RL1、RL0的读写指示来写。 另外,当D0=0时,即选择二进制计数,计数初值可在0 ~ FFFFH之间选择。当D0=1时,即选择BCD码计数,计数初值可在0 ~ 9999之间选择。 若想扩大计数范围,可以将两个或三个计数器级连使用。即将一计数器的OUT信号与另一计数器的CLK信号相连接。 三、读计数器的内容 8253的读操作只能读计数器的值,而不能读控制字。若读16位计数值,则对该计数器读两次,先读低8位,再读高8位。 如果在计数过程中读计数器内容,则需发锁存命令。计数器的锁存命令是用一个字节的最高两位D7,D6指定要锁存的计数器;D5,D4必须为00作为锁存命令的标志。而低4位可为全0。它是控制字的一种特殊形式,所以要把此锁存命令写到控制字寄存器中去。可见,3个计数器的锁存命令分别为00H,40H和80H。
34
例1 若要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,试对其进行初始化编程。
四、举例 例1 若要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,试对其进行初始化编程。 MOV AL,50H OUT 73H,AL MOV AL,80H OUT 71H,AL
35
例2 若要使计数器0工作在方式1,按BCD码计数,计数值为3000,试对其进行初始化编程。
MOV AL,23H OUT 73H,AL MOV AL,30H OUT 70H,AL
36
例3 若要使计数器2工作在方式2,按二进制计数,计数值为1110H,试对其进行初始化编程。
MOV AL,0B4H OUT 73H,AL MOV AL,10H OUT 72H,AL MOV AL,11H
37
例4 8253工作方式同上题。要在计数过程中读取该计数器的计数值。试对其进行初始化编程。
例 工作方式同上题。要在计数过程中读取该计数器的计数值。试对其进行初始化编程。 MOV AL,0B4H OUT 73H,AL MOV AL,10H OUT 72H,AL MOV AL,11H MOV BH,20H W:DEC BH JNZ W MOV AL,80H IN AL,72H MOV CL,AL MOV AH,AL MOV AL,CL
38
9.2.3 8253的工作方式 一、方式0 主要特点: * 方式0的OUT输出是一次性负方波。
39
二、方式1 主要特点: * 方式1的OUT输出是一次性负方波。 * 若想再次OUT输出,只须重新启动GATE脉冲。
40
三、方式2 主要特点: * 方式2的OUT输出是周期性的负脉冲。
41
例5 已知计数脉冲CLK频率为2MHZ,要求每10ms产生一次中断,选用2#计数器。8253地址70H ~73H。
分析: 1、 工作方式的选择 2、 计数初值的确定 MOV AL,0B4H OUT 73H,AL MOV AL,20H OUT 72H,AL MOV AL,4EH
42
四、方式3 主要特点: * 方式3的OUT输出是周期性的方波。(若计数值n是偶数,则输出OUT是对称方波;若计数值n是奇数,则输出OUT在(n+1)/2计数期间保持为高电平,而在(n-1)/2计数期间保持为低电平。)
43
五、方式4 主要特点: * 方式4的OUT输出是一次性负脉冲。 * 若想再次OUT输出,须再次写入计数值。故又称软件触发选通方式。
44
六、方式5 主要特点: * 方式5的OUT输出是一次性负脉冲。 * 若想再次OUT输出,只须再次启动GATE脉冲。故又称硬件触发选通方式。
45
8253各方式波形图
46
例6 某8086系统中有一片8253芯片,利用其通道1完成对外部事件计数,计满250次向CPU发出中断申请;利用2通道输出频率为1 kHz的方波,试编写8253的初始化程序,硬件电路如图所示。
47
MOV AL,71H ;通道1控制字 OUT 1EH,AL MOV AL,0A7H ;通道2控制字 MOV AL,50H ;通道1计数值低8位 OUT 1AH,AL MOV AL,02H ;通道1计数值高8位 MOV AL,20H ;通道2计数值高8位 OUT 1CH,AL
48
例7 8253通道2接有一发光二极管,要使发光二极管以点亮
例 通道2接有一发光二极管,要使发光二极管以点亮 2 s,熄灭2 s的间隔工作,8253各通道端口地址分别为FFE9H~FFEFH。其电路硬件图如图。试编程完成以上工作。
49
MOV DX,0FFEFH ;控制字端口地址 MOV AL,65H ;通道1控制字 OUT DX,AL MOV AL,0A7H ;通道2控制字 MOV DX,0FFEBH ;通道1端口地址 MOV AL,40H ;通道1计数值高8位 MOV DX,0FFEDH ;通道2端口地址 MOV AL,10H ;通道2计数值高8位
50
例8 有如下接口原理图。要求发光二极管L0亮5秒后就熄灭;L1在K1启动后亮6秒后就熄灭;L2亮4秒灭4秒交替进行。写出源程序片段。
51
分析:由译码电路分析可知,8253芯片计数器1、计数器2、计数器3及控制端口的地址分别为91H,93H,95H,97H。根据接口图及题目要求,8253的计数器0应该工作在方式0,计数初值N0=5000;计数器1应工作在方式1,N1=6000;计数器2应工作在方式3,N2=8000。 MOV AL,21H ;初始化计数器0 OUT 97H,AL MOV AL,50H OUT 91H,AL MOV AL,63H ;初始化计数器1 MOV AL,60H OUT 93H,AL MOV AL,0A7H ;初始化计数器2 MOV AL,80H OUT 95H,AL
52
9.3.1 串行通讯概述 一、串行通讯方式 异步通讯 同步通讯 1、异步通讯数据格式
9.3 可编程串行输入/输出接口芯片8251A 9.3.1 串行通讯概述 一、串行通讯方式 异步通讯 同步通讯 1、异步通讯数据格式
53
规定: (1)字符格式 2、同步通讯格式 .起始位、停止位的位数 .数据采用的编码 .是否奇偶校验,若要,规定奇校验还是偶校验 (2)波特率
即数据传送速率的规定。单位:位/秒 2、同步通讯格式 (1)面向字符型的数据格式
54
二、串行通讯中的数据传送方向 单工 半双工 完全双工 三、串行输入/输出的实现 软件实现 硬件实现 (2)面向位型的数据格式
单工 半双工 完全双工 三、串行输入/输出的实现 软件实现 硬件实现 出错标志: 奇偶错误 帧错误 溢出错误
55
9.3.2 8251A芯片的特点及内部结构 .既可用于同步传送方式又可用于异步传送方式。 .完全双工传送,既能发送又能接受。
.可检测奇偶出错、帧错误、溢出错误。
56
9.3.3 8251A芯片的引脚分配 一、数据总线 D7~D0 二、控制信号引脚 CLK、CS、C/D、RESET、RD、WR
三、发送器引脚 TXD、TXRDY、TXEMPTY、TXC 四、接受器引脚 RXD、RXRDY、RXC、 SYNDET/BRKDET 五、调制解调接口控制引脚 DTR、DSR、RTS、CTS
57
9.3.4 8251A的编程 方式选择控制字:用来规定8251A的工作方式。 操作命令控制字:用来规定8251A的工作状态。
1、方式选择控制字
58
2、操作命令控制字
59
3、状态字
60
8251A初始化的编程流程:
61
A的应用举例 例1 设8251A为接收状态,双同步工作方式,7位/字符,偶校验。设C/D连CPU的A0,地址为F0H,F1H。试初始化编程。 MOV AL, B OUT 0F1H,AL ;方式选择控制字 MOV AL,16H OUT 0F1H,AL OUT 0F1H,AL ;输出同步字符 MOV AL, B OUT 0F1H,AL ;操作命令控制字
62
例2 设8251A为异步工作方式,波特率系数为16,7位/字符,奇校验,两位停止位。CPU从8251A输入80个字符。试编程。
MOV AL, B OUT 0F1H,AL MOV AL, B MOV DI,OFFSET BUF1 MOV CX,80 WAIT: IN AL,0F1H TEST AL,02H ;读RXRDY状态 JZ WAIT MOV [DI],AL INC DI IN AL,0F1H TEST AL, B ;测错误标志 JNZ ERROR LOOP WAIT … ERROR: …
Similar presentations