汇编语言课件第7章串并行接口技术.ppt

上传人:牧羊曲112 文档编号:6388969 上传时间:2023-10-26 格式:PPT 页数:209 大小:5.04MB
返回 下载 相关 举报
汇编语言课件第7章串并行接口技术.ppt_第1页
第1页 / 共209页
汇编语言课件第7章串并行接口技术.ppt_第2页
第2页 / 共209页
汇编语言课件第7章串并行接口技术.ppt_第3页
第3页 / 共209页
汇编语言课件第7章串并行接口技术.ppt_第4页
第4页 / 共209页
汇编语言课件第7章串并行接口技术.ppt_第5页
第5页 / 共209页
点击查看更多>>
资源描述

《汇编语言课件第7章串并行接口技术.ppt》由会员分享,可在线阅读,更多相关《汇编语言课件第7章串并行接口技术.ppt(209页珍藏版)》请在三一办公上搜索。

1、第7章 串并行接口技术,7.4 并行通信接口8255A,一、课前思考1、8255A由哪几部分组成?2、如何设置8255A的控制字?3、8255A有哪些工作方式?方式0有何特点?4、如何进行初始化编程?二、学习目标1、了解8255A的内部结构和引脚功能;2、熟练掌握8255A控制字的设置;3、熟练掌握8255A的工作方式及编程和应用。,三、难重点1、8255A的内部结构及功能;2、8255A的控制字的设置及其工作方式;3、8255A的编程及应用。四、主要知识点1、8255A的控制字设置;2、8255A的工作方式;3、8255A的初始化及应用。,通用接口可分为并行接口和串行接口两大类。并行传送是把

2、一个字节或多个字节用多条信号线同时进行传输,即并行接口是按字节传送的;串行接口和CPU之间按并行传送,而和外设之间是按位传送的。如下图所示。,并行接口电路及其与CPU和外设的连接,一、并行接口的组成及其与CPU和外设的连接,1、并行接口的基本组成 两个或两个以上的具有缓冲能力的数据寄存器 可供CPU访问的控制及状态寄存器 片选和内部控制逻辑电路 与外设进行数据交换的控制和联络信号线 与CPU用中断方式传送数据的相关中断控制,一、并行接口的组成及其与CPU和外设的连接,2、与CPU的连接 与CPU的连接主要是双向数据总线,读、写控制线,复位信号,中断请求以及状态信号和地址译码产生的片选信号。3、

3、与外设的连接 与输入设备的连接:并行输入数据线,数据传输应答信号(输入准备好和输入回答信号);与输出设备的连接:并行输出数据线,数据传输应答信号(输出准备好和输出回答信号);,二、并行接口的数据输入输出过程,并行接口的数据输入过程,变为低电平,1、数据输入 外设将数据传送到并行接口,同时给出“输入数据 准备好”信号;接口把数据接收到输入缓冲寄存器,给出“输入回 答”信号(高电平)到外设;若采用中断方式,则接口向CPU发中断请求信号,并使状态寄存器中的“输入缓冲器满”位置1(也可 以用查询方式);CPU响应接口的中断请求(或查询相应的状态位),在中断服务程序中执行IN指令读取接口中的数据;接口给

4、外设的“输入回答”信号变成低,通知外设 可输入新的数据,此后转到开始下一个数据的 输入过程。,并行接口的数据输出过程,先假设输出设备“不忙”,中断或查询都可以,通知外设可以把数据取走,2、数据输出 CPU执行OUT指令把数据写到接口(中断或查询都可以);接口向外设发出“输出准备好”信号,通知外设可以把数据取走;外设取走数据后,向接口发“输出回答”信号;接口向CPU发出新的中断请求,并使状态寄存器中的“输出缓冲器空“位置1,要求CPU输出新的数据,转到,开始下一输出过程。,7.4.1 8255A的内部结构和外部引脚,8255是Intel公司为其80系列微处理器生产的8位通用可编程并行输入输出接口

5、芯片。它具有很强的功能,在使用中可利用软件编程来指定它将要完成的功能。因此,8255获得了广泛的应用。1、8255A的内部结构 三部分:外设接口部分 内部逻辑部分 CPU接口部分,1、8255的内部结构框图,8255A与CPU之间互相交换信息的必经之路,包括数据信息及控制信息,它们可以接收来自读写控制部件的命令和CPU通过数据总线送来的控制字,并根据控制字来定义各端口的工作方式,以及可以根据CPU的命令字对通道C的每一位置位或复位。,(1)数据总线缓冲器 这是一个8位双向三态数据缓冲器,是8255A与CPU之间的数据接口,是它们之间互相交换信息的必经之路。(2)并行输入输出端口A、端口B、端口

