西南交通大学微机原理与微机接口教案2016版_第1页
西南交通大学微机原理与微机接口教案2016版_第2页
西南交通大学微机原理与微机接口教案2016版_第3页
西南交通大学微机原理与微机接口教案2016版_第4页
西南交通大学微机原理与微机接口教案2016版_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南交通大学信息科学与技术学院 第9章 可编程接口芯片第第9 9章章 可编程接口芯片可编程接口芯片本章主要内容本章主要内容 可编程接口芯片概述可编程接口芯片概述1 可编程并行接口芯片可编程并行接口芯片8255A2 可编程定时器可编程定时器/计数器计数器82533 可编程串行通信接口芯片可编程串行通信接口芯片8251A4第第9 9章章 可编程接口芯片可编程接口芯片9.1 9.1 可编程接口芯片概述可编程接口芯片概述可编程接口芯片,通过软件编程来可编程接口芯片,通过软件编程来设置设置芯片的工作方式,芯片的工作方式,使一个芯片具有灵活的多种工作方式使一个芯片具有灵活的多种工作方式,从而,从而提高每个

2、芯片提高每个芯片的功能的功能。本章主要介绍几种常用可编程接口芯片本章主要介绍几种常用可编程接口芯片:l 可编程并行接口芯片可编程并行接口芯片8255A8255Al 可编程定时器可编程定时器/ /计数器计数器82538253l 可编程串行通信接口芯片可编程串行通信接口芯片8251A8251A第第9 9章章 可编程接口芯片可编程接口芯片在输入/输出为并行数据方式的外设与CPU之间可靠的中转数据 扩展微机挂接并口外设数量的能力9.2.1 通用并行接口通用并行接口1. 通用并行接口的主要作用:通用并行接口的主要作用:9.2 可编程并行接口芯片8255A第第9 9章章 可编程接口芯片可编程接口芯片第第9

3、 9章章 可编程接口芯片可编程接口芯片2 .通用通用并行接口的一般结构:并行接口的一般结构:多个可编程并行数据通道(端口)。每个端口内含一个并行数据输入缓冲器(暂存外设送给CPU 的数据)和一个并行数据输出缓冲器(暂存CPU送给外设的数据) 控制寄存器(存放CPU命令字) 状态寄存器(记录外设或并口本身的工作状态)内部地址译码电路 第第9 9章章 可编程接口芯片可编程接口芯片第第9 9章章 可编程接口芯片可编程接口芯片3. 并行接口芯片的主要引脚并行接口芯片的主要引脚第第9 9章章 可编程接口芯片可编程接口芯片(1)与与外设一侧相连的引脚:外设一侧相连的引脚: 与外设传送数据的数据线(通常为多

4、组8位的双向I/O引脚线) 用于协调并行端口与外设数据交换速度的联络线:l 从外设输入数据时需要: “外设数据已送出”信号(外设送并口) “输入寄存器空”信号(并口送外设)l 向外设输出数据时需要: “输出寄存器满”信号(并口送外设) “外设接收就绪”信号(外设送并口)第第9 9章章 可编程接口芯片可编程接口芯片(2)CPU(系统总线)一侧相连的引脚(系统总线)一侧相连的引脚与CPU(数据总线)传送数据的数据线(通常为8位: D7D0) 并口工作状态引脚READY或中断请求引脚INTRCPU对并口的读/写信号引脚 并口芯片的片选信号引脚(由CPU高位地址线经译码后给出) 并口内部寄存器选择引脚

5、线(通常由CPU低位地址线给出) 使并口芯片复位的引脚 第第9 9章章 可编程接口芯片可编程接口芯片9.2.2 8255A9.2.2 8255A的内部结构及引脚功能的内部结构及引脚功能1.8255A1.8255A的内部结构的内部结构8255A是是Intel公司生产的可编程并行公司生产的可编程并行I/O接口芯片,有接口芯片,有3个个8位并行位并行I/O口,共口,共24位,其各端口工作方式由软件编程设定。位,其各端口工作方式由软件编程设定。CS第第9 9章章 可编程接口芯片可编程接口芯片l 含3个独立的8位并行输入/输出端口,各端口均具有数据的输出和输入能力l 可通过编程,设置各端口工作在某一确定

6、状态下特点特点A组B组 端口A端口C的高4位结构结构端口B端口C的低4位第第9 9章章 可编程接口芯片可编程接口芯片 8255A由数据总线缓冲器,数据端口A、端口B和端口C,A组和B组控制电路和读/写控制逻辑四部分组成。第第9 9章章 可编程接口芯片可编程接口芯片2.8255A2.8255A的引脚功能的引脚功能 并口A:8根引脚(PA7PA0) 并口B:8根引脚(PB7PB0) 并口C:8根引脚(PC7PC0)第第9 9章章 可编程接口芯片可编程接口芯片 数据线:8根(D7D0) 片内寄存器选择线:2根(A1,A0) 读/写信号线:2根(RD和WR) 片选信号线:1根(CS) 复位信号线:1根

7、(RESET) 电源线:1根(VCC) 地线:1根(GND) 第第9 9章章 可编程接口芯片可编程接口芯片3. .8255内部端口的寻址内部端口的寻址第第9 9章章 可编程接口芯片可编程接口芯片8255与系统的连接示意图与系统的连接示意图D0D7WRRDA1A0CSDBIOWIORA1A0译码器译码器8255A口口B口口C口口D0D7外外 设设第第9 9章章 可编程接口芯片可编程接口芯片6.2.2 8255的工作方式:的工作方式:方式0基本输入/输出方式方式1单项选通工输入/输出方式方式2双向传送方式9.2.3 8255A9.2.3 8255A的工作方式的工作方式l A口可工作于方式0、方式1

