




免费预览已结束,剩余34页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,在微机系统或微机应用系统,特别是控制系统中,经常有计数和计时的要求。如日历计时。在计算机中的处理方法不外乎两种:硬件方法和软件方法。软件定时就是根据所需要的时间常数来设计一个延迟子程序。优点:节省硬件;缺点:耗费CPU的资源较多,降低了CPU效率,且编写软件略显麻烦;通常延迟时间较小且重复次数有限的情况下,使用该方法。硬件定时就要用到计数器/定时器。优点是不占用CPU时间,且利用计数器/定时器产生中断信号,就可以建立多作业环境,以提高CPU效率,由于计数器/定时器开销不大,因此得到了广泛应用。,第一节计数与定时,计数与定时的概念在计算机处理计数问题时,首先要将计数量转化为电脉冲的形式,计数的任务即是对某电脉冲的出现次数进行度量的工作。引发计数工作的电脉冲称为计数脉冲。在计算机系统中,更常用的是定时工作,时间计量是在统一的时间标准上进行的,这个标准时间通常由振荡器一类电路提供的恒定频率的电脉冲来担当,定时的工作其实转化为对具有恒定频率的计数脉冲进行计数的工作了。,二.计数方法与计数器,通常按计数的实现方法,计数器可分为:增量计数器:当计数脉冲到来后,计数的计数值加“1”减量计数器:当计数脉冲到来后,计数的计数值减1。增量计数器常用于对事件的累计,而减量计数常用于限量计数。增量计数关心的是当前计数的量,减量计数关心的是计数终到的时刻。,计算机系统中,计数操作软件实现硬件实现,二者结合使用。,软件实现计数的方法:利用计数脉冲引发CPU中断进行计数。可解决CPU占用率的问题,但由于CPU响应中断的周期的限制,当计数脉冲的频率很高时,可能发生漏计。硬件方法实现计数:用专门的计数器芯片完成计数操作。实际应用系统中多采用。将这种计数器连到计算机系统中,由CPU来设置初值,由CPU启动计数,并由CPU来读取计数器的当前值,计数终到后向CPU发出中断请求,由CPU处理计数终到后的工作,则构成一种可编程计数器。,三.定时方法与定时器,计算机系统中的定时操作又分成延时操作关心时间间隔和延时终到的时刻;计时操作要求随时了解现在时刻的标准时间。软件延时是利用CPU的指令周期进行的延时。另一种方法是利用硬件,借助于可编程的计数器进行延时。,四.计数/定时的工作原理,计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。例如输入脉冲频率为2MHz,那么计数2106计时1秒。因此,使用同一个芯片,既能计数,又能计时计时器/计数器,组成:控制寄存器决定工作模式状态寄存器反应工作状态初值寄存器计数的初值计数输出寄存器CPU从中读当前计数值计数器执行计数操作,CPU不能访问,工作原理:对CLK信号进行减1计数首先,CPU把控制字写入控制寄存器,计数初始值写入初值寄存器计数从初值开始,每当CLK信号出现一次,计数值减1当计数值减到0,从OUT端输出规定的信号CLK信号出现时,计数器是否减1,由门控信号GATE控制,第二节可编程计数器/定时器8253,一.8253的编程结构,1.数据总线缓冲器,8253与数据总线的接口部件,是8位的三态双向缓冲器,CPU对8253读写的数据,控制及状态信息都通过这8条数据线传送,读写的内容包括:CPU向8253传送的确定8253工作方式的控制字CPU向某一计数器装入计数初值CPU从某一计数器读出计数初值,2.读/写逻辑电路8253内部操作的控制电路,它从系统控制总线上接收控制信号,然后产生8253内部操作的各种控制信号。CS片选信号RD,WR读写控制信号A1,A0接系统总线的A1,A0,用于选择8253那的计数器和控制寄存器,8253输入信号与各功能的对应关系,。,3.计数器内部构成每个计数器内部都有三个16位寄存器CR、CE和OL。,CR计数初值寄存器存放CPU写入的计数初值(也称时间常数)。CPU可以写,但不能读CR寄存器。CPU向CR写入计数初值后的第一个CLK脉冲下降沿,CR寄存器的内容被送到CE计数器单元内,随后CE开始工作。,3.计数器内部构成每个计数器内部都有三个16位寄存器CR、CE和OL。,CE计数执行部件接收CR送来的计数初值,在GATE的控制下CLK进行减1计数,当计数终到时,该计数通道的OUT引脚发出OUT信号。CPU不能访问CE寄存器。,3.计数器内部构成每个计数器内部都有三个16位寄存器CR、CE和OL。,OL输出锁存器用来锁存某一时刻CE中的计数值。由于8253的数据总线只有8位,而CE是16位的,不可能在一个总线周期内将CE的内容全部读入CPU,因此用OL将不断变化的CE值锁存住,以便CPU读到正确的CE值。CPU可随时用IN指令读出该寄存器的当前计数值,但不能写该寄存器。,8253的引脚结构图,8253是24引脚双列直插式芯片,它与CPU的接口引线除了没有RESET引脚外,其他与8255相同。其中:D7D0是数据线引脚RD和WD:读写控制引脚CS是片选信号。A1,A0是片内地址选择引脚。8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号引脚OUT。,二.8253的编程,初始化,1)写入控制字2)按控制字要求写入计数初值,8253控制寄存器的格式如下:,BCD位:设置计数格式1:计数值为BCD格式0:计数值为二进制格式M2M1M0:模式选择000:模式0001:模式1X10:模式2X11:模式3100:模式4101:模式5RW1RW0:读/写指示标志00对计数器进行锁存操作,使当前计数值在输出锁存器中锁定,以便读出01只读/写低8位字节10只读/写高8位字节先读/写低8位字节,再读/写高8位字节,SC1、SC0计数器选择。SC1SC0含义00选计数器001选计数器1选计数器211无意义,例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器0,工作模式2,CR/OL仅使用低8位,初值为100,计数值使用二进制,MOVAL,14HOUT73H,ALMOVAL,100OUT70H,AL,例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器1,工作模式1,CR/OL使用16位,初值为1234,计数值使用BCD,MOVAL,73HOUT73H,ALMOVAX,1234HOUT71H,ALMOVAL,AHOUT71H,AL,三.8253工作模式,8253作为一个可编程计数器/定时器,可以用6种工作模式,不论工作在那种模式,都会遵守下面几条基本规则:1)控制字写入寄存器时,所有控制逻辑电路立即复位,输出端OUT进入初始状态。2)初值写入后,要经过一个时钟上升沿和一个下降沿,计数执行部件才开始进行计数。3)通常在时钟脉冲CLK的上升沿时,门控信号GATE被采样。模式0,4中,门控信号为电平触发模式1,5中,门控信号为上升沿触发模式2,3中,门控信号为电平或上升沿触发4)在时钟脉冲的下降沿,计数器作减1计数。0是计数器所能容纳的最大初始值。二进制时,0相当于216;BCD码时,0相当于104。,六种工作模式,1、方式0:计数结束中断方式。当计数单元CE计至零时,OUT信号由低变高,可作为中断请求信号。2、方式1:硬件可重复触发单稳方式。3、方式2:速率波发生器方式,也叫n分频方式4、方式3:方波方式5、方式4:软件触发选通方式6、方式5:硬件触发选通方式,当写入控制字后,OUT信号变为低电平,并维持低电平至CE的内容到达零时,此后OUT信号变为高电平,并维持高电平至再次写入新的计数值或重新写入控制字。门控信号GATE用于开放或禁止计数,GATE为“1”允许计数,为“0”则停止计数。,当写入控制字,使8253进入工作方式3后,OUT输出低电平,这时若装入计数初值n且GATE为高电平,则在其后的下个CLK脉冲下降沿,OUT跳变为高电平,同时开始减法计数。如果置入CR的初值n是偶数,减法计数对每个CLK脉冲减2,经过n/2个CLK脉冲,计数值达到0值,OUT输出变为低;然后,CR内的初值自动再装入CE并继续减2计数,经过n/2个CLK脉冲,计数值达0值,OUT输出又立即变高。如果要求改变输出方波的速率,则CPU可在任何时候向CR重新写入新的计数初值n,并从下一个计数操作周期开始起作用。而如果在新初值写入之后又收到GATE上升沿,则虽然原来的方波半周期尚未结束,CE也将在下一个CLK脉冲时装入新初值,并从它开始计数。,工作模式决定以下内容:,1)门控信号的影响高电平允许,当GATE=0,即使出现CLK,也不计数模式0,2,3,4上升沿允许(上升沿触发)模式1,52)OUT信号的状态写入控制字后,OUT的状态计数过程中,OUT的状态计数终了,OUT的状态3)计数操作可否重复不可重复模式0,4自动重复模式2,3条件重复模式1,5,六种工作模式主要区别:,输出波形不同。启动计数器的触发方式不同。计数过程中门控信号GATE对计数操作的影响不同。有的工作方式具备“初值自动重装”的功能。初值自动重装的功能是:当计数值减到规定的数值后,计数初值将会自动地重新装入计数器,第三节8253的应用,PC机中8253的应用,计数器0:向系统日历时钟提供定时中断,模式3,控制字36H,计数器初始值0计数器1:动态RAM刷新,模式2,控制字54H,计数器初始值18(12H)计数器2:控制扬声器发声,模式3,控制字B6H,计数器初始值1331(533H),PC机中,8253的端口地址为40H43H,8253的初始化,对计数器0MOVAL,36H;控制字00,11,011,0OUT43H,AL;选计数器0,16位,方式3,二进制MOVAL,0;初值0,计数65536次(最大)OUT40H,AL;写入CR0的低计数值OUT40H,AL;写入CR0的高计数值OUT0输出两次变高的间隔为840ns65536=55ms,即每隔55ms发出一次请求。,8253的初始化,对计数器1MOVAL,54H;控制字01,01,010,0OUT43H,AL;选计数器1,只装低8位,;方式2,二进制MOVAL,12H;初值18OUT41H,AL;写入计数器低8位,高8位自动为0从程序可以看出,OUT1输出两次变高的间隔为840ns18=15us,于是2ms内可有132次刷新。,8253的初始化,计数器2MOVAL,0B6H;控制字10,11,011,0OUT43H,AL;选计数器2,16位;方式3,二进制MOVAX,533H;初值533H=1331OUT42H,AL;写入计数器低8位MOVAL,AHOUT42H,AL;写入计数器高8位可以看出,OUT2输出两次变高的间隔为840ns1331=1.12ms,频率为894Hz。,扬声器控制举例,设计一个程序,使扬声器发出600Hz频率的声音,按下任意键声音停止。PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2得到不同频率的方波输出。对于600Hz,计数初值1.19MHz/600Hz=1938发声系统受8255芯片B口的两个输出端线PB0、PB1的控制。PB0为1,使GATE2为1,计数器2能正常计数;PB1为1,打开输出控制门。,CODESEGMENTASSUMECS:CODESTART:INAL,61H;读8255的PB口ORAL,03HOUT61H,AL;输出PB1PB0为1,打开喇叭MOVAX,1983OUT42H,ALMOVAL,AHOUT42H,ALMOVAH,01HINT21HINAl,61HANDAL,0FCHOUT61H,ALMOVAH,4CHINT21HCODEENDSENDSTART,第十一章作业题,2(8)、音符1、2、3、4、5、6、7的频率分别为350、393、441、467、525、589、661,编写一个程序,使用户按下17键时扬声器发出相应的音符,按下其他键退出程序。2(5)、设8253三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。编写程序片段,使:计数器0,工作模式1,使用16位,初值为1234,BCD计数;计数器1,工作模式4,使用低8位,初值为100,二进制计数;计数器2,工作模式2,使用16位,初值为65536,二进制计数,第十一章作业题,5)设8253三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。编写程序片段,使:计数器0,工作模式1,使用16位,初值为1234,BCD计数;计数器1,工作模式4,使用低
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论