6、C 端口A具有一个8位数据输入锁存器和一个数据输出锁存器/缓冲器;端口B具有一个8位数据输入缓冲器和一个数据输出锁存器/缓冲器;端口C具有一个8位数据输入缓冲器和一个数据输出锁存器/缓冲器,一般作为控制或状态信息端口。,(3)A组控制电路和B组控制电路控制端口A与端口C的高4位(PC7-PC4)控制端口B与端口C的低4位(PC3-PC0)它们各有一个控制单元接收来自读写控制部件的命令和CPU通过数据总线送来的控制字,并根据控制字来定义各端口的工作方式,以及可以根据CPU的命令字对通道C的每一位置位或复位。,(4)读写控制部件 该部件用于接收CPU的控制命令,根据这些命令向片内各功能部件发出操作

7、命令。共有6个信号:CS是片选信号,通常由高位地址译码产生;RD和WR是CPU来的读写信号;RESET是复位信号,复位后,清除所有寄存器内容,并将各端口置成输入方式;A1、A0为地址信号,用于选择8255内部的端口。这6个信号的组合所完成的操作如下表所示。,8255A的操作,怎么没有状态口?,2、引线及功能,共有40条引线;电源与地线2条;与外设相连的有24条;与CPU相连的有14条。,D0D7:双向数据信号线。RD:读信号线。WR:写信号线。CS:片选信号线。A0、A1:口地址选择信号线。00-A端口;01-B端口;10-C端口;11-控制口。RESET:复位输入信号,复位时三个端口自动置为

8、输入口PA0PA7:A口的8条输入输出信号线。PB0PB7:B口的8条输入输出信号线。PC0PC7:C口的8条输入输出信号线。,8255A的编程结构,C口,B口,(62H),(61H),(63H),RESET:复位信号,低电平有效D7-D0:和数据线相连。CS:芯片选择信号,低电平有效RD:芯片读出信号,低电平有效WR:芯片写入信号,低电平有效,A1A0:端口选择信号。A1A0=00,选中端口A;A1A0=01,选中端口B;A1A0=10,选中端口C;A1A0=11,选中控制端口。,8255有三种工作方式:方式0:基本输入输出方式方式1:选通输入输出方式方式2:双向传送方式 三种工作方式均可由

9、用户编程来选定,即由编程送入控制口内的不同控制字来选定。,7.4.2 8255A的工作方式,工作方式0(基本输入输出方式):无固定的联络信号,A口、B口、C口的高4位和C口的低4位可以分别设置成输入或输出。适用于无条件地传送数据。如读一组开关状态,控制一组指示灯。,CPU可随时把一组数据(即开关状态)送到指示灯显示,而无需“选通”和“状态”信号,也不必等待中断请求信号。在这种方式下,每一个端口都可由程序设计为输入或输出。,方式0的基本功能:具有两个8位口(A、B口),两个4位口(C口的上半部分和下半部分),这样所有端口的输入、输出可以有16种不同的组合;任一端口都可以作为输入输出;输出是锁存的

10、,输入是不锁存的;此方式无中断功能,在作查询方式工作时,可将C口的某些位作为传送控制和状态信息,A口和B口及C口剩余的位作为数据口。,工作方式1(字节选通I/O方式):在这种方式下,A口或B口仍作为数据的输入/输出口,同时规定C口的某些位作控制或状态信息,起应答联络和中断请求的作用,C口剩下的线作为I/O线使用,方式1的主要功能:一个或两个选通的8位数据端口每个端口含有三条控制线(是固定制定的,不能用程序改变),提供中断逻辑。任一个端口都可以作为输入或输出。若只有一个端口工作于方式1,余下的13位可以工作在方式0若两个端口都工作于方式1,端口C还剩下两位。这两位可以由程序指定作为输入或输出,也

11、具有置位/复位功能。,方式1输入:A口工作于方式1输入,固定用PC5-PC3作联络信号线;B口工作于方式1输入,固定用PC2-PC0作联络信号线。,思考:若采用查询方式控制传输数据,应该查询哪个状态?,所用到的控制信号的定义如下:STB为低电平有效的输入选通信号,由外设提供的输入信号,当它有效时,把输入装置来的数据送入输入锁存器。IBF为高电平有效的输入缓冲器满信号,通知外设送来的数据已被接收,由STB信号的前沿产生。当CPU用输入指令读走数据后,此信号被清除。INTR为中断请求信号,高电平有效。CPU响应中断请求后在服务程序中读走数据时,由RD信号将其清除。INTE为中断允许状态,可事先用位