8、、方式2l B口可工作于方式0、方式1l C口只能工作于方式0其中:其中:第第9 9章章 可编程接口芯片可编程接口芯片方式方式0:相当于三个独立的相当于三个独立的8 8位简单接口位简单接口各端口既可设置为输入口,也可设置为输出口,但不能各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出同时实现输入及输出C C端口可以是一个端口可以是一个8 8位的简单接口,也可以分为两个独立位的简单接口,也可以分为两个独立的的4 4位端口位端口常用于连接简单外设(适于无条件或查询方式常用于连接简单外设(适于无条件或查询方式)方式方式0的应用:的应用:常使常使A A端口和端口和B B端口作为端口作

9、为8 8位数据的输入或输出口,使位数据的输入或输出口,使C C口口的某些位作状态输入的某些位作状态输入第第9 9章章 可编程接口芯片可编程接口芯片方式方式1:三个数据端口分为三个数据端口分为A A、B B两组,分别称为两组,分别称为A A组控制和组控制和B B组控制组控制。端口端口A A、端口端口B B作数据输入作数据输入或输出口或输出口,端口端口C C作为联络控制信作为联络控制信号,被号,被分成两部分,一部分作为端口分成两部分,一部分作为端口A A和端口和端口B B的联络信号,的联络信号,另一部分仍可作为基本的输入输出口。另一部分仍可作为基本的输入输出口。 A A口、口、B B口在作为口在作

10、为输入输入和和输出输出时的选通控制信号不同。时的选通控制信号不同。第第9 9章章 可编程接口芯片可编程接口芯片方式方式1:三个数据端口分为三个数据端口分为A A、B B两组,分别称为两组,分别称为A A组控制和组控制和B B组控制组控制。端口端口A A、端口端口B B作数据输入作数据输入或输出口或输出口,端口端口C C作为联络控制信作为联络控制信号,被号,被分成两部分,一部分作为端口分成两部分,一部分作为端口A A和端口和端口B B的联络信号,的联络信号,另一部分仍可作为基本的输入输出口。另一部分仍可作为基本的输入输出口。 A A口、口、B B口在作为口在作为输入输入和和输出输出时的选联络制信

11、号不同。时的选联络制信号不同。方式方式1的应用:的应用:方式方式1 1主要用于中断控制方式下的输入输出主要用于中断控制方式下的输入输出C C口的口的8 8位除用作选通信号外,其余位可工作于方式位除用作选通信号外,其余位可工作于方式0 0下,下,作为输入或输出口作为输入或输出口第第9 9章章 可编程接口芯片可编程接口芯片1 1)方式方式1 1输入输入方式方式1输入时序输入时序第第9 9章章 可编程接口芯片可编程接口芯片2 2)方式方式1 1输输出出方式方式1输出时序输出时序第第9 9章章 可编程接口芯片可编程接口芯片方式方式2:双向输入输出方式双向输入输出方式可以既作为输入口,又作为输出口可以既

12、作为输入口,又作为输出口只有只有A A端口可工作在方式端口可工作在方式2 2下下方式方式2的应用:的应用:用于用于可采用查询可采用查询方式方式或中断控制方式或中断控制方式当当A A口工作于方式口工作于方式2 2时,时,B B口可工作于方式口可工作于方式1 1(此时(此时C C口口的所有位都用作选通控制信号的输入输出),也可工的所有位都用作选通控制信号的输入输出),也可工作于方式作于方式0 0(此时(此时C C口的剩余位也可工作于方式口的剩余位也可工作于方式0 0)第第9 9章章 可编程接口芯片可编程接口芯片l 当端当端A A口方式口方式2 2和端口和端口B B方式方式1 1时时,端口端口C C

13、各位各位的功能如图所示,的功能如图所示,PCPC7 7PCPC3 3作为端口作为端口A A的联的联络信号,络信号,PCPC2 2PCPC0 0作为作为端口端口B B的联络信号。的联络信号。l 当端口当端口A A工作于方式工作于方式2 2,端口,端口B B工作于方式工作于方式0 0时,时,PCPC7 7PCPC3 3作为端口作为端口A A的联络信号,的联络信号,PCPC2 2PCPC0 0可工作于方式可工作于方式0 0。第第9 9章章 可编程接口芯片可编程接口芯片l D7=1:对控制寄存器设置:对控制寄存器设置;l D7=0:用于对:用于对C端口状态进行设定。端口状态进行设定。9.2.4 825

14、5A9.2.4 8255A的编程的编程82558255只有一个控制寄存器只有一个控制寄存器,如何如何写入写入两个控制两个控制字字? 通过通过8位命令字的最高位加以区分:位命令字的最高位加以区分:方式控制字:方式控制字:设置设置A口和口和B口的工作方式,指定它们作为口的工作方式,指定它们作为输输入口还是输出口入口还是输出口。端口端口C的状态控制字的状态控制字:设置设置C口指定位置口指定位置“1 1”或请或请“0 0”。 第第9 9章章 可编程接口芯片可编程接口芯片1.8255A1.8255A的控制字的控制字1 1)方式选择控制字方式选择控制字第第9 9章章 可编程接口芯片可编程接口芯片2 2)端

