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