12、控方式把PC4置位写入。,方式1输出:A口工作于方式1输出,所用联络信号线为PC7、PC6、PC3 B口工作于方式1输出,所用的联络信号线为PC2PC0,各信号作用如下:OBF为输出缓冲器满信号,低电平有效。ACK为外设响应信号,低电平有效。INTR为中断请求信号,高电平有效。INTE为中断允许状态。,使用场合:在采用中断方式进行输入/输出的场合,如果外部设备能为8255A提供选通信号或着数据接收应答信号,那么,通常使用8255A的端口工作方式1的情况,工作方式2(双向输入输出方式):为双向I/O方式,即同一端口的I/O线可以作为输入也可以作为输出,只有A口工作于方式2,此时C口PC3PC7这

13、5条线被固定为A口和外设之间的联络信号线。C口余下的3条线可以作为B口方式1下的联络线,也可以和B口一起成为方式0的I/O线,方式2的主要功能:一个8位的双向总线端口(用于数据传送),一个5位的控制端口C(用于A口的控制和状态)输入和输出是锁存的 当A口工作在方式2时,C口PC3PC7五位用作双向工作口以及中断控制,其控制信号含义与方式1中相应控制信号意义相同。注意:由于A口的输入锁存器和输出锁存器是互相独立的,故当CPU向A口输出数据时,外部设备也可同时向A口输入数据。反之亦然。,方式2下的信号定义:,INTRA:中断请求信号,高电平有效;INTE1:A口内部输出中断允许触发器,可由软件通过

14、对 PC6置位或复位来允许或禁止;INTE2:A口内部输入中断允许触发器,可由软件通过对 PC4置位或复位来允许或禁止。其他信号意义与方式1时相同。A口方式2实际上是A口在方式1下输入输出的组合。所需的5根联络线和方式1是一样的,只是中断请求只需要一根线。,7.4.3 8255A的编程 可编程芯片就可以通过软件来设置芯片的工作方式的芯片。一.8255A有两种控制字 1.方式控制字:D7=1;指定A、B、C 3个并口是作输入还是作输出及选择8255的工作方式。2.C口按位置位/复位控制字:D7=0 使C口的任一位置0或1。,方式控制字,思考:设A口工作于方式0,输出,B口方式0,输入,C口为输出

15、。(设8255A的控制字端口地址0为63H),MOV AL,82HMOVDX,63HMOVDX,AL,端口C置1/0控制字:,D6、D5、D4位,如何设置?,练习:设8255A的控制口地址为0EEH,先对端口C的PC7置1,再对端口C的PC3置0,请编程序段。,控制字00001111B=0FH,控制字为00000110B=06H。程序段如下:MOV AL,0FH;对PC7置1的控制字 MOV DX,0EEH;控制口地址送DX OUT DX,AL;对PC7置1操作 MOV AL,06H;对PC3置0的控制字 OUT DX,AL;对PC3进行置0的操作,7.4.3 8255A的编程(1)8255A

16、的控制字控制位的作用如右图,当D71,是方式控制字的特征位,用输出指令将方式控制字写入8255A后,被控制寄存器中。,当D7=0,允许CPU用输出指令单独对C口某一位写1或0注意:位控字是通过向8255A的控制寄存器写入的,不是直接对C口写入。,C口的按位操作控制字格式:,教材P279 例6.7 假设某8255A的芯片端口地址为FF80HFF83H,A端口工作在方式0,输出;B端口工作于方式1,输入,请写出初始化程序段。解:根据方式控制字的格式,控制字应该是:1 00 0 11(在本例中C端口高位没有用,C端口PC2PC0用来配合B端口工作,而PC3 没有用)。程序段如下:MOVDX,0FF8

17、3HMOVAL,86H;没有用到的几位都写0OUTDX,AL,教材P280 例6.8 8255A的端口地址同例6.7,要求对端口C的PC2置1。解:根据端口C置0/置1控制字格式,控制字应该是0 000 010 1MOVDX,0FF83HMOVAL,05H;没有用到的几位都写0OUTDX,AL,二、8255A的状态字 8255A的状态字为查询方式提供了状态标志位。8255A工作于方式1或方式2时的状态字可通过 读端口C 得到。状态字为查询方式提供了状态标志位,如输入缓冲器满信号IBF,输出缓冲器满信号OBF等。,方式1输入状态字格式:A组 B组方式1输出状态字格式:A组 B组,C口 A组状态