15、口端口C C置位置位/ /复位控制字复位控制字第第9 9章章 可编程接口芯片可编程接口芯片【例【例9-19-1】在在80868086系统中,设系统中,设8255A8255A的的A A口输出,口输出,B B口输入,口输入,PCPC1 1置位,置位,PCPC2 2复位。已知:复位。已知:82558255端口地址为端口地址为60H60H63H63H,试编程对,试编程对8255A8255A进行初始化。进行初始化。 解解:根据题意,根据题意,82558255工作方式控制字为:工作方式控制字为: 8255A 8255A初始化程序如下:初始化程序如下: MOV AL,82H MOV AL,82H ; ;方式

16、控制字方式控制字10000010B=82H10000010B=82H OUT 63H,AL OUT 63H,AL ; ;将控制字送入将控制字送入8255A8255A控制端口,即控制寄存器中控制端口,即控制寄存器中 MOV AL,03H MOV AL,03H ; ;C C口置位控制字口置位控制字00000011B=03H00000011B=03H,设置,设置PCPC1 1=1=1 OUT 63H,AL OUT 63H,AL ; ;将控制字送入将控制字送入8255A8255A控制端口,即控制控制端口,即控制寄存器中寄存器中 MOV AL,04H MOV AL,04H ; ;C C口置位控制字口置位

17、控制字00000100B=04H00000100B=04H,设置,设置PCPC2 2=0=0 OUT 63H,AL OUT 63H,AL ; ;将控制字送入将控制字送入8255A8255A控制端口,即控制寄存器中控制端口,即控制寄存器中2.8255A的初始化编程第第9 9章章 可编程接口芯片可编程接口芯片9.2.5 8255A 9.2.5 8255A 的应用举例的应用举例【例【例9-29-2】设设8255A8255A的的A A口和口和B B口工作在方式口工作在方式0 0,A A口作为输入端口作为输入端口,接有口,接有2 2个开关;个开关;B B口为输出端口,接有口为输出端口,接有8 8个发光二

18、极管。系个发光二极管。系统硬件电路如图所示,不断扫描开关统硬件电路如图所示,不断扫描开关KiKi,当开关,当开关K0K0闭合时,闭合时,点亮点亮LED0LED0、LED2LED2、LED4LED4、LED6LED6,其它,其它LEDLED暗;当开关暗;当开关K1K1闭合时闭合时,点亮,点亮LED1LED1、LED3LED3、LED5LED5、LED7LED7,其它,其它LEDLED暗;当开关暗;当开关K0K0和和K1K1同时闭合时退出。设同时闭合时退出。设8255A8255A端口端口A A、端口、端口B B、端口、端口C C及控制端口及控制端口的地址分别为的地址分别为200H200H203H2

19、03H。试编写程序。试编写程序。第第9 9章章 可编程接口芯片可编程接口芯片第第9 9章章 可编程接口芯片可编程接口芯片解:解:首先确定工作方式控制字。根据题意,首先确定工作方式控制字。根据题意,A A口为输入端口,口为输入端口,B B口输出口输出端口,均工作在方式端口,均工作在方式0 0下,端口下,端口C C没使用,设没有用到的控制字中对应没使用,设没有用到的控制字中对应位设置为位设置为0 0,所以,所以8255A8255A的控制字为:的控制字为: CODE SEGMENT CODE SEGMENT ASSUME CS:CODE ASSUME CS:CODE START:MOVSTART:M

20、OV AL,90HAL,90H ; 8255; 8255初始化初始化 MOV MOV DX,203HDX,203H AGAIN:MOV AGAIN:MOV DX,200H DX,200H IN AL,DX IN AL,DX TEST AL,03H TEST AL,03H ; ; 检测检测K K0 0 K K1 1 JZ EXIT JZ EXIT TEST AL,01H TEST AL,01H ;检测;检测K K0 0 JZ DISP_0JZ DISP_0第第9 9章章 可编程接口芯片可编程接口芯片 TEST AL,02H TEST AL,02H ;检测;检测K K1 1 JZ DISP_1JZ

21、 DISP_1 JMP AGAINJMP AGAINDIAP_0:DIAP_0:MOV AL,55H MOV AL,55H ;偶位上;偶位上LEDLED亮,奇位上亮,奇位上LEDLED暗暗 MOV DX,201H MOV DX,201H OUT DX,ALOUT DX,AL JMP AGAINJMP AGAINDIAP_1:DIAP_1:MOV AL,0AAH MOV AL,0AAH ;奇位上;奇位上LEDLED亮,偶位上亮,偶位上LEDLED暗暗 MOV DX,201HMOV DX,201H OUT DX,ALOUT DX,AL JMP AGAIN JMP AGAIN EXIT: MOV A

22、H,4CHEXIT: MOV AH,4CH INT 21H INT 21H CODE CODEENDSENDS END START END START第第9 9章章 可编程接口芯片可编程接口芯片【例【例9-39-3】硬件电路连线如图所示,硬件电路连线如图所示,8086CPU8086CPU通过通过8255A8255A同键盘相连,试同键盘相连,试编程序,扫描键盘按键,将按键对应的数值显示在七段编程序,扫描键盘按键,将按键对应的数值显示在七段LEDLED上。设上。设8255A8255A的端口地址为的端口地址为80H80H83H83H。第第9 9章章 可编程接口芯片可编程接口芯片解:解:通过硬件电路图

