免费预览已结束,剩余92页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章可编程定时器/计数器8253,7.18253的功能、引脚与内部结构7.1.1项目1:用8253对外部事件进行计7.1.2知识讲解7.28253的控制字和读写操作7.2.1项目2:用8253控制LED闪烁7.2.2知识讲解7.38253的工作方式7.3.1项目3:用8253控制继电器7.3.2知识讲解7.4项目扩展与工程应用7.4.1项目4:电子琴7.4.2项目5:用8253实现生产流水线上的工件计数,目录,7.18253的功能、引脚与内部结构,2项目电路连接与说明(1)项目电路连接:8253的片选孔用导线接至译码处200H207H插孔,CLK0接至按钮开关UP插孔上,GATE0接至+5V电源插孔上,OUT0接至反相器的输入上,反相器的输出接至发光二极管LED0的阴极上。,1项目要求与目的(1)项目要求:利用8086外接8253可编程定时器/计数器,可以实现对外部事件进行计数。(2)项目目的:学习8253芯片引脚及编程方法。学习8086与8253的连接方法。,(2)项目说明:项目中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。项目所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。实验时,OUT0接至反相器的输入上,反相器的输出接至发光二极管LED0的阴极上,观察计数器是否工作。当脉冲按钮开关UP按5次(产生5个脉冲),计数器值加1,OUT0脚输出一个高电平,经过反相器后发光二极管LED0灯亮,3项目电路原理框图利用8253对外部事件进行计数,电路原理框图如图7-1所示。电路由8086CPU芯片、8253芯片、按钮开关UP和发光二极管LED等组成。,图7-1电路原理框图,图7-2用8253对外部事件进行计数程序流程图,4项目程序设计(1)程序流程图利用8253对外部事件进行计数程序流程图如图7-2所示。,(2)程序清单利用8253对外部事件进行计数程序清单如下所示。CODESEGMENTASSUMECS:CODESTART:MOVAL,30H;二进制计数,方式0,先低后高,通道0MOVDX,203H;8253控制地址OUTDX,ALMOVAL,5;计数器初始值。MOVDX,200H;通道0地址OUTDX,AL;低八位,MOVAL,0OUTDX,AL;高八位AGAIN:JMPAGAINCODEENDSENDSTART,7.1.2知识讲解,1定时器/计数器基本概念与分类,在计算机系统中使用的定时器/计数器归纳起来主要有三大类:软件定时器/计数器、硬件定时/计数器和可编程定时器/计数器。,软件定时器/计数器是实现系统定时控制或延时控制的最简单的方法。在计算机中CPU每执行一条指令所占用的周期(T状态)数是确定的,用汇编语言编写一段具有固定延时时间的循环程序,将该程序的每条指令的T状态数加起来,乘以系统的时钟周期,就是该程序执行一遍所需的延时时间。设计者可选择不同的指令条数和不同的循环次数来实现不同的时间延迟。,软件定时器/计数器,硬件定时器/计数器硬件定时器/计数器是指由硬件电路来实现的定时与计数。对于较长时间的定时一般用硬件电路来完成,采用硬件定时/计数器它的成本低,使用方便。,可编程定时器/计数器可编程定时器/计数器,是一种软硬件结合的定时器/计数器,是为了克服单独的软件定时器/计数器和硬件定时器/计数器的缺点,而将定时器/计数器电路做成通用的定时器/计数器并集成到一个芯片上,定时器/计数器工作方式又可由软件来控制选择。这种定时器/计数器芯片可直接对系统时钟进行计数,通过写入不同的计数初值,可方便地改变定时与计数时间,在定时期间不占用CPU资源,更不需要CPU管理。Intel公司生产的8253就是这样的可编程定时器/计数器芯片。,2.8253的主要功能Intel8253是一种常用的可编程定时器/计数器接口芯片。8253具有三个独立的功能完全相同的16位减法计数器,24脚DIP封装,由单一的5V电源供电。主要功能如下所示。,主要功能:(1)每片8253上有三个独立的16位减法计数器,最大计数范围为065535。(2)每个计数器都可按二进制或二十进制计数(BCD)。(3)每个计数器都有六种不同的工作方式,都可以通过程序设置和改变。(4)每个计数器计数脉冲的频率最高可达2MHz(5)全部输入/输出与TTL电平兼容。,8253的读、写操作,对系统时钟没有特殊要求,因此可以应用于任何一种微机系统中,可作为可编程定时器、计数器还可以作分频器、方波发生器以及单脉冲发生器等。3.8253的引脚8253引脚如图6-3所示。8253芯片有24根引脚,没有复位信号RESET引脚,各引脚信号定义如下。,图7-38253引脚图,(21脚):片选信号,输入,低电平有效。它与译码器输出信号相连接,当为低电平时,8253芯片被CPU选中。A1(20脚)、A0(19脚):输入信号,用来对3个计数器和控制寄存器进行寻址,与CPU的系统地址线相连。当A1、A0为00、01、10、11时分别表示对计数器0、计数器1、计数器2和控制寄存器的访问。8253的A1、A0与系统总线的哪根地址线相连,要考虑CPU是8位数据总线,还是16位数据总线。当CPU为8位数据总线时,8253的A1、A0可与地址总线的A1、A0相连;当CPU为16位数据总线时,8253的A1、A0引脚分别与地址总线的A2、A1相连。(23脚):写引脚,输入,低电平有效。用于控制CPU对8253的写操作,此引脚与CPU系统控制总线的相连。(22脚):读引脚,输入,低电平有效,用于控制CPU对8253的读操作,此引脚与CPU系统控制总线的相连。,8253读/写逻辑信号组合功能及地址分配如表7-1.,CLK02:时钟,输入。CLK时钟信号用于控制计数器的减1操作,CLK可以是系统时钟脉冲,也可以由系统时钟分频或者是其他脉冲源提供,输入的时钟频率在1MHz2MHz范围内。GATE02:门控信号,输入,由外部信号通过GATE端控制计数器的启动计数和停止计数的操作。OUT02:时间到或计数结束输出引脚。当计数器计数到0时,在OUT引脚有输出。在不同的模式下,可输出不同电平的信号。,4.8253的内部结构8253的内部结构如图6-4所示。由图可知,它由数据总线缓冲器、读写逻辑电路、控制字寄存器和三个计数通道所组成。,图7-48253的内部结构,数据总线缓冲器数据总线缓冲器是8位、双向、三态的缓冲器,通过8根数据线D0D7接收CPU向控制寄存器写入的控制字,向计数器写入的计数初值,也可把计数器的当前计数值读入CPU。读写逻辑电路读写控制逻辑电路从系统总线接收输入信号,经过译码,产生对8253各部分的控制信息。控制字寄存器当地址信号A1和A0都为1时,访问控制字寄存器。控制字寄存器接收从CPU发来的控制字,控制字决定了8253的工作方式、计数方式以及使用哪个计数器等。控制字寄存器只能写入不能读出,计数通道8253有3个相互独立的同样的计数电路,分别称作计数器0、计数器1和计数器2。每个计数器包含一个8位的控制寄存器(控制单元),它存放计数器的工作方式控制字;一个16位的初值寄存器CR(时间常数寄存器),8253工作之前要对它设置初值;一个16位计数执行单元CE,它接收计数初值寄存器CR送来的内容,并对该内容执行减1操作;一个16位输出锁存器OL,它锁存CE的内容,使CPU能从输出锁存器内读出一个稳定的计数值。计数器的内部结构如图6-5所示。,图7-5计数器的内部结构,6.28253的控制字和读写操作,6.2.1项目2:用8253控制LED闪烁6.2.2知识讲解重点:8253的控制字的设置、8253的应用。难点:8253的读写操作。,6.2.1项目2:用8253控制LED闪烁,1项目要求与目的(1)项目要求:编程将8253定时器0设定为方式3,定时器1设定在方式2,定时器0输出作为定时器1的输入,定时器1的输出接在一个LED上,运行后可观察到该LED不停闪烁。(2)项目目的:学习8253可编程定时器/计数器定时方法。学习8253多级串联实现大时间常数的定时方法。学习8086控制8253可编程定时器的方法。,2项目电路连接与说明(1)项目电路连接:8253的片选孔用导线接至译码处200H207H插孔,CLK0接至OUT1插孔上,CLK1接至1MHz插孔上,GATE0和GATE1接至+5V电源插孔上,OUT0接至发光二极管LED0的阴极上。(2)项目说明:用8253对标准脉冲信号进行计数,就可以实现定时功能,8253的工作频率为02MHZ,所以输入的CLK频率必须在2MHZ以下。用实验板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟。由于8253每个计数器只有十六位,因此要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。,图7-6用8253控制LED闪烁电路原理框图,由于定时常数过大,就要用多级串联方式。本实验采用两级计数器。定时常数分别为100和10000。将计数器1的输出OUT1接到计数器0输入CLK0上,计数器0的输出接到LED0。3项目电路原理框图用8253控制LED闪烁的电路原理框图如图7-6所示。电路由8086CPU芯片、8253芯片、频率1MHz和发光二极管LED等组成。,4项目程序设计(1)程序流程图用8253控制LED闪烁程序流程图如图7-7所示,图7-7用8253控制LED闪烁程序流程图,(2)程序清单用8253控制LED闪烁程序清单如下所示。CODESEGMENTASSUMECS:CODESTART:MOVAL,36H;计数器0初始化,16位,方式3,二进制MOVDX,203H;8253控制地址端口OUTDX,ALMOVAX,10000MOVDX,200HOUTDX,AL;计数器低字节MOVAL,AHOUTDX,AL;计数器高字节MOVAL,76H;计数器1初始化,16位,方式3,二进制,MOVDX,203HOUTDX,ALMOVAX,100MOVDX,201HOUTDX,AL;计数器低字节MOVAL,AHOUTDX,AL;计数器高字节JMP$CODEENDSENDSTART,6.2.2知识讲解,1.8253的控制字8253的控制字主要用于:选择哪个计数器通道工作,决定用8位的计数值或是用16位的计数值,是按二进制计数或按二十进制计数(BCD码),是工作在那种方式。8253是由主机编程设定的,通过把一个8位的控制字写入8253的控制字寄存器,使8253按照某种给定的方式工作。控制字的格式及定义如图7-8所示。,图6-88253的控制字,8253控制字各位的详细意义如下:(1)SC1、SC0用于选择工作的计数器。SC1SC000:选择计数器0工作。SC1SC001:选择计数器1工作。SC1SC010:选择计数器2工作。SC1SC011:无效。(2)RW1、RW0用于选择读写格式。RW1RW000:计数器锁存命令,把写本命令时的当前计数值锁存到输出锁存器OL中,以供CPU读取。RW1RW001:8位计数,只读/写计数器低位字节,高位字节自动为0。RW1RW010:16位计数,只读/写计数器高位字节,低位字节自动为0。,RW1RW011:16位计数,先读/写计数器低位字节,后读/写计数器高位字节。(3)M2、M1、M0用于选择工作方式。M2M1M0000:使计数器工作于方式0。M2M1M0001:使计数器工作于方式1。M2M1M0010:使计数器工作于方式2。M2M1M0011:使计数器工作于方式3。M2M1M0100:使计数器工作于方式4。M2M1M0101:使计数器工作于方式5。,(4)BCD计数方式选择。BCD位用于使计数器按二进制计数或十进制(BCD码)计数。当BCD位0时,则计数器按二进制计数,其计数范围是16位二进制数,最大计数值为216=65536(对应计数初值为0000H);当BCD位1时,则计数器按十进制(BCD码)计数,其计数范围是四位十进制数,最大计数值为104=10000,对应计数初值为0000。在赋初值时需要注意两点:,当采用二进制计数时,如果初值N是8位二进制计数(计数值256),则在8253初始化编程的传送指令“MOVAL,N”中,立即数“N”可以写成任何进制数(包括:二进制计数、十六进制计数和十进制计数)的形式;如果初值N是16位二进制计数(计数值65536),一种方法是先把计算得到的十进制计数初值N转换成4位十六进制,然后分两次写入8253的指定端口,另一种方法是先把该十进制计数初值N直接传给AX,然后分两次写入8253的指定端口,例如:MOVAX,N;N是16位二进制计数OUTPort,AL;先写低8位(Port为端口号)MOVAL,AH;高8位送低8位OUTPort,AL;后写高8位,当采用十进制(BCD码)计数时,必须在8253初始化编程中把计算得到的十进制计数初值N加上后缀H,这样才能在传送指令执行后能够在AL(或AX)中得到十进制数N的BCD码表示形式,例如N=100,则方法如下所示。,MOVNAL,100HOUTPort,AL如果初值N=2567,则需要分两次写入,即:MOVAX,2567HOUTPort,AL;先写低8位(Port为端口号)MOVAL,AH;高8位送低8位OUTPort,AL;后写高8位也可以按如下方法两次写入,即:MOVAL,67HOUTPort,AL;先写低8位(Port为端口号)MOVAL,25H;高8位送低8位OUTPort,AL;后写高8位,2.8253的初始化编程(写操作)8253没有复位信号,加电开机后,其工作方式是不确定的。因此需要对8253进行初始化,初始化步骤如下所示。(1)根据题目(设计)要求写出8253的控制字。(2)将控制字写入相应计数器的控制寄存器中。(3)写入定时或计数的初值。这里要注意的是如果计数值为16位,则要CPU执行两次输出指令完成初值的设置,即先写低字节,再写高字节。,【例5-1】设8253的片选信号接200H207H,使用计数器1,工作于方式3(方波发生器),二进制计数,计数初值为3000H,请编写初始化程序。解:此题有两种方法,具体求解如下所示,方法1:16位计数,先写低8位,后写高8位。根据题目写出控制字为01110110B(76H)。MOVDX,203H;8253控制寄存器MOVAL,76H;二进制计数、方式3、先写低8位、后写高8位、计数器1OUTDX,AL;控制字写入控制字寄存器MOVDX,201H;计数器1MOVAL,00H;计数初值低8位OUTDX,AL;计数初值低8位写入计数器1MOVAL,30H;计数初值高8位OUTDX,AL;计数初值高8位写入计数器1,方法2:16位计数,只写高8位,低8位自动为0。MOVDX,203H;8253控制寄存器MOVAL,66H;控制字01100110BOUTDX,AL;控制字写入控制字寄存器MOVDX,201H;计数器1MOVAL,30H;计数初值高8位OUTDX,AL;计数初值高8位写入计数器1,解法(1)和解法(2)效果相同。工作原理为:若GATE为高电平时,则当CPU执行完上述初始化程序后,8253的计数器1即开始对输入脉冲CKL进行减1计数,在减1计数过程中,OUT保持高电平;计数计到计数初值的一半值时(12288/12288/2=6144),OUT变为低电平,计数到0时,OUT又变为高电平,重新开始计数过程。,方法小结:,【例5-2】设8253的端口地址为208H20FH,使用计数器0,工作于方式4,二进制计数;使用计数器2,工作于方式5,十进制计数。计数器0和计数器2的计数初值都等于十进制数值512(0200H),请编写初始化程序解:MOVAL,38H;控制字00111000B,二进制计数、方式4、计数器0、先写低8位、后写高8位MOVDX,20BH;控制字寄存器端口地址OUTDX,AL;控制字写入控制字寄存器MOVDX,208H;计数器0端口地址MOVAL,00H;计数初值低8位OUTDX,AL;计数初值低8位写入计数器0MOVAL,02H;计数初值高8位OUTDX,AL;计数初值高8位写入计数器0,MOVAL,0BBH;控制字10111011B,BCD、方式5、计数器2、先写低8位、后写高8位MOVDX,20BH;控制字寄存器端口地址OUTDX,AL;控制字写入控制字寄存器MOVDX,20AH;计数器2端口地址MOVAL,12H;计数初值低8位OUTDX,AL;计数初值低8位写入计数器2MOVAL,05H;计数初值高8位OUTDX,AL;计数初值高8位写入计数器2注:工作原理见方式4、方式5的工作波形图。请自己分析一下项目1、项目2、项目3、项目4和项目5的初始化程序。,3.8253当前计数值的读取(读操作)为了对计数器的计数值进行实时检测,需将计数器中的计数值读回CPU。编程顺序如下。输出锁存器锁存或停止计数,以保证当前计数值读出稳定,当前的计数值有两种方法读取:一种方法是把当前计数值输出的锁存器锁存,输出锁存器锁存是通过写入控制字,使D5、D4分别为0,使当前的计数值不受计数执行单元的变化而变化,保证CPU从锁存器读出一个稳定的计数值。此时计数执行单元作减1操作,计数过程不停止。另一种方法是通过GATE门控信号发一低电平信号,使计数执行单元不作减1操作,计数过程停止。(2)从输出锁存器读数。读输出锁存器的值,也有读8位和读16位的问题,若是读16位的数据,需分两次读出,先读低字节,再读高字节,即执行两次输入指令。,【例5-3】设8253的端口地址为208H20FH,请编写程序读取计数器2的当前计数值。MOVAL,80H;计数器2的锁存命令MOVDX,20BH;控制字寄存器端口地址OUTDX,AL;计数器2的锁存命令写入控制字寄存器MOVDX,20AH;计数器2端口地址INAL,DX;读取计数初值低8位MOVBL,AL;计数初值低8位存入BLINAL,DX;读取计数初值高8位MOVBH,AL;计数初值高8位存入BH,6.38253的工作方式,6.3.1项目3:用8253控制继电器1项目要求与目的(1)项目要求:利用8253的定时器0设定为方式3,定时器1设定为方式2,定时器2设定为方式3,编写程序实现8253控制继电器的吸合和断开,从而达到对外部装置的控制。(2)项目目的:了解8253定时器的硬件连接方法及时序关系。掌握8253的初始化及编程方法。掌握8253各种方式编程及工作原理。了解用弱电控制强电的方法。,2项目电路连接与说明(1)项目电路连接:8253的片选孔用导线接至译码处200H207H插孔,OUT1接至CLK0插孔上,CLK1接至OUT2插孔上,CLK2接至1MHz插孔上,GATE0、GATE1和GATE2接至+5V电源插孔上,OUT0接至继电器的驱动上。(2)项目说明:用实验板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高或1秒钟低的脉冲信号。由于8253每个计数器只有十六位,因此要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。由于定时常数过大,就要用多级串联方式。本实验采用三级计数器。定时常数分别为10、100和10000。,本电路的控制端为高电平时,继电器常开触点吸合,连触点的LED灯被点亮。当控制端为低电平时,继电器常开触点断开,对应的LED灯将随继电器的开关而亮灭。需要注意的是,继电器触点吸合与断开的间隔时间尽可能要长一些,这样继电器和控制设备才不容易损失。,3项目电路原理框图用8253控制继电器电路原理框图如图6-9所示。电路由8086CPU芯片、8253芯片、驱动电路ULN2003、1只LED发光二极管和继电器等组成。,图6-9用8253控制继电器电路原理框图,项目程序设计(1)程序流程图用8253控制继电器程序流程图如图6-10所示。,图6-10用8253控制继电器程序流程图,(2)程序清单用8253控制继电器程序清单如下所示。CODESEGMENTASSUMECS:CODESTART:MOVAL,36H;计数器0初始化,16位,方式3,二进制MOVDX,203H;8253控制地址端口OUTDX,ALMOVAX,10000MOVDX,200HOUTDX,AL;计数器低字节MOVAL,AHOUTDX,AL;计数器高字节MOVAL,75H;计数器1初始化,16位,方式2,二进制,MOVDX,203HOUTDX,ALMOVAX,100MOVDX,201HOUTDX,AL;计数器低字节MOVAL,AHOUTDX,AL;计数器高字节MOVAL,0B6H;计数器2初始化,16位,方式3,二进制MOVDX,203HOUTDX,ALMOVAX,10MOVDX,202HOUTDX,AL;计数器低字节MOVAL,AHOUTDX,AL;计数器高字节JMP$;等待CODEENDSENDSTART,6.3.2知识讲解,8253的工作方式有6种,不论哪种工作方式,都遵守如下几条基本原则。(1)控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态。该初始状态与工作方式有关,设置成方式0时,OUT的初始状态为低电平,设置成其他工作方式,OUT的初始状态为高电平。(2)初始值写入初值计数器CR以后,要经过一个时钟脉冲的上升沿和下降沿,将初值送入计数执行单元,计数执行单元从下一个时钟开始进行计数。(3)通常,在时钟脉冲CLK的上升沿对门控信号GATE进行采样,各计数器的门控信号的触发方式与工作方式有关。在方式0、方式4中,门控信号为电平触发;方式1、方式5中,门控信号为上升沿触发;方式2、方式3中,即可用电平触发,也可用上升沿触发。,(4)在时钟脉冲的下降沿计数器进行计数。0是计数器所能容纳的最大初值,因为用二进制计数时,16位计数器,0相当于216=65536,用BCD码计数时,0相当于104=10000。8253中的三个计数器都可独立工作,每个计数器都有六种工作方式。工作方式由控制字设定,六种工作方式输出的不同波形都从OUT端获得。门控信号GATE对计数过程有影响。下面分别介绍这六种工作方式。,1.方式0计数到零产生中断请求在方式0下,门控信号决定计数的启/停,装入初值决定计数过程重新开始,计数过程时序图如图6-11所示,下面对工作原理进行分析。,(1)计数过程由图6-11(a)可看出,首先CPU将控制字CW写入控制寄存器后,在下一个时钟CLK上升沿,并在写控制信号的上升沿,OUT输出端变为低电平(若原来为低电平,则继续维持低电平,图6-11(a)中虚线所示),并且计数过程中一直维持低电平;然后,计数初值(设N=4)写入初值寄存器CR后,并在上升沿之后的第一个CLK脉冲(图6-11(a)中虚线所示)的下降沿,将CR的值送入计数执行单元CE中。,要开始计数,GATE门控信号必须是高电平,随后每个时钟CLK的下降沿都使计数执行单元的内容减1,减到0时,输出端OUT变成高电平,并一直维持高电平,直到写入新的计数值,开始下一轮的计数。计数初值一次有效,经过一次计数过程后,必须重新写入计数初值。当输出端OUT变成高电平时,可利用OUT的上升沿作为中断请求信号。方式0主要用于对外部事件计数。,图6-11方式0计数过程时序图,(2)GATE门控信号的影响在计数过程中,可由GATE信号控制暂停计数。当GATE0时,计数暂停,保持当前值,直到GATE信号恢复到高电平,经过一个时钟周期,计数执行单元从当前值开始继续执行减1操作。GATE只影响计数执行单元是否暂停减1操作,对输出信号OUT无影响,OUT信号从计数开始变为低电平,一直保持到计数结束,才变为高电平,计数过程时序图如图6-11(b)所示。如果在门控信号GATE处于低电平时写入新计数初值,则在下一个时钟周期也将初值从初值寄存器CR写入计数执行单元CE,但不进行计数操作,当GATE变为高电平时才开始计数。利用GATE信号可作为启动定时的同步信号。(3)写入新的初值对计数过程的影响,在计数过程中也可以改变计数值,在写入新的计数初值后,计数器将立即按新的计数值重新开始计数,即改变计数值是立即有效的。当按新的计数值减1计数到0时,输出OUT变成高电平。计数过程时序图如图6-11(c)所示。从计数开始,输出OUT变为低电平,一直保持到计数结束,并不因写了新的初值,影响输出信号。,2.方式1可重触发的单稳态触发器方式1是在GATE门控信号的作用下才开始计数,计数过程时序如图6-12所示,下面对工作原理进行分析。(1)计数过程当CPU把方式1的控制字写入控制寄存器后(的上升沿),OUT输出变成高电平(图6-12(a)中虚线所示)(若原来为高电平,则继续维持高电平);在CPU写入计数初值后,此时计数执行单元CE并不计数,直到GATE门控信号上升沿到来,在下一个时钟周期的下降沿才开始计数,输出OUT变为低电平(图6-12(a)中虚线所示)。计数过程中OUT端一直维持低电平。当计数减到0时,输出端OUT变为高电平,并一直维持高电平到下一次触发之前。计数初值的设置也是一次有效,每输入一次计数值,只产生一次计数触发过程。计数过程时序图如图6-12(a)所示。,图6-12方式1计数过程时序图,(2)GATE门控信号的影响方式1中,门控信号的影响从两个方面讨论。一方面是计数结束后,若再来一个门控信号上升沿,则在下一个时钟周期的下降沿又从初值开始计数,而且不需要重新写入计数初值,即门控脉冲可重新触发计数,同时OUT端输出从高电平降为低电平,直到计数结束,再恢复到高电平。可以看出,调整门控信号的触发时刻,可调整OUT端输出的高电平持续时间,即输出单次脉冲的宽度由计数初值N决定,计数过程时序图如图6-12(b)所示。另一方面是在计数进行中,若来一个门控信号的上升沿,也要在下一个时钟下降沿终止原来的计数过程,从初值起重新计数。在这个过程中,OUT输出保持低电平不变,直到计数执行单元内容减为0时,OUT输出才恢复为高电平。这样,使OUT输出低电平持续时间加长,即输出单次脉冲的宽度加宽。,(3)新的初值对计数过程的影响在计数过程中如果写入新的初值,不会影响计数过程,只有在下一个门控信号到来后的第一个时钟下降沿,才终止原来的计数过程,而按新值开始计数。OUT输出的变化是高电平持续到开始计数前,低电平持续到计数过程结束,计数过程时序图如图6-12(c)所示。,3.方式2分频器在方式2下,用门控信号达到同步计数的目的,方式2计数过程时序如图6-13所示,下面对工作原理进行分析。,(1)计数过程图6-13(a)所示,CPU写入控制字后,时钟CLK上升沿,OUT输出变为高电平(图6-13(a)中虚线所示),当计数初值被写入初值寄存器后,下一个时钟脉冲下降沿,计数初值被移入计数执行单元,开始减1计数,减到1时(不是减到0时),OUT输出变为低电平,经过一个时钟CLK周期,OUT输出又变成高电平,并且计数器将自动按初值重新开始计数过程。由图6-13(a)可看出,采用方式2时,不用重新设置计数初值,计数器能连续工作,输出端不断输出固定负脉冲。如果计数初值为N,则每输入N个CLK脉冲,输出一个负脉冲,负脉冲宽度等于1个CLK时钟周期,两负脉冲间的宽度等于N-1个时钟周期,整个计数过程不用重新写入计数值,重复周期为N倍的CLK周期,因此又称此方式下的计数器为N分频器或频率发生器。,图6-13方式2计数过程时序图,(2)GATE门控信号的影响由图6-13(b)可看出,门控信号为低电平时终止计数,而由低电平恢复为高电平后的第一个时钟下降沿从初始值重新开始计数。由此可见GATE一直维持高电平时,计数器为一个N分频器。GATE端每加一次从低电平到高电平的门控触发信号,都将引起一次重新从计数初值寄存器向计数执行单元写入计数值的操作,输出端OUT重新又得到一个不断输出负脉冲的脉冲信号,其宽度等于一个时钟周期,两负脉冲间的宽度等于N-1个时钟周期。用门控信号实现对输出端OUT信号的同步作用。,(3)新的初值对计数过程的影响由图6-13(c)可看出,如果在计数过程中改变初值,有两种情况:一种是当GATE门控信号一直维持高电平时,新的初值不影响当前的计数过程,但在计数结束后,下一个计数周期按新的初值计数;另一种是若写入新的初值后,遇到门控信号的上升沿,则结束现行计数过程,从下一个时钟下降沿开始按新的初始值进行计数。第二种情况是计数值未减到0,又重新按新的初值进行计数,在此期间输出端OUT一直维持高电平,这样就可以随时通过重新送计数值来改变输出脉冲的频率,4.方式3方波发生器方式3和方式2的工作过程类似,两者的主要区别是输出的脉冲宽度不同,方式3计数过程时序图如图6-14所示,下面对工作原理进行分析。,图6-14方式3计数过程时序图,(1)计数过程方式3计数过程分奇、偶两种情况。当初始值为偶数时,CPU写入控制字后,在时钟CLK的上升沿,OUT输出变为高电平。当计数初值写入初值寄存器CR后,经过一个时钟周期,计数初值被移入计数执行单元CE,下一个时钟下降沿开始作减1计数。减到N2时,OUT输出变为低电平,计数器执行单元继续执行减1计数,当减到0时,OUT输出又变成高电平,计数器执行单元重新从初值开始计数。只要门控信号GATE为1,此工作过程周而复始重复进行,在OUT输出得一方波信号,故称这种方式又称为方波发生器,计数过程时序图如图6-14(a)所示。当初始值为奇数时,在门控信号一直为高电平情况下,OUT输出波形为连续的近似方波,高电平持续时间为(N1)2个脉冲,低电平持续时间为(N-1)2个脉冲,计数过程时序图如图6-14(b)所示。,(2)GATE门控信号的影响当门控GATE1时,允许计数;当门控GATE0时,禁止计数。在计数执行过程中,当GATE变为低电平时,若此时OUT输出为低电平,则OUT从低电平变为高电平,若OUT原来是高电平则保持不变,且计数器停止计数。当GATE恢复高电平,计数器从初值开始重新计数,计数过程时序图如图6-14(c)所示。(3)新的初值对计数过程的影响新的初值写入也分两种情况。当门控GATE1时,在计数执行过程中,新值写入并不影响现行计数过程,只是在下一个计数过程中,按新值进行计数;在计数执行过程中,加入一个GATE脉冲信号,停止现行计数过程,在门控信号上升沿后的第一个时钟周期的下降沿,按新初值开始计数,计数过程时序图如图6-14(d)所示。,5.方式4软件触发选通方式方式4为软件触发选通方式,其计数过程时序图如图6-15所示,下面对工作原理进行分析。(1)计数过程在方式4下,写入控制字后,在时钟上升沿,OUT输出变成高电平,将计数初值写入初值寄存器CR中。经过一个CLK时钟周期,计数初值被送入计数执行单元CE,下一个时钟下降沿开始减1计数,减到0时,OUT输出变为低电平,脉冲宽度为一个CLK时钟周期,然后OUT自动恢复成高电平。下一次启动计数时,必须重新写入计数值。若设置计数初值为N,则在写入计数初值后的N+1个CLK时钟脉冲,才输出一个负脉冲,负脉冲的宽度为1CLK周期。,图6-15方式4计数过程时序图,方式4不能自动重复计数(即这种方式计数是一次性的),每进行一次计数过程必须重装初值一次,所以称方式4为软件触发。OUT输出低电平持续时间为一CLK时钟周期,常用此负脉冲作为选通信号,所以又称为软件触发选通方式,计数过程时序图如图6-15(a)所示。(2)GATE门控信号的影响当GATE门控信号为高电平时,允许计数;当GATE门控信号为低电平时,禁止计数。需要注意两点:当GATE门控信号为低电平时停止计数,GATE门控信号为高电平时并不是恢复计数,而是重新从初值开始计数。GATE的电平不会影响OUT输出的电平,只有计数器减为0时,才使OUT输出产生电平的变化,计数过程时序图如图6-15(b)所示。,(3)新的初值对计数过程的影响在计数过程中,如果写入新的计数初值,则立刻终止现行的计数过程,并在下一个时钟下降沿按新的初值开始计数,计数过程时序图如图6-15(c)所示。方式0和方式4都可用于定时和计数,定时的时间NT。只是方式0在OUT端输出正脉冲信号为定时时间到,方式4在OUT端输出负脉冲信号为定时时间到。,6.方式5硬件触发选通方式方式5为硬件触发选通方式,完全由GATE端引入的触发信号控制定时和计数,其计数过程时序图如图6-16所示,下面对工作原理进行分析。(1)计数过程在方式5下,CPU写入控制字后,在时钟上升沿,OUT输出变成高电平,写入计数初值后,计数器并不立即开始计数,当门控信号GATE的上升沿到来后,在下一个时钟下降沿时,将计数初值移入计数执行单元,才开始减1计数,计数器减到0,OUT输出变为低电平,持续一个时钟周期又变为高电平,并一直保持高电平,直至下一个门控信号GATE的上升沿的到,图6-16方式5计数过程时序图,因此,采用方式5循环计数时,计数初值可自动重装,但不计数,计数过程的进行是靠门控信号触发的,称方式5又称为硬触发。若设置计数初值为N,则在GATE的上升沿到来后,经过N+1个CLK时钟脉冲,才输出一个负脉冲,负脉冲的宽度为1个CLK周期,计数过程时序图如图6-16(a)所示。(2)GATE门控信号作用如果在计数的过程中,又来一个GATE门控信号的上升沿,则立即终止现行的计数过程,在下一个时钟周期的下降沿,又从初值开始计数。如果在计数过程结束后,来一个GATE门控信号的上升沿,计数器会在下一个时钟周期下降沿,从初值开始减1计数,不用重新写入初值。只要门控信号的上升沿到来,就会马上触发下一个计数过程。,(3)写入新的初值对计数过程的影响无论在计数的过程中,还是在计数结束之后,写入新的初值都不会影响计数过程,必须在门控信号的上升沿到来后,才会发生下一个新的计数过程,计数的初值是按写入新的初值进行。,7.六种工作方式小结通过对上面的6种工作方式的分析,可以看出门控信号和写入新的初值会影响计数过程的进行,不同的工作方式,会得到不同的输出波形。在8253的应用中,必须正确使用门控信号和写入新的初值这种触发方式,才能保证各计数器的正常操作;必须了解输出波形的形态,才能正确应用到各种控制场合。为此,把6种工作方式作如下小结。(1)OUT的输出波形在六种工作方式中,只有方式0在写入控制字后,OUT输出为低电平,其他五种方式OUT输出都为高电平。方式2、方式4和方式5都是输出宽度为一个CLK周期的负脉冲,输出波形都相同,但方式2是连续工作的,方式4是由软件触发的,方式5是由硬件门控脉冲触发的。计数初值N与输出波形的关系见表6-2。,表6-2计数初值N与输出波形的关系,(2)GATE门控信号的作用一般情况下,GATE信号为低电平时禁止计数,为高电平时允许计数,方式1和方式5则需要有由低变高的上升沿触发脉冲来启动计数。GATE信号对各种工作方式的影响如表6-3所示。,表6-3GATE信号作用,(3)计数初值的设置任何一种工作方式,只有在写入计数初值后才能开始计数。门控信号GATE保持为高电平,方式0、方式2、方式3和方式4在写入计数初值后,计数过程就开始了;而方式1和方式5需要有外部GATE触发,才能开始计数。(4)计数过程中改变计数值的影响8253在计数过程中写入新的计数初值,对计数过程的影响见表6-4所示。,表6-4对计数过程的影响表,6.4项目扩展与工程应用,6.4.1项目4:电子琴1项目要求与目的(1)项目要求:利用8086外接8253可编程定时器/计数器,用8255的PB口接7只按键,作为电子琴1、2、3、4、5、6、7数字键按键,编程完成按下数字键按键即发出相应的音调。(2)项目目的:了解计算机发声原理。学习8086与8253的连接方法及编程方法。学习8086对8255的控制方法及编程方法。,2项目电路连接与说明(1)项目电路连接:8253的片选孔用导线接至译码处208H20FH插孔,CLK1接至1MHz频率插孔,GATE1接至+5V电源插孔上,OUT1接喇叭的脉冲输入。(2)项目说明:本项目中计数器1按方式3工作,即十六位二进制计数器。当计数设置好后,计数器就开始计数。用8253做定时器输出音频信号,控制喇叭发出声音。利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调.各音阶标称频率值如下所示。音阶12345678频率(Hz)440.00493.88554.37587.33659.26739.99830.61880.30,3项目电路原理框图用8253做定时器输出音频信号,控制喇叭发出声音。利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。电子琴电路原理框图如图6-17所示。电路由8086CPU芯片、8253芯片、8255芯片、按钮开关和喇叭驱动电路等组成。,图6-17电子琴电路原理框图,4项目程序设计(1)程序流程图编程完成按下数字键按键即发出相应的音调。电子琴程序流程图如图6-18所示。,图6-18电子琴程序流程图,(2)程序清单电子琴程序清单如下所示。CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAL,82H;8255的PB口输入MOVDX,203H;8255控制口地址OUTDX,ALK1:MOVDX,201H;PB端口地址INAL,DX;读开关的状态TESTAL,01H;判是否是K1闭合JNZK2;不是转K2MOVAX,2273;是K1闭合送“1”音频数据1/440.00HzJMPDDDK2:INAL,DX;读开关的状态,TESTAL,02H;判是否是K2闭合JNZK3;不是转K3MOVAX,2024;是K2闭合送“2”音频数据1/493.88HzJMPDDDK3:INAL,DX;读开关的状态TESTAL,04H;判是否是K3闭合JNZK4;不是转K4MOVAX,1805;是K3闭合送“3”音频数据1/554.37HzJMPDDDK4:INAL,DX;读开关的状态TESTAL,08H;判是否是K4闭合JNZK5;不是转K5MOVAX,1704;是K4闭合送“4”音频数据1/587.33HzJMPDDDK5:INAL,DX;读开关的状态TESTAL,10H;判是否是K5闭合JNZK6;不是转K6,MOVAX,1517;是K5闭合送“5”音频数据1/659.26HzJMPDDDK6:INAL,DX;读开关的状态TESTAL,20H;判是否是K6闭合JNZK7;不是转K7MOVAX,1353;是K6闭合送“6”音频数据1/739.99HzJMPDDDK7:INAL,DX;读开关的状态TESTAL,40H;判是否是K7闭合JNZK8;不是转K8MOVAX,1205;是K7闭合送“7”音频数据1/830.61HzJMPDDDK8:INAL,DX;读开关的状态TESTAL,80H;判是否是K8闭合JNZK1;不是转K1MOVAX,1136;是K8闭合送“8”音频数据,1/880.30HzDDD:CALLOUTTONECALLDELAY;延时MOVAX,2;关闭发音CALLOUTTONEJMPK1OUTTONEPROCNEAR;按音频数据设置定时器时间常数PUSHAX;键码压栈MOVAL,76H;计数器1,16位二进制,方式3(方波)。MOVDX,20BH;定时器控制口地址OUTDX,ALPOPAX;键码出栈MOVDX,209H;定时器1端口地址OUTDX,AL;写时间常数低八位MOVAL,AH;写时间常数高八位,OUTDX,ALRETOUTTONEENDPDELAYPROCNEAR;延时PUSHCXMOVCX,60000LOOP$;POPCXRETDELAYENDPCODEENDSENDSTART,6.4.2项目5:用8253实现生产流水线上的工件计数,1项目要求与目的(1)项目要求:用8253实现生产流水线上的工件计数,每通过100个工件,扬声器便发出频率为1000Hz的音响信号,持续时间为5秒。(2)项目目的:学习8253芯片引脚及编程方法。学习8086与8253的连接方法。了解8253在工业上的应用。2项目电路连接与说明(1)项目电路连接:8253的片选孔用导线接至译码处200H207H插孔,8255的片选孔用导线接至译码处208H20FH插孔,8259的片选孔用导线接至译码处210H217H插孔;CLK0接至工件脉冲(正脉)提供插孔(也可以用直流电机的转速产生脉冲),GATE0接至+5V电源插孔上,OUT0接至中断芯片8259的IR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海东消防培训题库及答案
- 2025年飞行员招聘面试参考题库及答案
- 2025年认证咨询师招聘面试题库及参考答案
- 2025年作业分析师招聘面试题库及参考答案
- 2025年驾驶员招聘面试题库及参考答案
- 2025年若干产品专员招聘面试题库及参考答案
- 2025年母婴产品销售专员招聘面试参考题库及答案
- 2025年医疗行业项目经理招聘面试题库及参考答案
- 2025年营销副总裁招聘面试参考题库及答案
- 2025年基本面分析师招聘面试参考题库及答案
- 5.1认识方程+教学设计-2025-2026学年北师大版数学七年级上册
- 2024年卫生高级职称面审答辩(内科学)(副高面审)模拟试题及答案
- 2025年物流师(中级)职业技能鉴定试卷题型解析
- 入院记录课件模板
- 2025年自动驾驶卡车在快递物流配送中的应用前景及市场前景报告
- 2025年《治安管理处罚法》新修订课件
- 母乳喂养技术课件教学
- 开展村干部评选活动方案
- 2025年河南理工大学计算机导论试题
- 供应商准入资格评估表模板
- 软骨素市场发展前景及投资可行性分析报告(2025-2026年)
评论
0/150
提交评论