18、B组状态 A组方式2 输入输出 B组方式0 B组方式1 输入时 输出时,7.4.4 8255A的应用实例,1、8255与8088连接示意图,8255与8088系统总线连接方法,端口地址编码方法这里采用了门电路和译码器进行地址译码。很多地方也采用比较器进行地址译码。,2、8255A应用实例例1:8255作为打印机接口,工作于方式0,程序设计:设PA、PB、PC口地址分别为0D0H、0D2H、0D4H控制口地址:0D6H MOV AL,81H;OUT 0D6H,AL MOV AL,0DH;PC6置1,0DH=0000,1101 OUT 0D6H,ALLPST:IN AL,0D4H;读PC口 AND

19、 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,2、8255A应用实例,例1:编程用8255A控制八个发光二极管循环显示,设8255A地址为060H-063H。(1)使LED在无条件程序控制方式下亮;(2)测试K开关闭合时才使LED亮。,(1)CODE SEGMENT ASSUME CS:CODE START:MOV DX,63H;设置控制字 MOV AL,82H OUT DX,AL MO

20、V DX,60H;控制LED循环点亮 MOV AL,0FEH DON:OUT DX,AL ROL AL,1 JMP DON MOV AH,4CH INT 21H CODE ENDS END START,该程序进入死循环,大家想想办法吧!,(2)CODE SEGMENT ASSUME CS:CODESTART:MOV DX,63H;设置控制字 MOV AL,82H;A、B口方式0 OUT DX,AL;A口为输出,B口为输入 MOV AL,0FEH PUSH AX DON:MOV DX,61H;B口地址 IN AL,DX;读 B口输入值 AND AL,01H;测PB0=0?启动?JNZ EXIT;

21、非0,退出;否则,使灯亮 MOV DX,60H;A口地址,例2:8255A作为并行打印机的接口(工作方式1)教材P324,打印机驱动程序如下(采用查询方式):MOV AL,0A8H;A口方式1输出,PC4方式0,输入OUT 43H,ALMOV CX,100;传送字节数MOV SI,OFFSET BUFFER;SI为缓冲器首地址L1:IN AL,42H;读取C端口状态AND AL,10HJNZL1;BUSY1?是,继续查询MOV AL,SIOUT 40H,AL;通过A口输出INCSILOOPL1;未完?继续,主程序:MAIN:MOV AL,0A0H;方式选择控制字OUT 0C6H,ALMOV A

22、L,01H;OUT 0C6H,ALCLI;替换中断向量前关中断MOV AH,25H;替换中断向量的典型方式MOV AL,0BH;IR3的类型码为0BHMOV DX,OFFSET ROUTINTRPUSH DSMOV AX,SEG ROUTINTRMOV DS,AXINT 21HPOP DSMOV AL,0DH;PA方式1输出,“置PC6=1的操作”OUT 0C6H,AL;使8255允许中断(INTEA=1)STI;CPU开中断,假设:A口地址 0C0HB口地址 0C2HC口地址 0C4H控制口 0C6H,中断处理程序ROUTINTR:MOV AL,DI;DI为打印字符缓冲区地址OUT 0C0H

23、,ALMOV AL,00H;置PC0=0OUT 0C6H,ALINC AL;置PC0=1IRET,例3:8255A在PC/XT上的应用 教材P322,例4:8255A作为开关和LED的接口 教材323,7.1 定时、计数技术,一、课前思考 1、定时或延时常用的方法有哪?2、8253有哪些基本功能?3、8253的内部结构及引脚功能如何?4、如何进行控制字设置及初始化编程?5、8253有哪些工作方式?各种方式有何特点?二、学习目标 1、了解定时基本概念;2、熟悉可编程计数器/定时器8253的外部特性;3、熟悉可编程计数器/定时器8253工作模式;4、熟悉可编程计数器/定时器8253初始化。,三、难

24、重点 1、8253的外部特性;2、8253工作模式;3、8253初始化。四、主要知识点 1、定时或延时常用的方法;2、8253的基本功能;3、内部结构及引脚功能;4、8253的控制字设置及初始化编程;5、8253的工作方式及其特点。,概 述,1、定时与计数 控制系统与计算机中,常常需要有定时信号,以实现定时或延时控制。此外,还需要有计数功能,以实现对外部事件的计数,当外部事件发生的次数达到规定值后,向计算机发出中断请求,进而实现相应的控制或处理。定时的本质就是计数,当计数信号是周期信号时,计数就可以用于定时。,如定时中断,动态存储器的定时刷新等。,如以秒为单位计数,则计数60次就是1分,计满6