23、,可以判断出通过硬件电路图,可以判断出8255A8255A口工作于方式口工作于方式0 0输出,输出,B B口未用,口未用,C C口低口低4 4位输入,位输入,C C口高口高4 4位输出,工作方式控制字是:位输出,工作方式控制字是: 共阴极共阴极LEDLED七段数码管显示的字符七段数码管显示的字符0 0F F的段码如表的段码如表9-19-1所示所示:显示字符显示字符0123456789ABCDEF段码段码(H) 3F065B4F666D7D077F6F777C395E7971第第9 9章章 可编程接口芯片可编程接口芯片程序流程如图程序流程如图扫扫描描键键盘盘防防抖抖动动逐逐列列扫扫描描键键盘盘逐

24、逐行行扫扫描描键键盘盘第第9 9章章 可编程接口芯片可编程接口芯片A_PORT A_PORT EQU 80H EQU 80HB_PORT B_PORT EQU 81H EQU 81HC_PORTC_PORT EQU 82H EQU 82HCT_PORT CT_PORT EQU 83H EQU 83HDATADATA SEGMENT SEGMENTTAB1TAB1 DB DB3FH,06H,5BH,4FH,66H,6DH3FH,06H,5BH,4FH,66H,6DH; ;定义段码表定义段码表 DB DB7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H7DH,07H,

25、7FH,6FH,77H,7CH,39H,5EH,79H,71HDATADATA ENDS ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS: DATA ASSUME CS:CODE,DS: DATASTART:MOV AX, DATA START:MOV AX, DATA MOV DS,AX MOV DS,AX MOV AL,81H ;8255 MOV AL,81H ;8255初始化初始化 MOV DX,CT_PORT MOV DX,CT_PORT OUT DX,AL OUT DX,AL AGAIN: MOV DX,C_PORTAGAIN: MOV

26、DX,C_PORT MOV AL,0 MOV AL,0 ; ;输出列信号输出列信号 OUT DX,AL OUT DX,AL第第9 9章章 可编程接口芯片可编程接口芯片NO_KEY: MOV DX,C_PORTNO_KEY: MOV DX,C_PORT IN AL,DX IN AL,DX AND AL,0FH AND AL,0FH CMP AL,0FH CMP AL,0FH JZ NO_KEY JZ NO_KEY CALL DELAY2MS CALL DELAY2MS IN AL,DX IN AL,DX AND AL,0FH AND AL,0FH CMP AL,0FH CMP AL,0FH JZ

27、 NO_KEY JZ NO_KEY MOV BL,0 ; MOV BL,0 ;置初始列值为置初始列值为0 0 MOV CH,0EFH MOV CH,0EFH LOOP1: MOV AL,CH LOOP1: MOV AL,CH MOV DX,C_PORT MOV DX,C_PORT OUT DX,AL OUT DX,AL第第9 9章章 可编程接口芯片可编程接口芯片 IN AL,DX ; IN AL,DX ;读取行信号读取行信号PUSH PUSH CXCXMOV BH,0 ;MOV BH,0 ;设置初始行值设置初始行值0 0MOV CX,4MOV CX,4LOOP3: SHR AL,1LOOP3:

28、 SHR AL,1JNC LOOP2 ;JNC LOOP2 ;该行有按键该行有按键INC BHINC BHLOOP LOOP3LOOP LOOP3 POP CXPOP CX ROL CH,1 ROL CH,1 CMP CH,0FEH CMP CH,0FEH JZ JZ NO_KEYNO_KEY INC BL INC BL JMP JMP LOOP1LOOP1第第9 9章章 可编程接口芯片可编程接口芯片LOOP2: SHL BH,1 ; BHLOOP2: SHL BH,1 ; BH中是行,中是行,BLBL中是列中是列,BH,BH* *4 4获得行值获得行值SHL BH,1SHL BH,1ADD

29、BH,DL ;ADD BH,DL ;键值键值= =值行值行+ +列值列值 MOV AL,BH ;MOV AL,BH ;键值换码后显示到数码管键值换码后显示到数码管 PUSH BXPUSH BX LEA BX,TAB1 LEA BX,TAB1XLATXLAT POP BXPOP BX MOV DX,A_PORTMOV DX,A_PORT OUT DX,AL OUT DX,AL JMP AGAIN JMP AGAIN第第9 9章章 可编程接口芯片可编程接口芯片DELAY2MS PROC NEAR ;DELAY2MS PROC NEAR ;延时子程序延时子程序PUSH BX ;PUSH BX ;现场

30、保护现场保护PUSH CX PUSH CX MOV BX,2MOV BX,2WAIT0: MOV CX,2801 ;WAIT0: MOV CX,2801 ;内循环次数,大小由单位时间定内循环次数,大小由单位时间定WAIT1: LOOP WAIT1 ;WAIT1: LOOP WAIT1 ;延时延时2MS 2MS DEC BXDEC BXJNZ WAIT0 JNZ WAIT0 POP CX ;POP CX ;现场恢复现场恢复POP BX POP BX RETRETDELAY2MS ENDPDELAY2MS ENDPCODE ENDSCODE ENDS END START END START 第第9

31、 9章章 可编程接口芯片可编程接口芯片【例例9-49-4】 要求:设定要求:设定8255端口端口A和和B工作于方式工作于方式1,并采用,并采用A、B口提供的中断信号(状态信号)实现从端口口提供的中断信号(状态信号)实现从端口B到端口到端口A的数据可靠传输。的数据可靠传输。CPU将数据区将数据区ABC 的的100字节数据字节数据经端口经端口B输出到输出到A口,再由口,再由A口读入到数据区口读入到数据区CDE。设。设8255起始口地址为起始口地址为300H。 第第9 9章章 可编程接口芯片可编程接口芯片实现电路实现电路第第9 9章章 可编程接口芯片可编程接口芯片CPU向向B口写数据口写数据OBF有

