




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 可编程接口芯片,5.1 可编程并行接口8255A 5.2 可编程定时器/计数器8254 5.3 串行通信的基本概念 5.4 可编程串行通信接口16550 5.5 可编程串行通信接口8251A,5.1 可编程并行接口8255A,5.1.1 8255A的内部结构与外部引脚,三个数据端口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的数据传输过程。,图5-2,5. 8255A的引脚,8255的引脚信号: (1). 与CPU连接的信号线 D7D0:8255A的双向三态数据线。 A1、A0: 端口地址选择信号。 CS#:片选信号。 RD#:读信号,低电平有效。 WR#:写信号,低电平有效。 RESET:复位信号。 VCC、GND:电源和地线。,(2). 与外部设备相连的信号线 PA7PA0:A口与外部设备连接的数据线。 PB7PB0:B口与外部设备连接的数据线。 PC7PC0:C口输入输出数据线。,5.1.2 8255A的控制字 1. 方式选择控制字 8255A有三种基本工作方式: 方式0:基本的输入/输出方式。 方式1:选通输入/输出方式。 方式2:双向传输方式。 8255A各数据端口的工作方式由方式选择控制字进行设置。,图5-3,8255A方式选择控制字,D7位是方式选择控制字的标志位,它必须是1; D6D5位用于选择A口的工作方式; D4、D3用于选择A口、C口高四位输入输出功能设置。 D2位用于选择B口的工作方式。 端口A可工作在3种工作方式中的任何一种,端口B只能工作在方式0或方式1,端口C则常常配合端口A和端口B工作。 只有端口A可工作在方式2。,2. 端口C按位置位/复位控制字 端口C有一种特殊的控制方式,可以将端口C的某一位置1或清0,而不影响端口C的其他位的状态。,5.1.3 8255A的工作方式 1方式0 基本输入/输出方式 (1)方式0的工作特点: A口和B口作为两个8位端口 C口的高4位和低4位可以用作两个4位端口 (2)方式0的使用场合: 无条件传送 查询式传送,2方式1 选通输入/输出方式 (1)方式1工作特点 带有选通的输入/输出方式。 端口A、端口B和端口C被分为两个组。 端口A和端口B用作8位数据的输入/输出,端口C的一些引脚被规定为端口A、B的联络信号。,(2)方式1联络信号 IBFA、IBFB:输入缓冲区满信号,高电平有效。 STBa#、STBb#:选通信号输入,负脉冲。 OBFA # 、OBFB # :输出缓冲区满信号,低电平有效。 ACKA # 、ACKB # :外设接收到输出数据后给8255A的应答信号,下降沿/负脉冲有效。 INTEA和INTEB:端口A和端口B的中断允许信号。 INTR:中断请求信号,8255A输出给CPU。 (3)方式1的使用 查询方式 中断方式,8255A芯片方式1的联络信号,3方式2 双向输入/输出方式 (1)方式2工作特点 方式2只适用于端口A,是双向的输入/输出传输方式。 方式2下各信号含义见表5-3,其中: INTE1:输出中断允许信号。 INTE2:输入中断允许信号。 (2)方式2的使用场合,8255芯片方式2的联络信号,5.1.4 8255A的应用,1. 8255A与CPU的连接 数据线和控制线一般直接和系统总线的相应信号相连 片选信号和地址译码器的输出相连 三个端口的数据线和外设的数据线直接相连 8255A的端口选择信号A1和A0,8088CPU与8086CPU在连接上有所不同,图5-5,2. 8255A基本输入输出应用 作为键盘接口:,“反转法”进行键盘扫描: 设8255A为方式0,A口输出,B口输入; 向A口输出00H,从B口读入键盘列线值: 低4位值为0FH:无键按下 否则,就有键按下 有键按下时,将8255A反向设置为A口输入,B口输出 将B口原读入值从B口输出 从A口输入,得到该键的“行列码”,“反转法”键盘扫描程序: 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 ;无键按下,重新扫描,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口输出列值,反向扫描,MOV DX,208H ;A口地址送DX IN AL,DX ;从A口读入行值 AND AL,1FH ;保留低5位 CMP AL, 1FH JE BEGIN ;无键按下,重新扫描 CALL KEYVALUE ;转键值处理程序:查表获得按键编码,保存,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,8255方式0应用-用作打印机接口,3. 8255A中断方式应用 8255A的A口工作在方式1输出方式,用以传送打印字符。 PC6自动作为ACK#信号输入端 PC0用来发送选通脉冲 PC3(INTR)连到中断控制器 8259A的IR3,对应中断类型码为0BH 8255A的端口地址为0C0H0C6H。 中断方式实现26个英文字母的输出。,图5-7,.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,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屏蔽,允许打印机中断,STI ;开中断 INT 0BH ;调用0BH中断服务程序输出第一个字符 WAIT1: CMP DON E,0 JE WAIT1 ;未完成,循环等待 MOV AX, 4C00H INT 21H ;打印完成,返回操作系统,; 以下为中断服务子程序: 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口,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的打印机中断,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,4. 8255A在PC机中的应用 早期的PC/XT微机系统(8088CPU)使用一片8255A,系统分配的端口地址为60H63H,工作在基本输入/输出方式。 A口用作键盘接口电路,接收串并转换后的键盘扫描码。 B口的PB7和PB6用于控制键盘接口电路,PB1和PB0用于控制发声系统。C口连接“系统配置开关”。 80286以上的微机系统中,8255A的对应电路被集成到多功能芯片内部,保留了8255A的端口地址和它的相应功能。,5.2 可编程定时器/计数器8254,计算机系统中经常要用到定时信号,如定时检测、定时扫描和时钟定时等,定时方法通常有以下三种: (1)软件定时 (2)不可编程的硬件定时 (3)可编程的硬件定时 许多场合还需要对脉冲信号进行计数。 本节介绍Intel 8254定时计数器芯片,它是一种的可编程的定时器件。,Intel 8254主要特性: (1)3个独立的16位定时/计数通道。 (2)每个通道有6种工作方式。 (3)最高计数频率为10MHz。 (4)可以按二进制或BCD码两种方式计数。 (5)定时时间长短可用软件设置,可由软件或硬件控制开始计数或停止计数。 (6)可以同时锁存13个计数器的计数值和状态值,供CPU读取。,5.2.1 8254的内部结构与外部引脚,数据总线缓冲器 8254与系统数据总线相连的接口电路。 通过数据总线缓冲器,CPU用指令对8254进行读/写: (1)8254初始化编程时,写入控制字。 (2)CPU向某一计数器写入计数初值。 (3)CPU读出计数器的当前计数值。,2. 读/写控制逻辑 接收来自CPU的控制信号: 读信号RD# 写信号WR# 片选信号CS# 芯片内部寄存器寻址信号A1A0,3计数器02 8254有3个结构完全相同的定时器/计数器通道: 0,1,2 每个通道包含: 一个8位的控制字寄存器 三个16位的初值寄存器、减1计数器和结果输出锁存器。 每个通道有3根专用的信号线: CLK:计数/定时脉冲输入端,每输入一个脉冲,减1操作 OUT:计数值减到零时,由输出端OUT输出结束信号 GATE:门控信号,允许或停止计数,图5-9,CLK脉冲: 8254作外部事件计数器时,CLK引脚上的计数脉冲从外部输入,这些脉冲的间隔可以不相等。 8254用作定时器时,CLK引脚的输入信号是精确的时钟脉冲。 8254的定时时间T时钟脉冲周期tc计数初值n,4. 控制寄存器 控制寄存器是一个只能写入的寄存器,它接收从CPU来的控制字,并由控制字的D7、D6位的编码决定控制字写入哪个计数器的控制寄存器。 在对8254进行编程时,CPU用输出指令向它写入控制字,由此确定各计数器通道的工作方式、读写格式和计数的数制。,5. Intel 8254的引脚 (1)CS#: 片选信号,接IO端口译码电路的输出 (2)RD#, WR#: 读写控制信号 (3)D7D0: 数据线,与系统数据总线相连 (4)A1A0 接地址总线低2位,用于片内端口的选择。A1A0=00,选择通道0;A1A0=01,选择通道1;A1A0=10,选择通道2;A1A0=11,选择控制端口。 (5)每个通道有三根对外的信号线: CLK,OUT 和 GATE。,图5-10,5.2.2 8254的工作方式 每个通道有六种可选择的工作方式: 1. 方式0 计数器方式 写入方式0控制字后,输出OUT立即变为低电平,且在计数过程中一直维持低电平。 赋初值后,在每个CLK时钟下降沿,计数器进行减1计数。 计数值减到零时,OUT输出变为高电平,并且一直保持到该通道重新装入计数初值或重新设置工作方式为止。 GATE用于控制计数过程。GATE为高电平,允许计数;GATE为低电平,暂停计数。,图5-11 方式0,2. 方式1可重触发的单稳态触发器 门控信号GATE上升沿触发后,输出一个负脉冲信号,脉冲宽度由计数初值N决定 写入控制字后,OUT输出高电平; GATE上升沿到达后,OUT输出低电平,并在CLK脉冲下降沿进行减1计数; 计数值减到0时,输出OUT恢复为高电平。 计数结束后,若再来一个GATE信号上升沿,则下一个时钟周期的下降沿又以上次写入的初值开始计数,不需要重新写入初值。 在计数过程中可以写入新的初值,它不会影响正在进行的计数过程。在下一个门控信号到来后,按新值开始计数。,图5-12方式1,3. 方式2分频器 写入控制字后,OUT变成高电平。 写入计数初值后,计数器开始减1计数(GATE=1) 。 减到1时,输出端OUT变为低电平,维持一个CLK周期,然后输出OUT又变成高电平,同时从初值开始新的计数过程。 这种方式工作时,计数初值自动重装,计数器能连续工作,输出固定频率的脉冲,因此称为分频器。 方式2中,GATE信号为低电平时终止计数。GATE的上升沿使计数器恢复初值,并从初值开始计数。,图5-13 方式2,4. 方式3方波发生器 (1)计数初值为偶数 写入控制字后,输出端OUT变成高电平 写入计数初值后计数器开始进行减2计数 减到0时,输出端OUT改变输出极性,从初值开始新的计数过程。 (2)计数初值为奇数 写入控制字后输出端OUT变成高电平 写入计数初值后开始减1计数 减到(N+1)/2以后,输出端OUT变为低电平 减到0时,OUT又变成高电平,从初值开始新的计数过程。 GATE=1,允许计数,GATE=0,禁止计数。GATE信号能使计数过程重新开始。,图5-14 方式3,5. 方式4软件触发选通 写入方式控制字后,OUT输出高电平。 写入初值,经过一个CLK脉冲开始减1计数,计到0时OUT输出为低电平,持续一个CLK脉冲周期后再恢复到高电平。 GATE=1时,允许计数;GATE=0,禁止计数,并把输出维持在当时的电平。 如果GATE=1时在计数过程中改变计数值,则在写入新值后的下一个时钟下降沿计数器立即按新的初值开始计数。,图5-15 方式4,6. 方式5硬件触发选通 写入8254方式字后,OUT输出高电平。 写入计数初值后,计数器并不立即开始计数,在GATE端输入上升沿触发信号后,计数开始。 计数器减到0时,输出一个持续时间为一个时钟周期的负脉冲,然后输出恢复为高电平,并自动装入初值,等待下一个GATE触发信号。,图5-16 方式5,7. 8254的6种工作方式的比较,5.2.3 8254的控制字与初始化 8254是可编程接口芯片,使用前必须先对它进行初始化编程。 8254的初始化编程有以下两个步骤: (1)向8254写入控制字,用于确定所选通道的工作方式和计数格式。 (2)向8254的通道写入计数初值。每个通道在写入控制字和计数初值之后开始工作。,8254的方式控制字,(1)D7、D6:通道选择位 D7D6两位为00,01,10分别选择三个计数通道, 为11选择控制寄存器,用于读出控制寄存器内容。 (2)D5、D4:读/写方式选择位 D5D4 =00,锁存计数器的当前计数值,以便读出。 D5D4=01,写入时,只写入计数初值低8位,高8位置0; 读出时,只读出低8位的当前计数值。 D5D4=10,写入时,只写入计数初值高8位,低8位置0; 读出时,只读出高8位的当前计数值。 D5D4=11,计数初值为16位,分两次读/写入计数初值 寄存器,先读/写低8位,后读/写高8位。,(3)D3D2D1: 工作方式选择位 D3D2D1取值000到101分别代表方式0到方式5。 (4)D0:计数格式选择位 D0=0,按二进制格式计数; D0=1,按BCD码格式计数。,2. 8254的读出控制字 读出控制字D7D6必须为11,D0必须为0,这三位合起来构成8254的读出控制字的标志。 D5=0锁存计数值,以便CPU读取; D4=0将状态信息锁存进状态寄存器;,3. 8254的状态字 D7 =1表示OUT端当前输出高电平,D7=0表示OUT端当前输出低电平 D6=0,代表已装入初值,读取的计数值有效。 D5 D0各位是由方式控制字确定的,与方式控制字的对应位相同。,图5-19,8254的状态字,4. 8254初始化编程,初始化分为两步: 向控制寄存器写入方式控制字,确定所要使用的计数器的工作方式; 向使用的计数器写入计数初值。,例5-1: 某微机系统中8254的端口地址为40H43H,要求计数器0工作在方式0,计数初值为0DEH,按二进制计数;计数器1工作在方式2,计数初值为1000D,按BCD码计数。试写出初始化程序段。 按要求计数器0的控制字为:,计数器1的控制字为:,初始化程序如下: MOV AL,10H ;写通道0控制字 OUT 43H,AL MOV AL,0DEH ;写通道0计数初值 OUT 40H,AL MOV AL,65H ;写通道1控制字 OUT 43H,AL MOV AL,10H ;写通道1计数初值 OUT 41H,AL,例5-2: 设8254端口地址为3FF0H3FF3H,要求计数器2工作在方式5,二进制计数,初值为2F30H。,初始化程序如下: MOV DX,3FF3H ;DX指向控制端口 MOV AL,0BAH ;控制字 OUT DX,AL MOV DX,3FF2H ;DX指向通道2 MOV AL,30H ;写初值低8位 OUT DX,AL MOV AL,2FH ;写初值高8位 OUT DX,AL,5.2.4 8254 的应用 1. 8254控制扬声器,两种方法使扬声器发声: (1) 将PB0置为0,关闭Timer2,将PB1交替置为1/0,使扬声器发声; (2)将PB0、PB1均置为1,使“Timer2”工作,产生固定频率的信号使扬声器发声。,SOUND PROC PUSH AX ; 保护现场 PUSH CX MOV AL, 10110110B OUT 43H, AL ; 设置Timer2为工作方式3 MOV AL, DL ; 设置Timer2时间常数, ;控制OUT2输出频率 OUT 42H, AL MOV AL, DH OUT 42H, AL IN AL, 61H ; 读61H端口“当前值” OR AL, 00000011B ; 使PB0=1,PB1=1,开启扬声器 OUT 61H, AL,TRIG: MOV CX, 0 LOOP $ DEC BX JNZ TRIG ; 延时,控制发声时间 IN AL, 61H AND AL, 11111100B ; 使GATE2=0, ; 停Timer2,停止发声 OUT 61H, AL POP CX ; 恢复现场 POP AX RET SOUND ENDP,2. PWM脉宽调制 在工业生产和仪器、仪表中,经常需要对交、直流电机进行转速的调节。 PWM(脉冲宽度调节)实现调速容易,调速准确。 可以用8254来定时,输出周期固定、占空比可变的PWM脉冲信号。 如图5-21: 计数器0工作在方式2,产生固定宽度的脉冲信号。 计数器1工作在方式1,把OUT0用作GATE1。OUT1用作PWM脉冲。 PWM脉冲周期由计数器0决定,宽度由计数器1决定。,图5-21,PWM波形设计: 8254工作时钟频率2MHz(时钟周期0.5s) PWM周期T=5ms: 周期信号由计数器0控制输出:方式2,计数初值5ms/0.5s =10000。 PWM脉冲宽度由计数器1控制产生: 方式1,计数值为N时(010000),低电平时间为0.5sN,输出有效电压为最大值的(10000-N)/10000。,PWM程序: MOV DX,0243H ;8254控制口地址送DX MOV AL,34H ;计数器0,方式2,写16位 OUT DX,AL ;控制字写入计数器0控制寄存器 MOV AL,72H ;计数器1,方式1,写16位 OUT DX,AL ;控制字写入计数器1控制寄存器 MOV DX,0240H ;8254计数器0地址送DX MOV AX,10000 ;计数器0的计数初值 OUT DX,AL ;写入初值低8位 MOV AL,AH ;计数器0的计数初值高8位 OUT DX,AL ;写入初值高8位 MOV DX,0241H ;8254计数器1口地址送DX MOV AX,N ;计数器1的计数初值 OUT DX,AL ;写入初值低8位 MOV AL,AH ;计数器1的计数初值高8位 OUT DX,AL ;写入初值高8位,3. 电机转速测量 在电机轴安装一个转盘,上面有8个均匀分布的小孔。 转盘上的小孔转到发光源位置时,光透过小孔使光电二极管导通,产生一个正脉冲。 记录单位时间内脉冲的个数,可以得到电机的转速。,使用8254进行电机转速测量的电路:,图5-22,测速方法: 通道0对脉冲进行计数,以方式0工作 通道1产生定时信号,工作在方式3 基准时钟频率250KHz,每定时0.1秒钟产生一次中断,则计数初值为25000。 设0.1秒钟内计数脉冲数为COUNT,转速: N=COUNT 10 608= COUNT75 (转/分),测速程序: DATA SEGMENT COUNT DW ? SPEED DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;设置计数器0、1的工作方式 MOV DX,0243H ;8254控制口地址送DX MOV AL,30H ;计数器0:方式0,16位读写 OUT DX,AL ;写计数器0控制字,MOV AL,74H ;计数器1,方式2, OUT DX,AL ;控制字写入计数器1控制寄存器 ;设置计数器0、1的初值 MOV DX,0240H ;计数器0端口地址送DX MOV AL,00H ;计数器0的计数初值 MOV DX,AL ;写入初值低8位 MOV DX,AL ;写入初值高8位 MOV DX,0241H ;计数器1端口地址送DX MOV AX,25000 ;定时0.1秒,计数初值为25000 OUT DX,AL ;写入初值低8位 MOV AL,AH OUT DX, AL ;写入初值高8位 MOV SIGNAL,0 ;标志单元清0, ;装载中断向量, 清屏蔽位, 开放中断, ;计算转速 MOV AX,COUNT ;取计数脉冲值 NEG AX MOV BX, 75 MUL BX ;计算转速 MOV SPEED,AX ;保存转速 ;输出/显示电机转速,;定时中断程序 TIME_INT PROC FAR PUSH DS PUSH AX PUSH DX STI ;开放中断 MOV AX, DATA MOV DS, AX MOV AL,00H ;锁存计数器0计数值控制字 MOV DX,0243H ;控制寄存器地址送DX OUT DX,AL MOV DX,0240H ;计数器0的端口地址送DX MOV AL,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论