25、0分就是1小时,计满24小时就是1天,计数器和定时器的异同点相同点:计数器是设置好计数初值(定时常数)后,便开始减1计数,减为“0”时,输出一个信号。定时器是设置好定时初值(计数常数)后,便开始减1计数,并按定时常数不断地输出为时钟周期整数倍的定时间隔。对内部来说,工作过程没有本质的差别,都是基于计数器减“1”。不同点:计数时,在减到“0”后,输出一个信号便结束;定时时,则不断产生信号,是一个反复过程。,2、实现定时或延时的方法:软件定时 例:MOV CX,1000 XXX:LOOP XXX不可编程的硬件定时 例:用NE555集成块作定时控制的电路可编程的硬件定时 例:用8253芯片作定时控制

26、的电路,优点:节省硬件开销,成本低。缺点:CPU的效率低,定时、延时时间不准。,优点:CPU的效率高,定时、延时时间准确。缺点:硬件开销大,成本变高。,7.1 可编程计数器/定时器8253/8254,7.1.1 8253/8254的内部结构和引脚1、8253-PIT的主要功能 Intel 8253-PIT是可编程计数器/定时器芯片(1)具有3个独立的16位计数通道;(2)每个计数通道都可按2进制或BCD进制计数;(3)8253-PIT每个计数通道的计数速率最高可达2MHz,8253-5(5MHz),8254-2(10MHz);(4)每个通道有6种工作方式,可由程序设置改变;(5)全部输入输出都

27、与TTL电平兼容。,PC机中,计数器0通道用作时钟的基准时间,计数器1通道用于动态存储器刷新的定时中断,计数器2通道用于控制系统中扬声器发声。可编程:可通过程序指定或选择接口的工作方式及工作参数。通过对控制寄存器的设置,可以指定8253的工作方式;通过对计数器寄存器的设置,可以控制定时或延时的长短。,2、8253的结构框图,往计数器设置计数初值;从计数器读取计数值;往控制寄存器设置控制字。,A1 A0:端口选择0 0:通道00 1:通道11 0:通道21 1:控制字寄存器,定时系数(计数初值)n=定时时间t时钟频率fc=定时时间t/时钟脉冲周期Tc,1)数据总线缓冲器:CPU用输入输出指令对8

28、253进行读写操作时的所有信息都通过该缓冲器传送。2)读/写逻辑:这是8253内部操作的控制电路,它 从系统控制总线上接收输入信号,然后转换成8253内部操作的各种控制信号。3)控制字寄存器:通过该寄存器CPU可以设置三个 计数器通道的工作方式。4)计数器0,1,2:这是3个独立的计数/定时通道,是16位的可设置计数初值的减法计数器。如图7.2所示,是每个计数通道的结构。内有计数初值寄存器CR,计数执行部件CE和输出锁存器OL及控制字寄存器。其中CE作减法计数。,编程结构,三种读写格式:只读写低8位,高8位清零。只读写高8位,低8位清零。先读写低8位,后读写高8位。,读当前计数值:直接读:GA

29、TE信号使计数器暂停计数,或由外部逻辑暂时封锁CLK的输入锁存读:发锁存命令,计数初值寄存器CR,计数执行部件CE和输出锁存器OL都是16位的寄存器,而8253/8254与CPU连接的数据线却是8位的,因此8253/8254有三种读写格式:只读写低8位,高8位清零。适合计数初值小于255,如12H只读写高8位,低8位清零。适合计数初值大于255,但是低8位为0的情况,如1200H先读写低8位,后读写高8位。适合计数初值大于255,如1234H,3、8253的引脚,8253与CPU接口的引脚,除了没有复位信号RESET引脚外,其他与8255相同。如图7.3所示,,8253/8254的引脚,1)C

30、LK CLK为时钟输入引脚,用以输入计数执行部件CE(减法计数器)的计数脉冲信号。2)OUT 它是通道输出信号引脚,从功能上来说也可称为“计数到零/定时时间到”输出引脚。8253的基本功能就是对外部输入到CLK引脚的脉冲进行减法计数。3)GATE 它是门控输入信号引脚,当GATE为低电平时禁止计数器工作,通常GATE为高电平或有上升沿跳变时计数器才能工作。,4、8253的工作方式,8253有6种工作方式,每个通道均可以通过编程选择工作方式。计数启动方式:软件启动:GATE端为高电平,置入计数初值后的第2个CLK脉冲的 下降沿就开始计数 硬件启动:GATE端要求有一个上升沿跳变,对应CLK脉冲的

31、下降 沿开始计数工作方式:方式0:计数到零产生中断请求。软件启动。方式1:硬件可重复触发的单稳态触发器。硬件启动。(3)方式2:分频器。软、硬件启动。(4)方式3:方波发生器(用得最多的方式)。软、硬件启动。(5)方式4:软件触发选通。软件启动。(6)方式5:硬件触发选通。硬件启动。,(1)方式0 计数到零产生中断请求,方式0时序图,CPU写入控制字CW,在WR的上升沿,OUT输出变低或保持低。,可以作为中断请求,CPU将计数初值N写入计数初值寄存器CR(图中初值为4),在WR上升沿之后的第一个CLK脉冲的下降沿将CR的内容送入计数执行部件CE。当GATE=1时,在CR内容送入CE后的每一个C