32、效有效(B)(B)STB有效有效(A)(A)并将数据写入并将数据写入A口口IBFIBF有效有效(A)(A)、ACK有效有效(B) INTR(B) INTR( PC3PC3)有效)有效(A) (A) (等待等待CPUCPU读入数据读入数据) ) CPUCPU从从A A口读入数据口读入数据 IBF无效无效(A)(A)ACK无效无效(B) INTR(B) INTR(PC0)有有效效(B) (B) ( (等待等待CPUCPU向向B端口写新数据端口写新数据) )程序采用查询方式程序采用查询方式: : PC0 PC7 PC0 PC7 PC3 PC6 PC3 PC6 工作过程分析:工作过程分析:第第9 9章

33、章 可编程接口芯片可编程接口芯片程序顺序分析:程序顺序分析: (1)初始态()初始态(8255初始化后)先向初始化后)先向B口写第一个数据;口写第一个数据;(2)读)读A口口INTR信号(信号(PC7)判断是否有新数据,)判断是否有新数据, INTR有效则读数据,否则等待;有效则读数据,否则等待;(3)读)读B口口INTR信号(信号(PC6)判断)判断A口数据是否已读取,口数据是否已读取, 若若INTR有效则写数据,否则等待。有效则写数据,否则等待。 第第9 9章章 可编程接口芯片可编程接口芯片程序流程程序流程 设置控制字设置控制字 初始化初始化 A口口,B口开中断口开中断 向向B口写一个数口

34、写一个数读读PC7=1?读读PC6=1?从从A口读一个数口读一个数NYNY第第9 9章章 可编程接口芯片可编程接口芯片MOV DXMOV DX,303H303H; MOV ALMOV AL,10111100B10111100B;OUT DXOUT DX,ALAL; 设定控制寄存器设定控制寄存器第第9 9章章 可编程接口芯片可编程接口芯片MOV DXMOV DX,303H303H; MOV ALMOV AL,0000100100001001; 置置PC4=1 PC4=1 OUT DXOUT DX,ALAL; 开启开启A A口输入中断口输入中断 MOV ALMOV AL,0000010100000

35、101; 置置PC2=1 PC2=1 OUT DXOUT DX,ALAL; 开启开启B B口输出中断口输出中断 设定中断允许设定中断允许INTE的有关程序语句的有关程序语句第第9 9章章 可编程接口芯片可编程接口芯片LEA SILEA SI,ABCABC; 取源数据区起始地址取源数据区起始地址 MOV DXMOV DX,301H301H; 地址指向地址指向B B口口 MOV ALMOV AL,SISI; 读源数据区数据读源数据区数据 OUT DXOUT DX,ALAL; 数据输出到数据输出到B B口口INC SIINC SI; 指向下一个输出数据指向下一个输出数据 向向B端口写数据的有关程序语

36、句端口写数据的有关程序语句第第9 9章章 可编程接口芯片可编程接口芯片LEA DILEA DI,CDECDE; 取目标数据区起始地址取目标数据区起始地址 MOV DXMOV DX,300H300H; 地址指向地址指向A A口口 IN ALIN AL,DXDX; 读入读入A A口数据口数据 MOV DIMOV DI,ALAL; 数据放入目标数据区数据放入目标数据区 INC DIINC DI; 指向目标数据区下一地址指向目标数据区下一地址 从从A端口读数据的有关程序语句端口读数据的有关程序语句补充习题:根据补充习题:根据例例9-4的的分析写出完整的程序段!分析写出完整的程序段!第第9 9章章 可编

37、程接口芯片可编程接口芯片9.3 9.3 可编程定时器可编程定时器/ /计数器计数器825382539.3.9.3.1 1 定时定时/ /计数器的基本概念计数器的基本概念 定时器:能通过对等周期输入时钟脉冲分频值的编程设定时器:能通过对等周期输入时钟脉冲分频值的编程设定,来产生不同频率值输出脉冲的功能部件(可编程分定,来产生不同频率值输出脉冲的功能部件(可编程分频器)。频器)。 计数器:可对输入脉冲个数进行计数的功能部件。计数器:可对输入脉冲个数进行计数的功能部件。第第9 9章章 可编程接口芯片可编程接口芯片1内部结构内部结构第第9 9章章 可编程接口芯片可编程接口芯片控制寄存器:控制寄存器:通

38、过程序写入工作方式通过程序写入工作方式。计数初值寄存器:计数初值寄存器:接收和存放程序设置的计数初始值接收和存放程序设置的计数初始值。 减一计数器:减一计数器:其初值是在程序将计数初值写入计数初值寄存其初值是在程序将计数初值写入计数初值寄存器时自动复制到其内的。减一计数器的值会在每个有效的输器时自动复制到其内的。减一计数器的值会在每个有效的输入脉冲入脉冲CLKCLK作用下自动减一,当其值减到零后会引起输出电平作用下自动减一,当其值减到零后会引起输出电平变化。变化。当前计数值锁存器:当前计数值锁存器:由于不能直接读取减由于不能直接读取减1 1计数器的当前值,计数器的当前值,所以需要设置一种间接的

