《常用可编程接口》由会员分享,可在线阅读,更多相关《常用可编程接口(92页珍藏版)》请在金锄头文库上搜索。
1、1微型计算机原理及应用22 2可编程并行接口可编程并行接口8255A8255A可编程计数器可编程计数器/ /定时器定时器82538253常用可编程接口芯片1 13 8255 8255是为是为80808080,80858085和和80888088微型机系微型机系统设计的统设计的并行并行I/OI/O接口接口芯片。芯片。482558255的内部组成如下图所示的内部组成如下图所示1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号5 l端口端口A(PortA(Port A) A)、端口、端口B(PortB(Port B) B)
2、和端口和端口C(PortC(Port C) C)都是都是8 8位的端口,都可以选择作为输入或输出。位的端口,都可以选择作为输入或输出。l可以将端口可以将端口C C的高的高4 4位和低位和低4 4位分开使用,分别作为位分开使用,分别作为输入和输出。输入和输出。l端口端口A A和端口和端口B B作为选通输入或输出的数据端口时,作为选通输入或输出的数据端口时,端口端口C C的指定位与端口的指定位与端口A A和端口和端口B B配合使用,用作控配合使用,用作控制信号或状态信号。制信号或状态信号。1. 1. 端口端口A A、端口、端口B B和端口和端口C C1.1 82551.1 82551.1 8255
3、1.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号6l根据根据CPUCPU的方式命令字控制的方式命令字控制82558255的工作方式。的工作方式。l根据根据CPUCPU的命令对端口的命令对端口C C的每一位实现按位复位或置的每一位实现按位复位或置位。位。 lA A组控制电路控制端口组控制电路控制端口A A和端口和端口C C的上半部的上半部(PC7(PC7PC4)PC4)。lB B组控制电路控制端口组控制电路控制端口B B和端口和端口C C的下半部的下半部(PC3(PC3PC0)PC0)。2.A2.A组和组和B B组控制电路组控制电路1.1 82551.1 8255
4、1.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号7 这是一个三态双向的这是一个三态双向的8 8位缓冲器,它是位缓冲器,它是82558255与与系统数据总线的接口。输入输出的数据以及系统数据总线的接口。输入输出的数据以及CPUCPU发发出的命令控制字和外设的状态信息,都是通过这出的命令控制字和外设的状态信息,都是通过这个缓冲器传送的。个缓冲器传送的。3. 3. 数据总线缓冲器数据总线缓冲器1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号8l控制把控制把CPUCPU的控制
5、命令或输出数据送至相应的端口的控制命令或输出数据送至相应的端口, , l控制把外设的状态信息或输入数据通过相应的端口控制把外设的状态信息或输入数据通过相应的端口送至送至CPUCPU。4.4.读读/ /写控制逻辑写控制逻辑1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号9 (1)A1 (1)A1、A0 A0 端口选择:用来选择端口选择:用来选择A A、B B、C 3C 3个端个端口和控制字寄存器。通常,它们与口和控制字寄存器。通常,它们与PCPC微机的地址线微机的地址线A1A1和和A0A0相连。相连。 (2)CS (
6、2)CS选片信号:低电平有效,由它启动选片信号:低电平有效,由它启动CPUCPU与与82558255之间的通信。通常,它与之间的通信。通常,它与PCPC微机地址线的译码微机地址线的译码电路的输出线相连,并由该译码电路的输出线来确电路的输出线相连,并由该译码电路的输出线来确定定82558255的端口地址。的端口地址。4.4.读读/ /写控制逻辑写控制逻辑1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号10 (3)RD (3)RD读信号:低电平有效,它控制读信号:低电平有效,它控制82558255送出数送出数据或状态信
7、息至系统数据总线。通常,它与据或状态信息至系统数据总线。通常,它与PCPC微机微机的的IORIOR相连。相连。 (4)WR(4)WR写信号:低电平有效,它控制把写信号:低电平有效,它控制把CPUCPU输出到输出到系统数据总线上的数据或命令写到系统数据总线上的数据或命令写到82558255。通常,它。通常,它与与PCPC微机的微机的IOWIOW相连。相连。4.4.读读/ /写控制逻辑写控制逻辑1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号11 (5)RESET (5)RESET 复位信号:高电平有效,它清除控制寄复
8、位信号:高电平有效,它清除控制寄存器,并置存器,并置A A、B B、C 3C 3个端口为输入方式。个端口为输入方式。 82558255与与CPUCPU的连接及复位信号产生电路如下图所示。的连接及复位信号产生电路如下图所示。4.4.读读/ /写控制逻辑写控制逻辑1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号12 A A1 1,A A0 0和和CSCS,RDRD,WRWR及及组组合合所所实实现现的的各各种种功功能能如下:如下:1.1 82551.1 82551.1 82551.1 8255的组成与接口信号的组成与接口
9、信号的组成与接口信号的组成与接口信号A1 A1 A0 A0 操操 作作 0 01 10 00 00 0写端口写端口 0 01 10 00 01 1写端口写端口 0 01 10 01 10 0写端口写端口 0 01 10 01 11 1写控制字寄存器写控制字寄存器 0 00 01 10 00 0读端口读端口 0 00 01 10 01 1读端口读端口 0 00 01 11 10 0读端口读端口 0 00 01 11 11 1无操作无操作 13 82558255有有3 3种工作方式,由方式选择控制字来选用:种工作方式,由方式选择控制字来选用: (1) (1)方式方式0 (Mode 0)-0 (Mo
10、de 0)-基本输入输出。基本输入输出。 (2) (2)方式方式1 (Mode 1)-1 (Mode 1)-选通输入输出。选通输入输出。 (3) (3)方式方式2 (Mode 2)-2 (Mode 2)-双向传送。双向传送。1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字141.1.方式选择控制字方式选择控制字1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字152.2.按位置位按位置位/ /复位控制字复位控制字 1.2
11、82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字16 如:端口如:端口C C的的bit3bit3(PCPC3 3)的置位控制字为)的置位控制字为00000111B(07H)00000111B(07H),复位控制字为,复位控制字为00000110B(06H)00000110B(06H)。 注意:注意: C C端口的按位置位端口的按位置位/ /复位控制字须跟在方式选择控制字复位控制字须跟在方式选择控制字之后写入控制字寄存器。即使仅使用该功能,也应先之后写入控制字寄存器。即使仅使用该功能,也应先选送一方式控制字。选送一方
12、式控制字。1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字17 例例1 1 将将8255 C8255 C端口的端口的8 8根根I/OI/O线接线接8 8只发光二极管的正只发光二极管的正极极( (八个负极均接地八个负极均接地) ),用按位置位,用按位置位/ /复位控制字编写复位控制字编写使这使这8 8只发光二极管依次亮、灭的程序。设只发光二极管依次亮、灭的程序。设82558255的端的端口地址为口地址为380H380H383H383H。 本程序要使用本程序要使用82558255的的2 2个控制字个控制字-方式
13、选择字和方式选择字和按位置位按位置位/ /复位字。这复位字。这2 2个控制字都写入个控制字都写入82558255的控制的控制字寄存器,由它们的字寄存器,由它们的D D7 7位为位为1 1或或0 0来区别写入的字是方来区别写入的字是方式选择字还是置位式选择字还是置位/ /复位字。复位字。82558255的控制字寄存器的的控制字寄存器的端口地址为端口地址为383H383H。方式选择字只写入一次,其后写。方式选择字只写入一次,其后写入的都是置位入的都是置位/ /复位字。复位字。1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制
14、控制字字字字1882558255与与PCPC微机的连接及微机的连接及8255 C8255 C端口与端口与8 8只发光二极管只发光二极管的连接如图。的连接如图。1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字19程序框图程序框图1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字20stackstack segment stack segment stack stackstack dwdw 32 dup (0) 32 dup
15、(0)stackstack ends endscode code segment segmentbeginbegin proc far proc far assume assume ssss: stack, : stack, cscs: code: code push push dsds sub ax, ax sub ax, ax push ax push ax1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字21 MOV DXMOV DX,383H 383H ;383H383H为控制字寄存器的端口地址为控制
16、字寄存器的端口地址 MOV AL,80H MOV AL,80H ;方式选择字;方式选择字 OUT DX OUT DX,ALAL MOV AL,1 MOV AL,1 ;PC0PC0的置位控制字的置位控制字AGAIN: OUT DX,AL AGAIN: OUT DX,AL ;点亮一只发光二极管;点亮一只发光二极管 LOOP $ LOOP $ ;延时;延时 LOOP $LOOP $ AND AL,0FEH AND AL,0FEH ;置位字改为复位字;置位字改为复位字 OUT DX,AL OUT DX,AL ;熄灭点亮的发光二极管;熄灭点亮的发光二极管 ADD AL,3 ADD AL,3 ;PCiPC
17、i+1PCiPCi+1,复位字改为下一位的置位字,复位字改为下一位的置位字 AND AL,0FHAND AL,0FH ;保持;保持D7D7为为0 0 1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字22 PUSH AXPUSH AX MOV AH,11 MOV AH,11 ;检查键盘有无输入;检查键盘有无输入 INT 21H INT 21H ;无;无0 0送送ALAL,有,有-1-1送送ALAL INC AL INC AL POP AX POP AX JNZ AGAIN JNZ AGAIN ret retb
18、egin begin endpendpcodecode ends ends end begin end begin1.2 82551.2 82551.2 82551.2 8255的工作方式与的工作方式与的工作方式与的工作方式与控制控制控制控制字字字字23 这是一种基本的这是一种基本的I/OI/O方式。在这种工作方式下,方式。在这种工作方式下,3 3个端口都可由程序选定作输入或输出。它们的输出个端口都可由程序选定作输入或输出。它们的输出是锁存的,输入是不锁存的。是锁存的,输入是不锁存的。 在这种工作方式下,可以由在这种工作方式下,可以由CPUCPU用简单的输入或用简单的输入或输出指令来进行读或写
19、。因而当方式输出指令来进行读或写。因而当方式0 0用于无条件传用于无条件传送方式的接口电路时是十分简单的,这时不需要状送方式的接口电路时是十分简单的,这时不需要状态端口,态端口,3 3个端口都可作为数据端口。个端口都可作为数据端口。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能1. 1. 方式方式0 024若将例若将例1 1改为改为C C端口方式端口方式0 0输出,则控制程序为:输出,则控制程序为:stackstack segment stack segment stack stackstack dwdw 32 dup (0) 32 d
20、up (0)stackstack ends endscode code segment segmentbeginbegin proc far proc far assume assume ssss: stack, : stack, cscs: code: code push push dsds sub ax, ax sub ax, ax push ax push ax MOV DX,383H MOV DX,383H MOV AL,80H MOV AL,80H OUT DX,AL OUT DX,AL1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式
21、的功能25 MOV DX,382H MOV DX,382H ;C C端口的端口地址送端口的端口地址送DXDX MOV AL,1 MOV AL,1 ;C C端口的输出值端口的输出值AGAIN: OUT DX,ALAGAIN: OUT DX,AL LOOP $ LOOP $ ;延时;延时 LOOP $LOOP $ PUSH AX PUSH AX MOV AH,11 MOV AH,11 ;1111号功能调用:检查键盘有无输入号功能调用:检查键盘有无输入 INT 21H INT 21H ;无;无0 0送送ALAL,有,有-1-1送送ALAL INC AL INC AL ;有键入,;有键入,AL=-1A
22、L=-1,ALAL增增1 1,AL=0AL=0 POP AX POP AX JZ BACK JZ BACK ROL AL,1 ROL AL,1 ;改变;改变C C端口的输出值端口的输出值 JMP AGAIN JMP AGAINBACK: retBACK: ret1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能26beginbegin endpendpcodecode ends ends end begin end begin 方式方式0 0也可作为查询式输入或输出的接口电也可作为查询式输入或输出的接口电路,此时端口路,此时端口A A和和B
23、 B分别可作为一个数据端口,而分别可作为一个数据端口,而取端口取端口C C的某些位作为这两个数据端口的控制和状的某些位作为这两个数据端口的控制和状态信息。态信息。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能27 这是一种选通的这是一种选通的I/OI/O方式。它将方式。它将3 3个端口分为个端口分为A A、B B两组,端口两组,端口A A和端口和端口C C中的中的PCPC3 3PCPC5 5或或PCPC3 3、PCPC6 6、PCPC7 7 3 3位为位为A A组;端口组;端口B B和端口和端口C C的的PCPC2 2PCPC0 0 3
24、 3位为位为B B组。端口组。端口C C中余下的两位,仍可作为输入或输出用,由方式控中余下的两位,仍可作为输入或输出用,由方式控制字中的制字中的D D3 3来设定。端口来设定。端口A A和和B B都可以由程序设定为输都可以由程序设定为输入或输出。此时端口入或输出。此时端口C C的某些位为控制状态信号,用的某些位为控制状态信号,用于联络和中断,其各位的功能是固定的,不能用程序于联络和中断,其各位的功能是固定的,不能用程序改变。改变。2. 2. 方式方式1 11.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能28l 方式方式1 1输入输入的状态
25、控制信号及其时序关系如图。的状态控制信号及其时序关系如图。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能29 (1) (1) STBSTB(strobe(strobe) ) 选通信号,低电平有效。这是选通信号,低电平有效。这是由外设发出的输入信号,信号的前沿由外设发出的输入信号,信号的前沿( (下降沿下降沿) ),把,把输入装置送来的数据送入输入缓冲器;信号的后沿输入装置送来的数据送入输入缓冲器;信号的后沿( (上升沿上升沿) )使使INTRINTR有效有效( (置置1)1)。 (2)IBF(2)IBF(input buffer ful
26、l) (input buffer full) 输入缓冲器满信号,输入缓冲器满信号,高电平有效。这是高电平有效。这是82558255输出给外设的联络信号。外输出给外设的联络信号。外设将数据送至输入缓冲器后,该信号有效;设将数据送至输入缓冲器后,该信号有效;RDRD信号信号的上升沿将数据送至数据线后,该信号无效。的上升沿将数据送至数据线后,该信号无效。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能30 (3)INTR(3)INTR(interrupt request) (interrupt request) 中断请求信号,高电中断请求信号,
27、高电平有效。这是平有效。这是82558255的一个输出信号,可用作向的一个输出信号,可用作向CPUCPU申申请中断的请求信号,以要求请中断的请求信号,以要求CPUCPU服务。当服务。当IBFIBF为高和为高和INTE(INTE(中断允许中断允许) )为高时,由为高时,由STBSTB的上升沿的上升沿( (后沿后沿) )使其使其置为高电平。由置为高电平。由RDRD信号的下降沿信号的下降沿(CPU(CPU读取数据前读取数据前) )清清除为低电平。除为低电平。 (4)INTE(4)INTE(interrupt enable) (interrupt enable) 中断允许信号,端口中断允许信号,端口A
28、 A中断允许中断允许INTEAINTEA可由用户通过对可由用户通过对PCPC4 4的按位置位的按位置位/ /复位复位来控制。而来控制。而INTEINTEB B 由由PCPC2 2 的置位的置位/ /复位控制。复位控制。INTEINTE置置位允许中断。位允许中断。INTEINTE复位禁止中断。复位禁止中断。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能31例例2 2 用选通输入方式从用选通输入方式从A A端口输入端口输入100100个个8 8位二进制位二进制数。数。 接口及其电路如下图所示。接口及其电路如下图所示。1.3 1.3 1.3
29、1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能32stacksegment stack stack dw 32 dup (0)stackendsdatasegmentBUF DB 100 DUP (?)data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush ax控制程序:控制程序:1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能33MOV ESMOV ES,AXAXmovmov
30、 ax, data ax, datamovmov dsds, ax, axMOV DXMOV DX,38FH38FHMOV ALMOV AL,0B0H0B0HOUT DXOUT DX,ALALMOV ALMOV AL,9 9 ;PCPC4 4置置1 1,允许,允许A A端口中断端口中断OUT DXOUT DX,ALALMOV AXMOV AX,SEG IS8255 SEG IS8255 ;中断程序入口地址送中断向量表;中断程序入口地址送中断向量表MOV ESMOV ES:01C6H01C6H,AXAXMOV AXMOV AX,OFFSET IS8255OFFSET IS8255MOV ESMO
31、V ES:01C4H01C4H,AXAXMOV CXMOV CX,100100MOV BXMOV BX,0 0MOV DXMOV DX,38CH38CH1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能34 IN ALIN AL,0A1H 0A1H ;读屏蔽字;读屏蔽字 AND AL AND AL,0FDH 0FDH ;改变屏蔽字,允许;改变屏蔽字,允许IRQ9IRQ9中断中断 OUT 0A1H OUT 0A1H,ALALROTTROTT: JMP $JMP $ LOOP ROTT LOOP ROTT IN AL,0A1H IN AL,0A
32、1H ;恢复屏蔽字,禁止;恢复屏蔽字,禁止IRQ9IRQ9中断中断 OR AL,2 OR AL,2 OUT 0A1H,AL OUT 0A1H,AL ret retIS8255: IN AL,DXIS8255: IN AL,DX MOV BUFBX,AL MOV BUFBX,AL INC BX INC BX MOV AL,61H MOV AL,61H ;指定中断结束命令;指定中断结束命令1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能35 OUT 0A0H,AL OUT 0A0H,AL MOV AL,62H MOV AL,62H OUT 2
33、0H,AL OUT 20H,AL POP AX POP AX ;修改返址;修改返址 INC AX INC AX INC AX INC AX PUSH AX PUSH AX IRET IRETbeginbegin endpendpcodecode ends ends end begin end begin1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能36l 方式方式1 1输出输出的状态控制信号及其时序关系如图。的状态控制信号及其时序关系如图。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式
34、的功能37 (1) OBF(1) OBF输出缓冲器满信号输出缓冲器满信号,低电平有效。这是,低电平有效。这是82558255输出给外设的一个联络信号。输出给外设的一个联络信号。CPUCPU把数据写入指定端把数据写入指定端口的输出锁存器后,该信号有效,表示外设可以把口的输出锁存器后,该信号有效,表示外设可以把数据取走。它由数据取走。它由ACKACK的前沿的前沿( (下降沿下降沿) )即外设取走数据即外设取走数据后,使其恢复为高。后,使其恢复为高。 (2)ACK(acknowledge)(2)ACK(acknowledge) 低电平有效。这是外设发出低电平有效。这是外设发出的响应信号,该信号的前沿
35、取走数据并使的响应信号,该信号的前沿取走数据并使OBFOBF无效后无效后沿使沿使INTRINTR有效。有效。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能38(3)INTR (3)INTR 中断请求信号中断请求信号,高电平有效。当输出装置已,高电平有效。当输出装置已经接受了经接受了CPUCPU输出的数据后,它用来向输出的数据后,它用来向CPUCPU提出中断提出中断请求,要求请求,要求CPUCPU继续输出数据。继续输出数据。OBFOBF为为“1 1”( (高电平高电平) )和和INTEINTE为为“1 1”( (高电平高电平) )时,由时
36、,由ACKACK的后沿的后沿( (上升沿上升沿) ),使其置位,使其置位( (高电平高电平) ),WRWR信号的前沿信号的前沿( (下降沿下降沿) )使使其复位其复位( (低电平低电平) )。(4)INTE(4)INTEA A由由PCPC6 6的置位的置位/ /复位控制。而复位控制。而INTEINTEB B由由PCPC2 2置置位位/ /复位控制。复位控制。INTEINTE置位允许中断。置位允许中断。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能39例例3 3 用用8 8只发光二极管及时反映只发光二极管及时反映8 8个监控量的状态,个监
37、控量的状态,设计接口电路和控制程序。设计接口电路和控制程序。 用用8 8个开关模拟个开关模拟8 8个监控量的状态。个监控量的状态。A A端口输入端口输入8 8个个监控量的状态,监控量的状态,B B端口接端口接8 8只发光二极管。只发光二极管。A A端口基端口基本输入,本输入,B B端口选通输出,用单稳电路来产生选通端口选通输出,用单稳电路来产生选通信号信号ACKACK。当需要了解。当需要了解8 8个监控量的状态时发来选通个监控量的状态时发来选通信号信号ACKACK,该信号使控制程序进入中断服务程序。,该信号使控制程序进入中断服务程序。在中断服务程序中,从在中断服务程序中,从A A端口输入端口输
38、入8 8个监控量的状态个监控量的状态后立即从后立即从B B端口输出。端口输出。1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能40接口电路接口电路1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能41stackstack segment stack segment stack stackstack dwdw 32 dup(0) 32 dup(0)stack endsstack endsdatadata segment segmentDA1 DA1 DB DB WAIT INTERRUP
39、TWAIT INTERRUPT , 0DH, 0AH, , 0DH, 0AH, $ $ data data ends endscode code segment segmentbeginbegin proc far proc far assume assume ssss: stack, : stack, cscs: code, : code, dsds: data: data push push dsds sub ax, ax sub ax, ax push ax push ax控制程序:控制程序:1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方
40、式的功能42MOV ES,AXMOV ES,AXmovmov ax, data ax, datamovmov dsds, ax, axMOV DX,393HMOV DX,393HMOV AL,94HMOV AL,94HOUT DX,ALOUT DX,ALMOV AL,5 MOV AL,5 ;PC2PC2置置1 1,允许,允许B B端口中断端口中断OUT DX,ALOUT DX,ALMOV AX,SEG IO8255 MOV AX,SEG IO8255 ;中断程序入口地址送中断向量表;中断程序入口地址送中断向量表MOV ES:01C6H,AXMOV ES:01C6H,AXMOV AX,OFFSE
41、T IO8255MOV AX,OFFSET IO8255MOV ES:01C4H,AXMOV ES:01C4H,AXIN AL,0A1H IN AL,0A1H ;读屏蔽字;读屏蔽字AND AL,0FDH AND AL,0FDH ;改变屏蔽字,允许;改变屏蔽字,允许IRQ9IRQ9中断中断OUT DX,ALOUT DX,AL1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能43ROTT: MOC DX,OFFSET DA1ROTT: MOC DX,OFFSET DA1 MOV AH,9 MOV AH,9 INT 21H INT 21H JMP
42、 $ JMP $ MOV AH,11 MOV AH,11 INT 21H INT 21H CMP AL,0 CMP AL,0 JE ROTT JE ROTT IN AL,0A1H IN AL,0A1H ;恢复屏蔽字,禁止;恢复屏蔽字,禁止IRQ9IRQ9中断中断 OR AL,2 OR AL,2 OUT 0A1H,AL OUT 0A1H,AL ret ret1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能44IO8255: MOV DX,390HIO8255: MOV DX,390H IN AL,DX IN AL,DX INC DX INC
43、 DX OUT DX,AL OUT DX,AL MOV AL,61H MOV AL,61H ;指定中断结束命令;指定中断结束命令 OUT 0A0H,AL OUT 0A0H,AL MOV AL,62H MOV AL,62H OUT 20H,AL OUT 20H,AL POP AX POP AX ;修改返址;修改返址 INC AX INC AX INC AX INC AX PUSH AX PUSH AX IRET IRETbeginbegin endpendpcodecode ends ends end begin end begin1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的
44、功能三种工作方式的功能三种工作方式的功能45 这种工作方式,使外设可在单一的这种工作方式,使外设可在单一的8 8位数据位数据总线上,既能发送,又能接收数据总线上,既能发送,又能接收数据( (双向总线双向总线I/O)I/O)。方式。方式2 2只限于只限于A A组使用,它用双向总线端口组使用,它用双向总线端口A A和控和控制端口制端口C C中的中的5 5位进行操作,此时,端口位进行操作,此时,端口B B可用于方可用于方式式0 0或方式或方式1 1。端口。端口C C的其他的其他3 3位作位作I/OI/O用或作端口用或作端口B B控制状态信号线用。控制状态信号线用。. . 方式方式1.3 1.3 1.
45、3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能46方式方式2 2状态控制信号:状态控制信号:1.3 1.3 1.3 1.3 三种工作方式的功能三种工作方式的功能三种工作方式的功能三种工作方式的功能47INTEINTE1 1是输出的中断允许信号,由是输出的中断允许信号,由PCPC6 6的置位的置位/ /复位控制复位控制INTEINTE2 2是输入的中断允许信号,由是输入的中断允许信号,由PCPC4 4的置位的置位/ /复位控制复位控制其他信号的作用及意义与方式其他信号的作用及意义与方式1 1相同。相同。1.3 1.3 1.3 1.3 三种工作方式的功能三种工
46、作方式的功能三种工作方式的功能三种工作方式的功能48可编程并行接口可编程并行接口8255A8255A可编程计数器可编程计数器/ /定时器定时器82538253常用可编程接口芯片1 12 249可编程计数器可编程计数器可编程计数器可编程计数器/ / / /定时器定时器定时器定时器8253825382538253 IntelIntel系列的计数器系列的计数器/ /定时器电路为可编程序间定时器电路为可编程序间隔定时器隔定时器PIT(programmablePIT(programmable interval timer) interval timer),型号,型号为为82538253,改进型为,改进型
47、为82548254。82538253具有具有3 3个独立的功能完个独立的功能完全相同的全相同的1616位计数器,每个计数器都有位计数器,每个计数器都有6 6种工作方式,种工作方式,这这6 6种工作方式都可以由其控制字设定,因而能以种工作方式都可以由其控制字设定,因而能以6 6种种不同的工作方式满足不同的接口要求。不同的工作方式满足不同的接口要求。CPUCPU还可以随还可以随时更改它们的方式和计数值,并读取它们的计数状态。时更改它们的方式和计数值,并读取它们的计数状态。5082538253的内部结构:的内部结构:.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的
48、组成与接口信号的组成与接口信号51 数据总线缓冲器是三态、双向、数据总线缓冲器是三态、双向、8 8位的缓冲器,用作位的缓冲器,用作系统总线和系统总线和82538253的接口,根据的接口,根据CPUCPU的输入或输出指令实的输入或输出指令实现数据传送。数据总线缓冲器具有下面现数据传送。数据总线缓冲器具有下面3 3个基本功能。个基本功能。 (1) CPU (1) CPU向向82538253所写的控制字经数据总线缓冲器和所写的控制字经数据总线缓冲器和82538253的内部数据总线传送给控制字寄存器寄存。的内部数据总线传送给控制字寄存器寄存。 (2) CPU (2) CPU向某计数器所写的计数初值经它
49、和内部总线送向某计数器所写的计数初值经它和内部总线送到指定的计数器。到指定的计数器。 (3) CPU (3) CPU读取某个计数器的现行值时,该现行值经内部读取某个计数器的现行值时,该现行值经内部总线和缓冲器传送到系统的数据总线上,被总线和缓冲器传送到系统的数据总线上,被CPUCPU读入。读入。1. 1. 数据总线缓冲器数据总线缓冲器.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号52 读读/ /写逻辑接收系统总线的写逻辑接收系统总线的5 5个输入信号,根据这个输入信号,根据这5 5个信号产生整个器件操作的控制信号。通过片选个信
50、号产生整个器件操作的控制信号。通过片选信号信号CSCS来控制读来控制读/ /写逻辑的工作,在没有被系统逻写逻辑的工作,在没有被系统逻辑选中时,读辑选中时,读/ /写逻辑操作功能不会发生变化。根写逻辑操作功能不会发生变化。根据据A A1 1A A0 0的输入选择的输入选择3 3个计数器和控制字寄存器。通个计数器和控制字寄存器。通过过RDRD或或WRWR完成指定的读或写操作。完成指定的读或写操作。2. 2. 读读/ /写逻辑写逻辑.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号53 CSCS、RDRD、WRWR、A1A1和和A0A0
51、组合起来所产生的选择与操作组合起来所产生的选择与操作功能:功能:.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号54 控制字寄存器寄存数据缓冲器传送来的控制字。控制字寄存器寄存数据缓冲器传送来的控制字。控制字寄存器有控制字寄存器有3 3个个,都是,都是8 8位的寄存器,分别对应位的寄存器,分别对应于于3 3个计数器。个计数器。写入的控制字由该控制字的最高写入的控制字由该控制字的最高2 2位位确定送入哪个计数器的控制字寄存器寄存。确定送入哪个计数器的控制字寄存器寄存。各自的各自的控制字寄存器决定各自计数器的工作方式和所执行控制字寄
52、存器决定各自计数器的工作方式和所执行的操作。控制字寄存器只能写入,其值不能读出。的操作。控制字寄存器只能写入,其值不能读出。3. 3. 控制字寄存器控制字寄存器.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号55计数器计数器0 0、计数器、计数器1 1和计数器和计数器2 2是是3 3个独立的计数器,它个独立的计数器,它们的内部结构相同。们的内部结构相同。4.4.计数器计数器0 0、计数器、计数器1 1和计数器和计数器2 2.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接
53、口信号56 写写入入计计数数器器的的初初始始值值保保存存在在计计数数初初值值寄寄存存器器中中,由由CLKCLK脉脉冲冲的的一一个个上上升升沿沿和和一一个个下下降降沿沿将将其其装装入入减减1 1计计数数器器。减减1 1计计数数器器在在CLKCLK脉脉冲冲(GATE(GATE允允许许) )作作用用下下进进行行递递减减计计数数,直直至至计计数数值值为为0 0,输输出出OUTOUT信信号号。输输出出寄寄存存器器的的值值跟跟随随减减1 1计计数数器器变变化化,仅仅当当写写入入锁锁存存控控制制字字时时,它它锁锁存存减减1 1计计数数器器的的当当前前计计数数值值( (减减1 1计计数数器器可可继继续续计计数
54、数) ),CPUCPU读读取取后后,它它自自动动解解除除锁锁存存状状态态,又又跟跟随随减减1 1计计数数器器变变化化。所所以以在在计计数数过过程程中中,CPUCPU随随时时可可以以用用指指令令读读取取任任一一计计数数器器的的当当前前计计数数值值,这这一一操操作作对对计计数数没没有有影影响响。计计数数初初值值寄寄存存器器,减减1 1计计数数器器和和输出寄存器都可看作是输出寄存器都可看作是8 8位的寄存器对。位的寄存器对。.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号57 每每个个计计数数器器都都是是对对输输入入的的CLKCLK脉
55、脉冲冲按按二二进进制制或或十十进进制制的的预预置置值值开开始始递递减减计计数数。若若输输入入的的CLKCLK是是频频率率精精确确的的时时钟钟脉脉冲冲,则则计计数数器器可可作作为为定定时时器器。在在计计数数过过程程中中,计计数数器器受受门门控控信信号号GATEGATE的的控控制制。计计数数器器的的输输入入CLKCLK与与输输出出OUTOUT以以及及门门控控信信号号GATEGATE之之间间的的关关系系,取决于计数器的工作方式。取决于计数器的工作方式。.1.1.1.1 8253825382538253的组成与接口信号的组成与接口信号的组成与接口信号的组成与接口信号5882538253的计数器有的计数
56、器有6 6种工作方式:种工作方式: (1) (1)方式方式0-0-计数结束中断计数结束中断 (2) (2)方式方式1-1-硬件触发单拍脉冲硬件触发单拍脉冲 (3) (3)方式方式2-2-频率发生器频率发生器 (4) (4)方式方式3-3-方波发生器方波发生器 (5) (5)方式方式4-4-软件触发选通软件触发选通 (6) (6)方式方式5-5-硬件触发选通硬件触发选通.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系591.1.计数器的输出计数器的输出 OUTOUT6 6种工作方式的输
57、出信号如下图所示。种工作方式的输出信号如下图所示。.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系60 6 6种工作方式中,只有方式种工作方式中,只有方式0 0在写入控制字后输出在写入控制字后输出为低,其他为低,其他5 5种方式,都是在写入控制字后输出为高。种方式,都是在写入控制字后输出为高。 方式方式2 2、4 4、5 5的输出波形是相同的,都是宽度为一的输出波形是相同的,都是宽度为一个个CLKCLK周期的负脉冲。但方式周期的负脉冲。但方式2 2是连续工作,方式是连续工作,方式4
58、4由软由软件件( (设置计数值设置计数值) )触发启动,而方式触发启动,而方式5 5由门控脉冲触发启由门控脉冲触发启动。动。 方式方式5 5与方式与方式1 1的工作方式基本相同,但输出波形的工作方式基本相同,但输出波形不同,方式不同,方式1 1的输出为宽度是的输出为宽度是N N个个CLKCLK脉冲的低电平脉冲脉冲的低电平脉冲( (计数过程中输出为低计数过程中输出为低) ),而方式,而方式5 5的输出为宽度是的输出为宽度是1 1个个CLKCLK脉冲的负脉冲脉冲的负脉冲( (计数过程中输出为高计数过程中输出为高) )。.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输
59、出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系61 方式方式3 3和方式和方式2 2的输出都是周期性的,它们的主要的输出都是周期性的,它们的主要区别是,方式区别是,方式2 2在计数过程中输出始终为高,在计数过程中输出始终为高, 直至计直至计数器减到数器减到1 1时,时, 输出一个输出一个CLKCLK负脉冲后又恢复为高;负脉冲后又恢复为高;方方式式3 3在计数过程中输出有一半时间为高,另一半时间为在计数过程中输出有一半时间为高,另一半时间为低。低。所以,若计数值为所以,若计数值为N N,则方式,则方式3 3的输出为周期是的输出为周期是N N个个CLKCLK脉冲的
60、方波。脉冲的方波。如果计数值如果计数值N N是奇数,则输出是奇数,则输出(N+1)/2(N+1)/2个个CLKCLK脉冲周期为高,脉冲周期为高,(N-1)/2(N-1)/2个脉冲周期为低,即个脉冲周期为低,即OUTOUT为高,将比其为低多一个为高,将比其为低多一个CLKCLK周期时间。周期时间。.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系62 方式方式0 0之所以称之为计数结束中断,是因为方式之所以称之为计数结束中断,是因为方式0 0是专为是专为82538253工作在中断方式而设
61、计的,它的输出工作在中断方式而设计的,它的输出OUTOUT一一经确定方式以后就马上变低,直到计数到经确定方式以后就马上变低,直到计数到0 0才变高,而才变高,而其他方式的输出就不是这种情况。其他方式的输出就不是这种情况。82538253用于中断方式并用于中断方式并不仅限于方式不仅限于方式0 0,其他方式也是可以用于中断方式的。,其他方式也是可以用于中断方式的。82538253内部没有中断控制电路,也没有专用的中断请求引内部没有中断控制电路,也没有专用的中断请求引线,所以若要用于中断,则可用线,所以若要用于中断,则可用OUTOUT信号作为外部中断信号作为外部中断请求信号。请求信号。.2.2.2.
62、2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系63 任一种方式,只有写入计数值后才能开始计数,任一种方式,只有写入计数值后才能开始计数,方式方式0 0、2 2、3 3和和4 4都是在写入计数值后,计数过程就开都是在写入计数值后,计数过程就开始了,而方式始了,而方式1 1和和5 5需要外部触发启动,才开始计数。需要外部触发启动,才开始计数。 6 6种方式中,只有种方式中,只有方式方式2 2和和3 3是连续计数,其他是连续计数,其他4 4种种方式都是一次计数,要继续工作需要重新启动方式都是一次计数,
63、要继续工作需要重新启动,方式,方式0 0、4 4由写入计数值由写入计数值( (软件软件) )启动,方式启动,方式1 1、5 5要由外部信要由外部信号号( (硬件硬件) )启动。启动。2.2.计数器的工作与启动计数器的工作与启动.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系64 在方式在方式0 0和方式和方式4 4中,中,GATEGATE是电平起作用。计是电平起作用。计数过程受数过程受GATEGATE信号的控制,信号的控制,GATEGATE为高电平计数,低电为高电平计数,低电平停止计
64、数。平停止计数。 在方式在方式1 1和方式和方式5 5中,中,GATEGATE是上升沿起作用。在计是上升沿起作用。在计数过程中,只要数过程中,只要GATEGATE出现由低到高的跳变,计数的初出现由低到高的跳变,计数的初值就被装入减值就被装入减1 1 计数器,并从初值起继续计数。计数器,并从初值起继续计数。 在方式在方式2 2和方式和方式3 3中,中,GATEGATE信号的上升沿和电平均信号的上升沿和电平均起作用。起作用。高电平计数,低电平停止计数。上升沿则重高电平计数,低电平停止计数。上升沿则重新装入计数初值,继续计数新装入计数初值,继续计数。3.3.门控信号门控信号GATEGATE的作用的作
65、用.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系65 8253 8253可以在计数过程中写入计数值,但它的作可以在计数过程中写入计数值,但它的作用在不同方式时有所不同。方式用在不同方式时有所不同。方式0 0和方式和方式4 4是立即有是立即有效效( (即新的计数值写入减即新的计数值写入减1 1计数器计数器) ),方式,方式1 1和方式和方式5 5是外部触发后有效,方式是外部触发后有效,方式2 2和方式和方式3 3是本次计数结束是本次计数结束后有效。后有效。4.4.在计数过程中改变计数
66、值在计数过程中改变计数值.2.2.2.2计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系计数器的工作方式及其与输入输出的关系6682538253的控制字如下图所示。的控制字如下图所示。.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程67 (1)(1)计数器选择计数器选择(D(D7 7、D D6 6) )。 控控制制字字的的最最高高两两位位决决定定这这个个控控制制字字是是哪哪一一个个计计数数器器的的控控制制字字。由由于于三三个个计计数数器器的的工工作作是是完
67、完全全独独立立的的,所所以以每每个个计计数数器器都都有有一一个个控控制制字字。而而三三个个控控制制字字都都由由同同一一地地址址( (控控制制字字寄寄存存器器地地址址) )写写入入,因因而而由由控控制制字字的的D D7 7、D D6 6两两位位来来指指定定该该控控制制字字是是哪哪个个计计数数器器的的控控制制字字。在在控控制制字字中中的的计计数数器器选选择择与与计计数数器器的的地地址址是是两两回回事事,不不能能混混淆淆。计计数数器器的的地地址址用用作作CPUCPU向向计计数数器写初值,或从计数器读取计数器的当前值。器写初值,或从计数器读取计数器的当前值。.3.3.3.382538253825382
68、53的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程68 (2)(2)数据读数据读/ /写格式写格式(D(D5 5、D D4 4) )。 CPUCPU向向计计数数器器写写入入初初值值和和读读取取它它们们的的当当前前状状态态时时,有有几几种种不不同同的的格格式式。读读/ /写写数数据据时时,是是读读/ /写写8 8位位数数据据还还是是1616位位数数据据;若若是是8 8位位数数据据,可可以以令令D D5 5D D4 4=01=01,只只读读/ /写写低低8 8位位,则则高高8 8位位自自动动置置0 0;若若是是1616位位数数据据,而而低低8 8位位为为0 0,则
69、则可可令令D D5 5D D4 4=10=10,只只读读/ /写写高高8 8位位,低低8 8位位就就自自动动为为0 0;若若令令D D5 5D D4 4=11=11时时,就就先先读读/ /写写低低8 8位位,后后读读/ /写写高高8 8位位。在在读读取取1616位位计计数数值值时时,可可令令D D5 5D D4 4=00=00,则则把把写写控控制制字字时时的计数值锁存,以后再读取。的计数值锁存,以后再读取。 .3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程69 (3)(3)工作方式工作方式(D(D3 3、D D2
70、2、D D1 1) )。 8253 8253的每个计数器的的每个计数器的6 6种不同的工作方式,由这种不同的工作方式,由这3 3位决定位决定。 (4) (4)数制选择数制选择(D(D0 0) )。 82538253的的每每个个计计数数器器有有两两种种计计数数制制:二二进进制制和和十十进进制制,由由这这位位决决定定。在在二二进进制制计计数数时时(D(D0 0=0)=0) ,写写入入的的初初值值的的范范围围为为0000H0000HFFFFHFFFFH,其其中中0000H0000H是是最最大大值值,代代表表6553665536。在在十十进进制制计计数数时时(D(D0 0=1)=1) ,写写入入的的初
71、初值值的的范范围围为为0000H0000H9999H9999H,其其中中0000H0000H是是最最大大值,代表值,代表1000010000。.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程70 要要使使用用82538253必必须须首首先先进进行行初初始始化化编编程程,初初始始化化编编程程的的步步骤骤为为先先写写入入计计数数器器的的控控制制字字,然然后后写写入入计计数数器器的的计计数数初初值值。控控制制字字和和计计数数初初值值,是是通通过过两两个个不不同同的的端端口口地地址址写写入入的的。任任一一计计数数器器的的控
72、控制制字字都都是是写写入入控控制制字字寄寄存存器器的的端端口口地地址址,由由控控制制字字中中的的D D7 7、D D6 6来来确确定定是是哪哪一一个个计计数数器器的的控控制制字字;而而计计数数初初值值是是由由各各个个计计数数器器的的端端口口地地址址写写入入的的。一一片片82538253具具有有4 4个个端端口口地地址址,由由82538253的的A A1 1和和A A0 0两两根根引引线线来来区区别别:A A1 1、A A0 0为为1111是是控控制制字字寄寄存存器器的的端端口口地地址址,0000、0101和和1010则则分分别别是是计计数数器器0 0、计计数器数器1 1和计数器和计数器2 2的
73、端口地址的端口地址。.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程71 例如:例如:用计数器用计数器0 0,工作在方式,工作在方式1 1,按十进制计数,计数,按十进制计数,计数值为值为5080H5080H。设该片。设该片82538253的端口地址为的端口地址为388H388H38BH38BH,写,写出初始化程序段。出初始化程序段。MOV DX,38BHMOV DX,38BHMOV AL,33H ;00 11 001 0MOV AL,33H ;00 11 001 0OUT DX,ALOUT DX,ALMOV DX,
74、388HMOV DX,388HMOV AL,80HMOV AL,80HOUT DX,ALOUT DX,ALMOV AL,50HMOV AL,50HOUT DX,ALOUT DX,AL.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程72 82538253任一计数器的计数值,任一计数器的计数值,CPUCPU可用指令读取。可用指令读取。CPUCPU读到的是执行读取指令瞬间计数器的现行值。但读到的是执行读取指令瞬间计数器的现行值。但82538253的计数器是的计数器是1616位的,所以要分两次读至位的,所以要分两次读至CP
75、UCPU,因此,因此,若不设法锁存的话,则在读数过程中,计数值可能已若不设法锁存的话,则在读数过程中,计数值可能已变化了。要锁存有两种办法:变化了。要锁存有两种办法: (1) (1)利用利用GATEGATE信号使计数过程暂停。信号使计数过程暂停。 (2) (2)向向82538253输送一个控制字,令输送一个控制字,令82538253的计数值在出的计数值在出寄存器锁存。寄存器锁存。.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程73例如:例如:读取计数器读取计数器1 1的的1616位计数值,存入位计数值,存入CXCX
76、中,其程中,其程序段为序段为: : MOV DX,38BHMOV DX,38BH MOV AL,40H MOV AL,40H ;计数器;计数器1 1的锁存命令的锁存命令 OUT DX,ALOUT DX,AL MOV DX,389H MOV DX,389H IN AL,DX IN AL,DX MOV CL,AL MOV CL,AL IN AL,DX IN AL,DX MOV CH,AL MOV CH,AL.3.3.3.38253825382538253的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程的控制字和初始化编程74 例例4 4 8253 8253在在IBM PC XTIBM
77、PC XT中的应用。中的应用。.4.4.4.48253825382538253的应用的应用的应用的应用IBM PC XTIBM PC XT微型计算机中微型计算机中82538253的部分线路的部分线路 75 由译码电路可知计数器和控制字寄存器的端口地址由译码电路可知计数器和控制字寄存器的端口地址为为40H40H5FH5FH,BIOSBIOS取为计数器取为计数器040H040H,计数器,计数器141H141H,计数器计数器242H242H,控制字寄存器,控制字寄存器43H43H。 3 3个计数器的输入时钟频率均为个计数器的输入时钟频率均为1.19MHz1.19MHz。 计数器计数器0 0输出作为输
78、出作为18.2Hz18.2Hz方波发生器。用来输出方波方波发生器。用来输出方波作为中断控制器作为中断控制器82598259的第的第0 0号中断信号线号中断信号线(IRQ(IRQ0 0) )的输入。的输入。计数器计数器0 0的计数值为:的计数值为: 1.19M/18.2=65384=21.19M/18.2=65384=21616 即送即送1616位的位的0 0,故其控制字为,故其控制字为36H36H。.4.4.4.48253825382538253的应用的应用的应用的应用76对计数器对计数器0 0初始化的程序段如下:初始化的程序段如下: MOV AL MOV AL,36H36H OUT 43H
79、OUT 43H,ALAL MOV AL MOV AL,0 0 OUT 40H OUT 40H,ALAL OUT 40H OUT 40H,ALAL.4.4.4.48253825382538253的应用的应用的应用的应用77 计数器输出间隔为计数器输出间隔为15S15S的负脉冲。该脉冲的的负脉冲。该脉冲的上升沿触发上升沿触发D D触发器。使它对触发器。使它对DMADMA控制器控制器 82378237的第的第0 0号号DMADMA请求信号线请求信号线DRQDRQ0 0发出发出DMADMA请求信号,请求信号,82378237则依则依据这个请求信号对动态据这个请求信号对动态RAMRAM进行刷新。计数器进
80、行刷新。计数器1 1的计的计数值为:数值为: 1.19 1.1910106 6/ /(1/151/15)1010-6-6=18=18 故其控制字为故其控制字为54H54H。对计数器。对计数器1 1的初始化程序段如下:的初始化程序段如下: MOV AL MOV AL,54H54H OUT 43H OUT 43H,ALAL MOV AL MOV AL,1818 OUT 41H OUT 41H,ALAL.4.4.4.48253825382538253的应用的应用的应用的应用78 计数器计数器2 2输出不同频率的方波,经电流驱动输出不同频率的方波,经电流驱动器器7547775477放大,推动扬声器发出
81、不同频率的声响。放大,推动扬声器发出不同频率的声响。计数器计数器2 2的计数值为可变值。随蜂鸣器声响频率的的计数值为可变值。随蜂鸣器声响频率的高低而变,程序设计中让它的取值范围由高低而变,程序设计中让它的取值范围由1 1到到6553565535,即,即1616位二进制数,故其控制字为位二进制数,故其控制字为B6HB6H。 .4.4.4.48253825382538253的应用的应用的应用的应用79entry parametersentry parameters:DH= Number of long tones to beepDH= Number of long tones to beepDL=
82、 Number of short tones to beepDL= Number of short tones to beeperr-beep procerr-beep proc PUSHF PUSHF ;保存所有的标志位;保存所有的标志位 CLI CLI ;关中断;关中断 PUSH DS PUSH DS MOV AX MOV AX,DATA DATA ;DSDS指向数据段指向数据段 MOV DS MOV DS,AXAX OR DH OR DH,DH DH ;是否要鸣长音;是否要鸣长音 JZ G3 JZ G3 ;不鸣长音,去鸣短音;不鸣长音,去鸣短音 下面是下面是IBM PC XTIBM PC
83、 XT机机BIOSBIOS中的开机诊断子程序。该子程序让蜂中的开机诊断子程序。该子程序让蜂鸣器鸣一声长音鸣器鸣一声长音(3(3秒秒) )和一声短音和一声短音(0.5(0.5秒秒) ),以指出系统板或,以指出系统板或RAMRAM模块或者模块或者CRTCRT显示器有错。显示器有错。.4.4.4.48253825382538253的应用的应用的应用的应用80G1G1: MOV BLMOV BL,6 6 ;蜂鸣常数,一次鸣响延续时;蜂鸣常数,一次鸣响延续时0.50.5BLBL CALL BEEP CALL BEEP ;调用鸣响子程序;调用鸣响子程序G2G2: LOOP G2 LOOP G2 ;鸣响间隔
84、,等待;鸣响间隔,等待500mS500mS DEC DH DEC DH JNZ G1 JNZ G1 ;长音没鸣响完,继续;长音没鸣响完,继续 CMP MFG-TST CMP MFG-TST,1 1 ;为制造测试模式?;为制造测试模式? JNZ G3 JNZ G3 ;为制造测试模式,继续鸣响短音;为制造测试模式,继续鸣响短音 MOV AL MOV AL,0DH 0DH ;停止;停止LEDLED闪闪 OUT PORT-B OUT PORT-B,AL AL ;PORT-B=61HPORT-B=61H,即,即8255B8255B端口端口 JMP G1 JMP G1.4.4.4.482538253825
85、38253的应用的应用的应用的应用81G3G3: MOV BLMOV BL,1 1 ;短音鸣响时间为;短音鸣响时间为0.50.51=0.5S1=0.5S CALL BEEP CALL BEEPG4G4: LOOP G4LOOP G4 DEC DL DEC DL JNZ G3 JNZ G3 ;短音没鸣响完,继续;短音没鸣响完,继续G5G5: LOOP G5 LOOP G5 ;短音鸣响完,延迟;短音鸣响完,延迟1S1S返回返回G6G6: LOOP G6LOOP G6 POP DS POP DS POPF POPF RET RETerr-beep err-beep endpendp.4.4.4.48
86、253825382538253的应用的应用的应用的应用82鸣响子程序:鸣响子程序:beep procbeep proc MOV AL MOV AL,0B6H 0B6H ;计数器;计数器2 2的控制字的控制字 OUT 43H OUT 43H,ALAL MOV AX MOV AX,533H 533H ;1000Hz1000Hz分频值,分高低字节两次送入分频值,分高低字节两次送入 OUT 42H OUT 42H,ALAL MOV AL MOV AL,AHAH OUT 42H OUT 42H,ALAL IN AL IN AL,61H 61H ;读取;读取8255B8255B端口的状态端口的状态 MOV
87、 AH MOV AH,ALAL OR AL OR AL,3 3.4.4.4.48253825382538253的应用的应用的应用的应用83 OUT 61HOUT 61H,AL AL ;打开蜂鸣器;打开蜂鸣器 SUB CX SUB CX,CX CX ;设置等待;设置等待500ms500ms的常数值的常数值G7G7: LOOP G7LOOP G7 DEC BL DEC BL ;等;等0.5s0.5sBLBL JNZ G7 JNZ G7 MOV AL MOV AL,AH AH ;恢复;恢复8255B8255B端口的原来值,关蜂鸣器端口的原来值,关蜂鸣器 OUT 61H OUT 61H,ALAL RE
88、T RETbeep beep endpendp.4.4.4.48253825382538253的应用的应用的应用的应用84 例例5 5 对外部事件计数对外部事件计数1010次。次。 计数电路如下图所示,由图可知,使用计数电路如下图所示,由图可知,使用的是计数器的是计数器0 0。.4.4.4.48253825382538253的应用的应用的应用的应用85控制程序如下:控制程序如下:stack segment stack stack segment stack stackstack dwdw 32 dup(0) 32 dup(0)stack endsstack endsdata segmentda
89、ta segmentDA1 DB DA1 DB WAIT LOADWAIT LOAD ,0AH0AH,0DH0DH, $ $ DA2 DB DA2 DB PLEASE INPUTPLEASE INPUT ,0AH0AH,0DH0DH, $ $ DA3 DB DA3 DB PROGRAM TERMINATED NORMALLYPROGRAM TERMINATED NORMALLY ,0AH0AH,0DH0DH, $ $ data endsdata endscode segmentcode segmentbegin proc farbegin proc far assume assume ssss
90、:stackstack,cscs:codecode,dsds:datadata push push dsds.4.4.4.48253825382538253的应用的应用的应用的应用86 sub ax sub ax,axax push ax push ax movmov ax ax,datadata movmov dsds,axax MOV DX MOV DX,383H 383H ;82538253计数器的方式计数器的方式0 0,BCDBCD计数计数 MOV AL MOV AL,11H11H OUT DX OUT DX,ALAL MOV DX MOV DX,380H380H MOV AL MOV
91、 AL,10H10H OUT DX OUT DX,ALAL MOV DX MOV DX,OFFSET DA1OFFSET DA1 MOV AH MOV AH,9 9 INT 21H INT 21H MOV DX MOV DX,380H 380H .4.4.4.48253825382538253的应用的应用的应用的应用87LOADLOAD: IN ALIN AL,DXDX CMP AL CMP AL,10H 10H ;等待单稳输入脉冲,装入计数初值;等待单稳输入脉冲,装入计数初值 JNE LOAD JNE LOAD MOV DX MOV DX,OFFSET DA2OFFSET DA2 MOV A
92、H MOV AH,9 9 INT 21H INT 21H MOV DX MOV DX,380H380HCONTINCONTIN: IN ALIN AL,DXDX CMP AL CMP AL,0 0 ;等待单稳输入;等待单稳输入1010个脉冲个脉冲 JNZ CONTIN JNZ CONTIN MOV DX MOV DX,OFFSET DA3OFFSET DA3 MOV AH MOV AH,9 9 INT 21H INT 21H ret retbegin begin endpendpcode endscode ends end begin end begin.4.4.4.4825382538253
93、8253的应用的应用的应用的应用88 将将OUTOUT0 0接至接至80x8680x86微机的微机的IRQIRQ9 9, ,使用中断编程的程序如下:使用中断编程的程序如下:stack segment stack stack segment stack stackstack dwdw 32 dup(0) 32 dup(0)stack endsstack endsdata segmentdata segmentDA1 DA1 DB DB WAIT LOADWAIT LOAD ,0AH0AH,0DH0DH, $ $ DA2 DA2 DB DB PLEASE INPUTPLEASE INPUT ,0A
94、H0AH,0DH0DH, $ $ DA3 DA3 DB DB PROGRAM TERMINATED NORMALLYPROGRAM TERMINATED NORMALLY ,0AH0AH,0DH0DH, $ $ data ends.4.4.4.48253825382538253的应用的应用的应用的应用89code segmentcode segmentbegin proc farbegin proc far assume assume ssss:stackstack,cscs:codecode,dsds:datadata push push dsds sub ax sub ax,axax pu
95、sh ax push ax MOV ES MOV ES,AXAX movmov ax ax,datadata movmov dsds,axax MOV DX MOV DX,383H 383H ;82538253计数器的方式计数器的方式0 0,BCDBCD计数计数 MOV AL MOV AL,11H11H OUT DX OUT DX,ALAL.4.4.4.48253825382538253的应用的应用的应用的应用90 MOV DXMOV DX,380H380H MOV AL MOV AL,10H10H OUT DX OUT DX,ALAL MOV DX MOV DX,OFFSET DA1OFFS
96、ET DA1 MOV AH MOV AH,9 9 INT 21H INT 21H MOV DX MOV DX,380H380HLOADLOAD: IN ALIN AL,DXDX CMP AL CMP AL,10H 10H ;等待单稳输入脉冲,装入计数初值;等待单稳输入脉冲,装入计数初值 JNE LOAD JNE LOAD MOV AX MOV AX,SEG IS8253 SEG IS8253 ;填写中断向量表;填写中断向量表 MOV ES MOV ES:01C6H01C6H,AXAX.4.4.4.48253825382538253的应用的应用的应用的应用91 MOV AXMOV AX,OFFS
97、ET IS8253OFFSET IS8253 MOV ES MOV ES:01C4H01C4H,AXAX IN AL IN AL,0A1H 0A1H ;改变屏蔽字,允许;改变屏蔽字,允许IRQIRQ9 9中断中断 AND AL AND AL,0FDH0FDH OUT 0A1H OUT 0A1H,ALAL MOV DX MOV DX,OFFSET DA2OFFSET DA2 MOV AH MOV AH,9 9 INT 21H INT 21H JMP $ JMP $ ;等待单稳输入;等待单稳输入1010个脉冲个脉冲 MOV DX MOV DX,OFFSET DA3OFFSET DA3 MOV AH
98、 MOV AH,9 9 INT 21H INT 21H ret ret.4.4.4.48253825382538253的应用的应用的应用的应用92IS8253IS8253: MOV ALMOV AL,61H 61H ;指定中断结束命令;指定中断结束命令 OUT 0A0H OUT 0A0H,ALAL MOV AL MOV AL,62H62H OUT 20H OUT 20H,ALAL IN AL IN AL,0A1H 0A1H ;关屏蔽,禁止;关屏蔽,禁止IRQIRQ9 9中断中断 OR AL OR AL,2 2 OUT 0A1H OUT 0A1H,ALAL POP AX POP AX ;修改返址;修改返址 INC AX INC AX INC AX INC AX PUSH AX PUSH AX IRET IRETbegin begin endpendpcode endscode ends end begin end begin.4.4.4.48253825382538253的应用的应用的应用的应用