32、LK脉冲下降沿使CE减1计数,在计数过程中OUT一直保持低直到计数为零。计数器减到0时,OUT由低跳到高电平,此输出信号可作为中断请求。在方式0中,当GATA=0时,计数暂停,当GATA变高后就接着计数。如图7.5所示。在计数过程中也可改变计数初值。在写入新的计数初值后,计数器将立即按新的计数值重新开始计数,即改变计数初值是立即有效的,参见图7.6,当GATA=0时,计数暂停,当GATA变高后就接着计数,方式0计数过程中改变计数初值,软件启动!,(2)方式1 硬件可重复触发的单稳态触发器,方式1时序图:若设置初值为N,则输出为N个CLK周期宽度的负脉冲。计数到零时,可再次由GATE上升沿触发,

33、输出同样宽度的负脉冲,而不必重新写入初值,即可重复触发。,在计数过程中,CPU可改变初值,这时计数过程不受影响,计数到0后输出变高。当再次触发时,计数器才开始按新的计数初值计数。即改变计数初值是下次有效的。,硬件启动!,在计数过程中,CPU可改变初值,这时计数过程不受影响,计数到0后输出变高。当再次触发时,计数器才开始按新的计数初值计数。即改变计数初值是下次有效的。,图7.8 计数过程中GATE 的作用,(3)方式2 分频器,计数初值一次置入多次有效。如果初值为N,则每输入N个CLK脉冲,输出一个负脉冲,负脉冲的宽度为1个CLK周期,重复周期为N倍的CLK周期。计数过程中可由GATE信号控制,

34、当GATE信号变低时,立即暂停现行计数;当GATE信号变高后,从计数初值开始重新计数。写入计数初值,从下一个计数操作周期开始有效。,方式2中门控信号GATA的作用,方式2计数过程中改变初值,(4)方式3 方波发生器,注意初值N为偶数或奇数时,输出信号的差别。N为偶数时,输出对称方波,周期为N个CLK宽度;N为奇数时,输出有N+1/2个CLK周期的高电平和N-1/2个CLK周期的低电平。,方式3时序图,在计数过程中,GATE信号变低则暂停现行计数过程,直到GATE变高,将从计数初值开始重新计数。如果要求改变输出方波的频率,则CPU可在任何时候重新写入初值,并从下一个计数操作周期开始改变输出方波频

35、率,(5)方式4 软件触发选通,若初值为N,则写入初值后的N+1个CLK脉冲才输出一个负脉冲,负脉冲的宽度为一个CLK周期。当GATE=1时,允许计数;GATE=0时,禁止计数。在计数过程中改变初值,则按新的初值重新计数,即改变初值是立即有效的。,方式4时序图,(6)方式5 硬件触发选通方式,初值为N,则在门控GATE上升沿触发后。经过N+1个CLK脉冲,才输出一个CLK周期的负脉冲,如图7.13。,图7.13 方式5时序图,若在计数过程中再次出现门控GATE触发信号。则将从初值开始重新计数,但OUT输出的高电平不受影响,如图7.14。若在计数过程中改变初值,只要在计数到0之前不出现新的门控触

36、发信号,则原计数过程不受影响;等计数到0并出现新的门控触发信号后,再按新的计数初值计数。若在写入了新的计数初值后,在未计数到0之前有门控触发信号出现,则立即按新的计数初值重新开始计数。,图7.14 方式5中门控信号GATA的作用,(7)六种工作方式总结,计数值N与输出波形的关系,门控信号GATE的作用,方式2(分频器)、方式4(软件触发选通)和方式5(硬件触发选通),它们的输出波形相同,都是宽度为 1个CLK周期的负脉冲。区别是:方式2是自动重复工作的,而方式4需要由软件(设置计数初值)触发启动,方式5需要由硬件(门控GATE信号)触发启动。方式5(硬件触发选通)与方式1(硬件触发单稳),触发

37、信号相同,但输出波形不同:方式1输出为宽度是N个CLK周期的负脉冲(计数过程中输出为低),而方式5输出为宽度是1个CLK周期的负脉冲(计数过程中输出为高)。,6种工作方式中,只有方式0,写入控制字后输出为低;其余5种方式,都是写入控制字后输出为高。6种工作方式中的任何一种方式,只有在写入计数值后才能开始计数。方式0、2、3、4都是写入计数初值后,计数过程就开始了。而方式1和方式5在写入计数初值后,需由外部GATE信号的触发启动,才能开始计数过程。6种工作方式中,只有方式2(分频器)和方式3(方波发生器)为自动重复工作方式,其他4种方式都是一次 性计数,要继续工作需要重新启动。图7.15是825