39、方法来实现。即先执行一条指令将所以需要设置一种间接的方法来实现。即先执行一条指令将减减1 1计数器的当前值存入当前计数值锁存器,然后再读当前计计数器的当前值存入当前计数值锁存器,然后再读当前计数值锁存器的内容。数值锁存器的内容。第第9 9章章 可编程接口芯片可编程接口芯片CLKCLK:时钟输入。作为定时器应用和计数器应用时,输时钟输入。作为定时器应用和计数器应用时,输 入入周期或非周期性脉冲信号。周期或非周期性脉冲信号。 GATEGATE:门控信号门控信号, ,其作用如下:其作用如下: 1 1)控制)控制CLKCLK端的输入,端的输入, 2 2)启动计数器工作。)启动计数器工作。 OUTOUT

40、:输出信号,表征计数器的工作状态。当减输出信号,表征计数器的工作状态。当减1 1计数器计数器 减减为为0 0时产生变化。在不同工作方式下,其电平值时产生变化。在不同工作方式下,其电平值 及及变化情况在初始阶段、计数过程中和计数结束变化情况在初始阶段、计数过程中和计数结束 后后各不相同。各不相同。2 2外部有关信号外部有关信号第第9 9章章 可编程接口芯片可编程接口芯片3 3. . 定时器和计数器的作用及区别定时器和计数器的作用及区别 (1)定时器)定时器和计数器的相同之处:和计数器的相同之处: 都都需通过对一个减一计数器初始值的设定来实需通过对一个减一计数器初始值的设定来实 现定现定 时时(分

41、频)或计数。(分频)或计数。(2)定时器)定时器和计数器的不同之处:和计数器的不同之处: 定时器方式下定时器方式下:周期重复周期重复 计数器方式下计数器方式下:一次计数完成一次计数完成,再次计数需重新再次计数需重新触发触发 定时器方式下定时器方式下:输入时钟必须是等周期输入时钟必须是等周期 计数器方式下计数器方式下:输入时钟不一定等输入时钟不一定等周期周期第第9 9章章 可编程接口芯片可编程接口芯片9.3.2 82539.3.2 8253的内部结构及引脚功能的内部结构及引脚功能1.82531.8253的内部结构的内部结构 每片每片82538253有有3 3个独立的个独立的1616位计数通道,每

42、个计数通道最高计位计数通道,每个计数通道最高计数速率可达数速率可达2.6MHZ2.6MHZ。每个计数器可编程设定。每个计数器可编程设定6 6种工作方式,使用时种工作方式,使用时可以根据需要选择其中的一种工作方式。每个计数通道可按二进可以根据需要选择其中的一种工作方式。每个计数通道可按二进制或十进制来计数。制或十进制来计数。 定时和计数在工作原理上是相同的,都是对一个输入脉冲进定时和计数在工作原理上是相同的,都是对一个输入脉冲进行计数。行计数。8253是是Intel公司生产的通用可编程定时公司生产的通用可编程定时/计数器,定时时间与计计数器,定时时间与计数次数由用户事先设定数次数由用户事先设定。

43、第第9 9章章 可编程接口芯片可编程接口芯片A1 A0执行的操作执行的操作0100 0对计数器对计数器0设置初值设置初值0100 1对计数器对计数器1设置初值设置初值0101 0对计数器对计数器2设置初值设置初值0101 1写控制字写控制字0010 0读计数器读计数器0当前计数值当前计数值0010 1读计数器读计数器1当前计数值当前计数值0011 0读计数器读计数器2当前计数值当前计数值第第9 9章章 可编程接口芯片可编程接口芯片2. 82532. 8253的引脚功能的引脚功能 8253 8253采用双列直插式封装,有采用双列直插式封装,有2424个引脚个引脚。A1A0端口端口000计数器计数

44、器0001计数器计数器1010计数器计数器2011控制控制寄存器寄存器1未选中未选中第第9 9章章 可编程接口芯片可编程接口芯片9.3.3 82539.3.3 8253的工作方式的工作方式82538253的每个计数器都有的每个计数器都有6 6种工作方式:方式种工作方式:方式0 0方式方式5 5。这这6 6种工作方式的不同点是:种工作方式的不同点是: 计数计数/ /定时工作定时工作 输出波形不同输出波形不同:初始初始态态/ /计数状态计数状态/ /结束态结束态 启动计数器的触发方式不同启动计数器的触发方式不同:软件软件/ /硬件硬件 计数过程中计数过程中GATEGATE信号对计数过程的影响不同信

45、号对计数过程的影响不同 重触发方式不同:重触发方式不同:软件软件/ /硬件硬件第第9 9章章 可编程接口芯片可编程接口芯片1.1.方式方式00低电平输出低电平输出l 计数功能计数功能,软件软件触发触发计数,计数,且计数器只计一遍。控制字写且计数器只计一遍。控制字写入后,输出端入后,输出端OUTOUT变为低电平。计数初值写入后变为低电平。计数初值写入后,下一个下一个CLKCLK脉冲的下降沿,计数初值寄存器内容装入减脉冲的下降沿,计数初值寄存器内容装入减1 1计数寄存计数寄存器,开始计数,器,开始计数,输出端输出端OUTOUT维持低电平维持低电平。l 当计数值减到当计数值减到0 0时,时,OUTO

