资源预览内容
第1页 / 共92页
第2页 / 共92页
第3页 / 共92页
第4页 / 共92页
第5页 / 共92页
第6页 / 共92页
第7页 / 共92页
第8页 / 共92页
第9页 / 共92页
第10页 / 共92页
亲,该文档总共92页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第5章 可编程接口芯片,5.1 可编程并行接口8255A 5.2 可编程定时器/计数器8254 5.3 串行通信的基本概念 5.4 可编程串行通信接口16550 5.5 可编程串行通信接口8251A,2,5.1 可编程并行接口8255A,5.1.1 8255A的内部结构与外部引脚,3,三个数据端口A、B、C 三个8位的输入输出端口,可用指令将它们分别设置成输入或输出端口。 2. A组控制、B组控制 8255A将端口A、B、C分为两组:端口A和端口C的高4位构成A组,端口B和端口C的低4位构成B组。 3. 数据总线缓冲器 双向三态的8位缓冲器,与系统数据总线连接,是8255A与CPU之间信息传输的必经之路。 4. 读/写控制逻辑 管理8255A的数据传输过程。,4,图5-2,5. 8255A的引脚,5,8255的引脚信号: (1). 与CPU连接的信号线 D7D0:8255A的双向三态数据线。 A1、A0: 端口地址选择信号。 CS#:片选信号。 RD#:读信号,低电平有效。 WR#:写信号,低电平有效。 RESET:复位信号。 VCC、GND:电源和地线。,6,(2). 与外部设备相连的信号线 PA7PA0:A口与外部设备连接的数据线。 PB7PB0:B口与外部设备连接的数据线。 PC7PC0:C口输入输出数据线。,7,5.1.2 8255A的控制字 1. 方式选择控制字 8255A有三种基本工作方式: 方式0:基本的输入/输出方式。 方式1:选通输入/输出方式。 方式2:双向传输方式。 8255A各数据端口的工作方式由方式选择控制字进行设置。,8,图5-3,8255A方式选择控制字,9,D7位是方式选择控制字的标志位,它必须是1; D6D5位用于选择A口的工作方式; D4、D3用于选择A口、C口高四位输入输出功能设置。 D2位用于选择B口的工作方式。 端口A可工作在3种工作方式中的任何一种,端口B只能工作在方式0或方式1,端口C则常常配合端口A和端口B工作。 只有端口A可工作在方式2。,10,2. 端口C按位置位/复位控制字 端口C有一种特殊的控制方式,可以将端口C的某一位置1或清0,而不影响端口C的其他位的状态。,11,5.1.3 8255A的工作方式 1方式0 基本输入/输出方式 (1)方式0的工作特点: A口和B口作为两个8位端口 C口的高4位和低4位可以用作两个4位端口 (2)方式0的使用场合: 无条件传送 查询式传送,12,2方式1 选通输入/输出方式 (1)方式1工作特点 带有选通的输入/输出方式。 端口A、端口B和端口C被分为两个组。 端口A和端口B用作8位数据的输入/输出,端口C的一些引脚被规定为端口A、B的联络信号。,13,(2)方式1联络信号 IBFA、IBFB:输入缓冲区满信号,高电平有效。 STBa#、STBb#:选通信号输入,负脉冲。 OBFA # 、OBFB # :输出缓冲区满信号,低电平有效。 ACKA # 、ACKB # :外设接收到输出数据后给8255A的应答信号,下降沿/负脉冲有效。 INTEA和INTEB:端口A和端口B的中断允许信号。 INTR:中断请求信号,8255A输出给CPU。 (3)方式1的使用 查询方式 中断方式,14,8255A芯片方式1的联络信号,15,3方式2 双向输入/输出方式 (1)方式2工作特点 方式2只适用于端口A,是双向的输入/输出传输方式。 方式2下各信号含义见表5-3,其中: INTE1:输出中断允许信号。 INTE2:输入中断允许信号。 (2)方式2的使用场合,16,8255芯片方式2的联络信号,17,5.1.4 8255A的应用,1. 8255A与CPU的连接 数据线和控制线一般直接和系统总线的相应信号相连 片选信号和地址译码器的输出相连 三个端口的数据线和外设的数据线直接相连 8255A的端口选择信号A1和A0,8088CPU与8086CPU在连接上有所不同,18,图5-5,19,2. 8255A基本输入输出应用 作为键盘接口:,20,“反转法”进行键盘扫描: 设8255A为方式0,A口输出,B口输入; 向A口输出00H,从B口读入键盘列线值: 低4位值为0FH:无键按下 否则,就有键按下 有键按下时,将8255A反向设置为A口输入,B口输出 将B口原读入值从B口输出 从A口输入,得到该键的“行列码”,21,“反转法”键盘扫描程序: KEYSCAN PROC NEAR BEGIN:MOV DX,20EH ;置8255A控制口地址 MOV AL,82H ;8255A方式控制字 ;A口工作在方式0输出,B口工作在方式0输入 OUT DX,AL ;输出8255A方式控制字LOOP1:MOV DX,208H ;A口地址送DX MOV AL,00H OUT DX,AL ;A口输出00H扫描键盘 MOV DX,20AH ;B口地址送DX中 IN AL,DX ;读入键盘列值 AND AL,0FH ;保留低4位 CMP AL, 0FH JE LOOP1 ;无键按下,重新扫描,22,CALL DELAY ;有键按下,延时去抖动 IN AL,DX ;再次读B口,检查有无键按下 AND AL,0FH ;保留低4位 CMP AL, 0FH JE LOOP1 ;无键按下,重新扫描 MOV KEY,AL ;有键按下,列值保存在KEY单元 MOV DX,20EH ;置8255A控制口地址 MOV AL,90H ;8255A方式控制字 ; B口方式0输出,A口方式0输入 OUT DX,AL ;输出8255A方式控制字 MOV DX,20AH ;B口地址送DX中 MOV AL,KEY ;从KEY单元取出列值 OUT DX,AL ;向B口输出列值,反向扫描,23,MOV DX,208H ;A口地址送DX IN AL,DX ;从A口读入行值 AND AL,1FH ;保留低5位 CMP AL, 1FH JE BEGIN ;无键按下,重新扫描 CALL KEYVALUE ;转键值处理程序:查表获得按键编码,保存,24,MOV DX,20AH ;B口地址送DX中 MOV AL, 0 OUT DX,AL ;向B口输出列值,反向扫描 MOV DX,208H ;A口地址送DX WAIT2:IN AL,DX ;从A口读入行值 AND AL,1FH ;保留低5位 CMP AL, 1FH JNE WAIT2 ;未释放,等待 RET KEYSCAN ENDP,25,8255方式0应用-用作打印机接口,26,程序设计:设PA、PB、PC口地址分别为0D0H、0D2H、0D4H控制口地址:0D6H MOV AL,81H; OUT 0D6H,AL MOV AL,0DH; PC6置1,0DH=0000,1101 OUT 0D6H, AL LPST: IN AL,0D4H;读PC口 AND AL,04D; 打印机忙否(PC2 =BUSY=?) JNZ LPST ;PC2=1,打印机忙,等待 MOV AL, CL OUT 0D0H, AL; CL中的字符送PA口 MOV AL, 0CH OUT 0D6H, AL; 置PC6=0,即=0;00001100=0CH INC AL OUT 0D6H, AL;置PC6=1,即=1,00001101=0DH ,27,3. 8255A中断方式应用 8255A的A口工作在方式1输出方式,用以传送打印字符。 PC6自动作为ACK#信号输入端 PC0用来发送选通脉冲 PC3(INTR)连到中断控制器 8259A的IR3,对应中断类型码为0BH 8255A的端口地址为0C0H0C6H。 中断方式实现26个英文字母的输出。,28,图5-7,29,.data BUFFER DB “abcdefghijklmnopqrstuvwxyz”,0dh,0ah OUT_POINTER DW ?;缓冲区输出指针 DONE DB ? ;完成标志, =1表示已输出完成 .code START: MOV AX, SEG LPRINT MOV DS, AX LEA DX, LPRINT MOV AX, 250BH INT 21H ;设置0BH中断向量 MOV AX, data MOV DS, AX ;装载DS LEA BX, BUFFER,30,MOV OUT_POINTER, BX;设置输出缓冲区指针 MOV DONE, 0 ;设置未完成标志 MOV AL,0A0H OUT 0C6H,AL ;8255A的方式选择字,A口工作在方式1,输出 MOV AL,1 OUT 0C6H,AL ;PC0置为1,使选通无效 MOV AL, 0DH OUT 0C6H,AL ;使PC6为1,允许8255A的打印机中断 IN AL, 21H AND AL, 11110111B OUT 21H, AL ;清8259的IR3屏蔽,允许打印机中断,31,STI ;开中断 INT 0BH ;调用0BH中断服务程序输出第一个字符 WAIT1: CMP DON E,0 JE WAIT1 ;未完成,循环等待 MOV AX, 4C00H INT 21H ;打印完成,返回操作系统,32,; 以下为中断服务子程序: LPTINT PROC FAR PUSH DS ;保护现场 PUSH AX PUSH DI STI ;开放中断 MOV AX, SEG BUFFER;装载输出缓冲区指针 MOV DS, AX MOV DI, OUT_POINTER MOV AL, DI OUT 0C0H,AL ;字符送A口,33,MOV AL,0 ;使PC0为0,产生选通信号 OUT 0C6H,AL CALL Delay ;适当延时 INC AL ;使PC0为1,撤消选通信号 OUT 0C6H,AL INC OUT_POINTER ;修改地址指针 CMP BYTE PTRDI, 0AH JNE NEXT MOV DONE, 1 ;已完成,置完成标志 MOV AL, 0CH OUT 0C6H,AL ;使PC6为0,关闭8255A的打印机中断,34,IN AL, 21H OR AL, 00001000B OUT 21H, AL ;重新屏蔽8259的IR3 ,关闭8259A的打印机中断 NEXT: CLI ;中断结束处理,关闭中断 MOV AL, 20H OUT 20H, AL ;向8259A发EOI命令 POP DI ;恢复现场 POP AX POP DS IRET LPRINT ENDP END START,35,4. 8255A在PC机中的应用 早期的PC/XT微机系统(8088CPU)使用一片8255A,系统分配的端口地址为60H63H,工作在基本输入/输出方式。 A口用作键盘接口电路,接收串并转换后的键盘扫描码。 B口的PB7和PB6用于控制键盘接口电路,PB1和PB0用于控制发声系统。C口连接“系统配置开关”。 80286以上的微机系统中,8255A的对应电路被集成到多功能芯片内部,保留了8255A的端口地址和它的相应功能。,36,5.2 可编程定时器/计数器8254,计算机系统中经常要用到定时信号,如定时检测、定时扫描和时钟定时等,定时方法通常有以下三种: (1)软件定时 (2)不可编程的硬件定时 (3)可编程的硬件定时 许多场合还需要对脉冲信号进行计数。 本节介绍Intel 8254定时计数器芯片,它是一种的可编程的定时器件。,37,Intel 8254主要特性: (1)3个独立的16位定时/计数通道。 (2)每个通道有6种工作方式。 (3)最高计数频率为10MHz。 (4)可以按二进制或BCD码两种方式计数。 (5)定时时间长短可用软件设置,可由软件或硬件控制开始计数或停止计数。 (6)可以同时锁存13个计数器的计数值和状态值,供CPU读取。,38,5.2.1 8254的内部结构与外部引脚,39,数据总线缓冲器 8254
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号