38、3六种工作方式下的输出波形图。,8253六种工作方式下的输出波形图,各种工作方式的输出波形,软启动,单次触发单次有效,硬启动,单次触发单次有效,软、硬启动,可自动重复工作,软、硬启动,可自动重复工作,软启动,单次触发单次有效,硬启动,单次触发单次有效,7.1.3 8253/8254的编程,(1)内部寄存器寻址 一片8253占用四个连续的端口地址,分别对应于三个计数初值寄存器端口和一个控制寄存器端口。3个通道共用一个控制端口,用控制字的D7和D6两位来表示作用于哪个通道。8253内部寄存器的寻址如下表所示:,表7-1:8253内部寄存器的寻址,(2)8253的控制字格式,SC1 SC0 RW1

39、RW0 M2 M1 M0 BCD,1-计数值为BCD码格式0-计数值为二进制格式,M2 M1 M0 模式选择 0 0 0 模式0 0 0 1 模式1/1 0 模式2/1 1 模式3 1 0 0 模式4 1 0 1 模式5,00-对计数器进行锁存01-只读/写低8位字节 10-只读/写高8位字节11-只读/写低8位字节,再读/写高8位字节.,00-选计数器001-选计数器110-选计数器211-无意义,(3)初始化编程顺序 先写入方式控制字 然后写入计数初值,8253只有1个控制寄存器,装入方式控制字规定了当前应用哪个计数器、该计数器的工作方式、读写格式及计数数制。,按照方式控制字的规定写入初值

40、到初值寄存器。,初值的计算:已知:CLK 的频率fc与定时的时间t.计数初值:n=fc t 例:fc=1MHZ,最大计数初值:65536 一个定时器最大定时时间:N/fc=65536/106=0.065536s,思考,送入初值寄存器器的值为多少?,例1:若用8253的计数通道1,工作在方式0,按8位二进制计数,初值为128,试编写初始化程序,设口地址为48H-4BH。解:控制字为01010000=50H,8位计数初值为80H moval,50H;设置通道1控制字 out,al moval,80H;写通道1计数初值,只写低8位 out,al,4BH,49H,例2:若用8253通道1,工作在方式1

41、,按二-十进制计数,计数初值为2010,口地址同上,试编写初始化程序。解:通道控制字为01110011=73H 计数初值为2010Hmov al,73H;写控制字out 4BH,almov al,10H;写通道1计数初值低8位out 49H,almov al,20H;写通道1计数初值高8位out 49H,al,(4)计数值和状态的读回 直接读:利用GATE信号使计数器暂停计数,或由外部逻辑暂时封锁CLK的输入,然后进行读出。这要求硬件和软件配合。锁存读:发锁存命令,由控制字的D5D4位决定,D5D4=00是锁存命令,锁存哪一个寄存器由控制字的D7D6位决定。此时控制字的低4位可设定为全0。,1

42、)读之前先暂停计数设8253口地址为48H-4BH,要读通道0的计数值,可编程如下:moval,30H;写控制字00110000 out4BH,al inal,48H;读计数通道0的低8位 movbl,al;存于寄存器BL inal,48H;读计数通道0的高8位 movbh,al;存于寄存器BH注意:在读之前,应先写控制字,其中控制字的D5D4=11,所以读两次OL。,2)读之前先送锁存命令设8253的口地址为E8H-EBH,现要求读计数通道1的16位计数值,并假设在读之前已设置控制字为先读/写低8位,再读/写高8位,则可编程如下:mov al,40H;锁存命令为40Hout 0EBH,al;