46、UT输出端变为高电平,此信号可作为输出端变为高电平,此信号可作为中断请求信号,并可保持到重新写入新的控制字或新的计中断请求信号,并可保持到重新写入新的控制字或新的计数值为止。数值为止。l 计数过程中,若计数过程中,若GATEGATE信号变为低电平,暂停计数信号变为低电平,暂停计数,减,减1 1计计数寄存器值保持不变;数寄存器值保持不变;若若GATEGATE信号重新变高,则计数器从信号重新变高,则计数器从暂停值开始继续计数;暂停值开始继续计数;若重新写入新的计数初值,则在下若重新写入新的计数初值,则在下一个一个CLKCLK脉冲的下降沿,减脉冲的下降沿,减1 1计数寄存器以新的计数初值重计数寄存器

47、以新的计数初值重新开始计数。新开始计数。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式0的的时序波形图时序波形图第第9 9章章 可编程接口芯片可编程接口芯片2.2.方式方式11低电平输出低电平输出硬件触发单稳态方式硬件触发单稳态方式,输出单个负脉冲信号,脉冲的宽度可,输出单个负脉冲信号,脉冲的宽度可通过编程来设定。通过编程来设定。写入控制字后,输出端写入控制字后,输出端OUTOUT变为高电平,并保持。写入计数变为高电平,并保持。写入计数初值后,在初值后,在GATEGATE信号的上升沿之后的下一个信号的上升沿之后的下一个CLKCLK脉冲的下降脉冲的下降沿,计数初值装入减沿,计数初值

48、装入减1 1计数寄存器,同时计数寄存器,同时OUTOUT端变为低电平,端变为低电平,开始计数开始计数,当计数值减到当计数值减到0 0时,输出端时,输出端OUTOUT变为高电平。变为高电平。计数过程中,如果计数过程中,如果CPUCPU又送来新的计数初值,不影响当前计又送来新的计数初值,不影响当前计数过程。等到计数器计数到数过程。等到计数器计数到0 0,OUTOUT端输出高电平且出现新的端输出高电平且出现新的一次一次GATEGATE信号的触发时,才会将新的计数初值装入,信号的触发时,才会将新的计数初值装入,并并计数计数。如果在输出端如果在输出端OUTOUT输出低电平期间,又来一个门控信号上升输出低

49、电平期间,又来一个门控信号上升沿触发,则在下一个沿触发,则在下一个CLKCLK脉冲的下降沿,将计数初值寄存器脉冲的下降沿,将计数初值寄存器内容重新装入减内容重新装入减1 1计数寄存器,计数寄存器,并并计数。计数。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式1的时序波形图的时序波形图第第9 9章章 可编程接口芯片可编程接口芯片3.3.方式方式22周期性负脉冲输出周期性负脉冲输出方式方式2 2可产生连续的负脉冲信号,可用作频率发生器。负脉可产生连续的负脉冲信号,可用作频率发生器。负脉冲的宽度为一个时钟周期。冲的宽度为一个时钟周期。写入控制字后,输出端写入控制字后,输出端OUTOUT

50、变为高电平。若变为高电平。若GATEGATE为高电平,为高电平,那么写入计数初值后,在下一个那么写入计数初值后,在下一个CLKCLK的下降沿计数初值寄存的下降沿计数初值寄存器内容装入减器内容装入减1 1计数寄存器,开始减计数寄存器,开始减1 1计数。当减计数。当减1 1计数寄存计数寄存器的值为器的值为1 1时,时,OUTOUT端输出低电平,经过一个端输出低电平,经过一个CLKCLK时钟周期,时钟周期,OUTOUT端输出高电平,并自动开始一个新的计数过程。端输出高电平,并自动开始一个新的计数过程。在计数过程中,如果减在计数过程中,如果减1 1计数寄存器未减到计数寄存器未减到1 1时时GATEGA

51、TE信号由信号由高变低,则停止计数。但当高变低,则停止计数。但当GATEGATE由低变高时,则重新将计由低变高时,则重新将计数初值寄存器内容装入减数初值寄存器内容装入减1 1计数寄存器,并重新开始计数。计数寄存器,并重新开始计数。(硬件可重触发硬件可重触发)如果如果GATEGATE信号保持高电平时,在计数过程中重新写入计数信号保持高电平时,在计数过程中重新写入计数初值候,要等正在计数的一轮结束并输出一个初值候,要等正在计数的一轮结束并输出一个CLKCLK周期的负周期的负脉冲后,才以新的初值进行计数。脉冲后,才以新的初值进行计数。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式2的时

52、序波形图的时序波形图第第9 9章章 可编程接口芯片可编程接口芯片4.4.方式方式33周期性方波输出周期性方波输出(1)输出端)输出端OUTOUT的的状态:状态: OUT端输出在计数过程开始前为高电平。开始计数过程中端输出在计数过程开始前为高电平。开始计数过程中: : N为偶数,输出端保持为偶数,输出端保持N/2的高电平的高电平, ,N/2低电平低电平, , N为奇数,输出端保持(为奇数,输出端保持(N+1)/2高电平高电平, ,(N-1)/2低电平。低电平。 减一计数器减至减一计数器减至0时如果门控信号无变化则自动按计数初值进时如果门控信号无变化则自动按计数初值进行新一轮的计数过程,并循环往复

53、。行新一轮的计数过程,并循环往复。 (2)软件起始触发。)软件起始触发。(3)硬件可重触发)硬件可重触发。(4 4)定时工作方式。)定时工作方式。(5 5)计数过程中改变计数)计数过程中改变计数值:值: 计数过程计数过程中向计数初值寄存器重新写入初值,只有当中向计数初值寄存器重新写入初值,只有当OUTOUT 的的高电平期或低电平期结束时才开始按新计数初值开始新的高电平期或低电平期结束时才开始按新计数初值开始新的 计数过程计数过程。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式3的时序波形图的时序波形图第第9 9章章 可编程接口芯片可编程接口芯片5.5.方式方式44软件触发的单次负