43、写入通道1控制字寄存器in al,0E9H;读低8位mov bl,al;存于BLin al,0E9H;读高8位mov bh,al;存于BH 这种方法,必须先执行一次锁存操作,但省去了需要硬件的配合。,(2)8254的计数值和状态读回多了专门的读回命令字,可以将3个计数器的计数值和状态都进行锁存,并且向CPU返回一个状态字 读回命令写入控制端口,而状态字和计数值都通过相应的计数器端口读出,图7.17 8254的读回命令,图7.18 8254的状态字,例6.1 用8253的计数器0,工作在方式1下,按十进制计数,初值为3040;若该8253的端口地址为38838BH,请写出初始化程序段(教材P25

44、3)。,例6.2 在8253中,读取计数器1的16位计数值,存入CX中,设地址同例6.1,请写出程序段(教材P254)。,例6.3在8254中,利用读回命令,读回计数器1的16位计数值和状态字,计数值存入CX,状态字存入BL,设地址同例6.1,请写出程序段(教材P254)。,例、验证IBM PC/XT机中,通道0、1、2控制字是否为36H、54H、0BH,假定I/O端口地址为40H-43H,写出它们的初始编程?(其中CLK=1.19MHZ,通道0工作在定时方式,每秒18.2次输出连续方波信号,通道1工作在定时方式,每15.12微秒一次连续输出单脉冲,通道2也工作在定时方式,每秒产生1KHZ的连

45、续方波)解:T=1/f=1/(1.19*106),而 N=t*f 通道0:控制字为36H;计数值为 N=(1/18.2)*106/0.84=65357=0FF4DH 通道1:控制字为54H;计数值为 N=15.12/0.84=18=12H通道2:控制字为B6H;计数值为 N=10000/0.84=1190=04A6H,初始化编程:MOV AL,00110110B;设控制字 OUT 43H,AL MOV AL,01001101B OUT 40H,AL;通道0 MOV AL,11111111B OUT 40H,AL MOV AL,01010100H;设控制字 OUT 43H,AL MOV AL,0

46、0010010B;通道1 OUT 41H,AL MOV AL,10110110B;设控制字 OUT 43H,AL MOV AL,10100110B;通道2低8位 OUT 42H,AL MOV AL,00000100B;通道2高8位 OUT 42H,AL,例、使用输出控制字,读取8253通道2当前一刻的计数值,并将其存入COUT开始的内存单元中,写出其程序,假定端口地址为40H-43H。解:MOV AL,10000000B;计数器2的锁存命令 OUT 43H,AL;送到控制字寄存器 IN AL,42H;读低8位 MOV COUT,AL;存入COUT单元中 IN AL,42H;读高8位 MOV C

47、OUT+1,AL;存入COUT+1单元中,例5:计数器2输出600HZ方波,送扬声器。,发声子程序:,SSP PROC NEAR;8253初始化:MOV AL,10110110B;计数器2,模式3,初值16位,二进制OUT 43H,ALMOV AX,1983;计数初值=1.19MHZ600HZ=1983OUT 42H,AL;送计数初值低位字节MOV AL,AHOUT 42H,AL次;送计数初值高位字节,8255控制程序:IN AL,61H;读8255的PB口原输出值 MOV AH,AL;保留到AH OR AL,03H;使PB0PB1均为1 OUT 61H,AL;打开GATE2门,输出方波到扬声

48、器 SUB CX,CX;CX为循环次数,最大为216L:LOOP L;延时 DEC BL;BL为子程序入口条件 JNZ L;BL=6,发长声(3S),BL=1发短声(0.5S)MOV AL,AH;取回8255的PB口原输出值 OUT 61H,AL;恢复8255PB口,停止发声 RETSSP ENDP,例6:定时/计数器 8253与 8086/8088CPU 相连构成完整的定时、计数或脉冲发生器系统。要求能完成的功能是:1)利用通道0完成对外部事件计数功能,计满100次向CPU发中断请求。2)利用通道1产生频率为1KHz的方波。3)利用通道2作标准时钟,定时1秒,输出接IR2。,(1)8253的

49、数据线(D7D0)与CPU的高8位数据线(D15-D8)相连,所以8253的端口地址必须是奇地址(A0=1)。(2)通道0定义为工作方式0,完成计数.通道0的计数初值应为:n0=100 控制字:00 01 0000=10H(3)将通道1定义为工作方式3,控制字=0111 0110=76H,从CLK1输入2.5MHz的时钟脉冲,OUT1输出频率为1KHz的方波,而输出方波的周期1ms。通道1的计数初值:n1=f1*t1=2.5106 1 10-3=2500=09C4H。,(4)通道2应定义为方式0,控制字=1011 0001=0B1H,每秒钟利用OUT2向CPU发出一次中断请求,由于输入时钟频率

50、为1KHz,计数初值应为:n2=f2*t2=1000*1=1000。8253的控制端口地址:66H通道0的端口地址:60H通道1的端口地址:62H通道2的端口地址:64H 8253-0 EQU 60H 8253-1 EQU 62H 8253-2 EQU 64H 8253-C EQU 66H,STT:MOV DX,8253-C;8253控制口地址MOVAL,10HOUTDX,AL;通道0工作在方式0MOVDX,8253-0;8253通道0地址MOVAL,64HOUTDX,AL;给通道0送计数值MOVDX,8253-CMOVAL,76HOUTDX,AL;通道1工作在方式3MOVDX,8253-1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号