54、脉冲输出软件触发的单次负脉冲输出方式方式4 4是是软件触发软件触发的选通方式。采用方式的选通方式。采用方式4 4可产生单个负脉冲可产生单个负脉冲信号,负脉冲宽度为一个时钟周期。信号,负脉冲宽度为一个时钟周期。写入控制字后,输出端写入控制字后,输出端OUTOUT变为高电平,若变为高电平,若GATEGATE为高电平,为高电平,则在写入计数初值后下一个则在写入计数初值后下一个CLKCLK的下降沿计数初值寄存器内的下降沿计数初值寄存器内容装入减容装入减1 1计数寄存器,开始减计数寄存器,开始减1 1计数。当减计数。当减1 1计数寄存器的计数寄存器的值为值为0 0时,输出端时,输出端OUTOUT变为低电

55、平,经过一个变为低电平,经过一个CLKCLK时钟周期,时钟周期,输出端输出端OUTOUT变为高电平。变为高电平。如果在计数时,又写入新的计数值,则在下一个如果在计数时,又写入新的计数值,则在下一个CLKCLK的下降的下降沿此计数初值被写入减沿此计数初值被写入减1 1计数寄存器,并以新的计数值作减计数寄存器,并以新的计数值作减1 1计数。计数。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式4的时序波形图的时序波形图第第9 9章章 可编程接口芯片可编程接口芯片5.5.方式方式55硬硬件触发的单次负脉冲输出件触发的单次负脉冲输出方式方式5 5是是硬件触发的选通方式硬件触发的选通方式。采

56、用方式。采用方式5 5可产生单个负脉冲可产生单个负脉冲信号,负脉冲宽度为一个时钟周期。信号,负脉冲宽度为一个时钟周期。方式方式5 5的计数过程由的计数过程由GATEGATE的上升沿触发。当控制字写入后,的上升沿触发。当控制字写入后,输出端输出端OUTOUT输出高电平,并保持。写入计数初值后,只有在输出高电平,并保持。写入计数初值后,只有在GATEGATE信号的上升沿之后的下一个信号的上升沿之后的下一个CLKCLK脉冲的下降沿,计数初脉冲的下降沿,计数初值装入减值装入减1 1计数寄存器,开始计数。当计数到计数寄存器,开始计数。当计数到0 0时,输出端时,输出端OUTOUT变为低电平,并持续一个变

57、为低电平,并持续一个CLKCLK周期,然后自动变为高电平周期,然后自动变为高电平。计数过程中,若计数过程中,若GATEGATE端又来一个上升沿触发,则在下一个端又来一个上升沿触发,则在下一个CLKCLK脉冲的下降沿,减脉冲的下降沿,减1 1计数寄存器将重新获得计数初值,并计数寄存器将重新获得计数初值,并计数。计数。计数过程中,若写入新的计数值,但没有触发脉冲,则当前计数过程中,若写入新的计数值,但没有触发脉冲,则当前输出周期不受影响输出周期不受影响,当前周期结束后,在再次触发的情况下当前周期结束后,在再次触发的情况下,才将按新的计数初值开始计数,才将按新的计数初值开始计数;若写入新的计数值,并

58、在若写入新的计数值,并在当前周期结束前又受到触发,则在下一个当前周期结束前又受到触发,则在下一个CLKCLK脉冲的下降沿脉冲的下降沿,减,减1 1计数寄存器将获得新的计数初值,并计数。计数寄存器将获得新的计数初值,并计数。第第9 9章章 可编程接口芯片可编程接口芯片8253方式方式5的时序波形图的时序波形图第第9 9章章 可编程接口芯片可编程接口芯片9.3.4 82539.3.4 8253的初始化的初始化1. 82531. 8253方式控制字方式控制字2第第9 9章章 可编程接口芯片可编程接口芯片2.82532.8253初始化编程初始化编程1 1)82538253初始化编程原则初始化编程原则

59、8253 8253的控制寄存器和的控制寄存器和3 3个计数器分别具有独立的编程地址,由个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。控制字的内容确定使用的是哪个计数器以及执行什么操作。 8253 8253在初始化编程时必须遵守两条原则:在初始化编程时必须遵守两条原则:在对某个计数器设置初值之前,必须先写入控制字。在对某个计数器设置初值之前,必须先写入控制字。在设置计数初始值时,要符合控制字的规定,即只写低位在设置计数初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两字节,还是只写高位字节,还是高、低位字节都写(分两

60、次写,先低字节后高字节)。次写,先低字节后高字节)。第第9 9章章 可编程接口芯片可编程接口芯片2 2)82538253的编程命令的编程命令 8253 8253的编程命令有两类的编程命令有两类:一类是写入命令,包括设置控制字、设置计数器的初始值一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令。命令和锁存命令。另一类是读出命令,用来读取计数器的当前值。另一类是读出命令,用来读取计数器的当前值。3 3)82538253的初始化编程的初始化编程 8253初始化编程步骤是:初始化编程步骤是:先写控制字到先写控制字到8253的控制端口。的控制端口。再写计数器初值到相应的计数器端口。再写计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论