




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.1计数器/定时器的工作原理8.1.1微机系统中的定时计时的本质就是计数,只不过这里的“数”的单位是时间单位。微机系统常常需要为处理器和外设提供时间标记,或对外部事件进行计数。微机系统中的定时,可分为内部定时和外部定时两类。内部定时是计算机本身运行的时间基准或时序关系,计算机每个操作都是按照严格的时间节拍执行的。外部定时是外部设备实现某种功能时,本身所需要的一种时序关系8.1.2外部定时方法软件定时它是利用CPU内部定时机构,运用软件编程,循环执行一段程序而产生的等待延时。这是常用的一种定时方法,主要用于短时延时。不需要增加硬设备,只需编制相应的延时程序以备调用CPU执行延时等待时间增加了CPU的时间开销,延时时间越长,这种等待开销越大,降低了CPU的效率,浪费CPU的资源,且定时程序的通用性差硬件定时采用可编程通用的定时/计数器或单稳延时电路产生定时或延时不占用CPU的时间,定时时间长,使用灵活定时准确,定时时间不受主机频率影响,定时程序具有通用性,故得到广泛应用优点缺点优点8.1.3可编程计数器/定时器的工作原理计数器,即在设置好计数初值后,便开始对外部触发脉冲作减1计数,减为0时,输出一个信号定时器,即在设置好定时常数后,便对外部时钟信号作减1计数,并按定时常数不断地产生时钟周期整数倍的定时间隔这两种情况的工作过程没有根本差别,主要都是基于计数器的减“1”CPU数据总线地址总线控制总线控制寄存器计数初值寄存器计数器计数输出寄存器计数脉冲输入CLK门控脉冲输入GATE输出OUT图8-1可编程计数器/定时器的基本结构以及与系统总线的连接8.2可编程计数器/定时器82538.2.18253内部结构及引脚功能8253的内部结构控制字寄存器读/写逻辑计数器0数据总线缓冲器计数器2计数器1内部总线CLK0GATE0OUT0CLK2GATE20OUT2CLK1GATE1OUT1D7~D0WRRDA0A1CS图8-28253内部结构8253的引脚功能A1A0功能00000000001111111000000100110100101读计数器0当前值读计数器1当前值读计数器2当前值设置计数器0的初始值设置计数器1的初始值设置计数器2的初始值设置控制字D7D6D5D4D3D2D1D0VCCWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT11234567891011122423222120191817161514138253CLK0OUT0GATE0GND图8-38253引脚表8-18253计数器的选择与操作8.2.28253的工作方式及特点
8253的每个计数器通道都有6种工作方式可供选用区分这6种工作方式的主要标志有3点:一是输出波形不同;二是启动计数器的触发方式不同;三是计数过程中门控信号GATE对计数操作的控制不同。1.方式0——低电平输出(GATE信号上升沿继续计数)①②③n=5n=9n=5543210543210n=49843210WRGATEOUTWROUTCLKWROUT图8-48253的方式0时序波形2.方式1——低电平输出(GATE信号上升沿重新计数)4432103210210n=4n=2n=3
43210①②③WRGATEOUTWRGATEOUTGATEOUTCLK图8-58253的方式1时序波形3.方式2——周期性负脉冲输出
321033210143210(3)21(0)3n=443210321’①
②③WROUTGATEWROUTn=4n=3n=3CLKWROUT图8-68253的方式2时序波形4.方式3——周期性方波输出n=4n=5①②CLKWROUTWROUT22222233图8-78253的方式3时序波形5.方式4——单次负脉冲输出(软件触发)5543210543210①②③CLKWROUTWROUTGATEOUTn=5n=3n=23210210图8-88253的方式4时序波形6.方式5——单次负脉冲输出(硬件触发)54321054543210①②GATEOUTn=4WRGATEOUTCLK图8-98253的方式5时序波形8.2.38253编程设定方式控制字图8-108253的方式控制字SC1SC0RW1RW0M2M1M0BCD读/写控制00计数器锁存01只读/写计数器低字节10只读/写计数器高字节11读/写计数器16位数先低字节,后高字节00计数器001计数器110计数器211无意义工作方式选择000方式0001方式1×10方式2×11方式3100方式4101方式5计数格式选择1十进制计数0二进制计数设定计数初值例3-1设8253计数器0工作于方式3下,计数初值为6000(十进制格式),试写出其初始化程序。(设8253计数器0,计数器1,计数器2及控制端口地址分别为40H~43H。)根据题目要求,8253方式控制字应为00110111,具体程序如下:
MOVDX,43H;设定控制端口
MOVAL,37H;写入控制字
OUTDX,ALMOVDX,40H;设计数器0MOVAL,0;写计数初值低字节
OUTDX,ALMOVAL,60;写计数初值高字节
OUTDX,AL8.2.48253的应用举例例3-2IBMPC/XT系统板上8253的3个计数器的使用。分析:IBMPC/XT机中,8253与系统总线的连接如图8-11所示。(8255)PB074LS7474LS17574LS138DREQ0(8237)IRQ0(8259)DQU21>CQDQU73Y2A5A6A7A8A9AENABCG2AG2BG1IORIOWCLK0CLK1CLK28253-5GATE0GATE1GATE2OUT0OUT1OUT2U26RDWRCSA1A0D7~D0PCLKRESETDRVDACK0BRD图8-118253与系统总线的连接例8-38253的3个计数器串级连接起来,为某A/D子系统提供可调用的启动采样频率信号。分析:连接电路如图8-12所示。设8253的计数器0,1,2分别工作在方式2(分频器)、方式1(单稳触发器),方式3(方波发生器)。3个计数器的初始值分别为L,M,N。系统时钟频率为F。OUT0CLK0GATE0OUT2GATE2CLK2OUT1GATE1CLK18253(方式2)(方式1)(方式3)启动转换A/D转换子系统时钟发生器手动/继电器开关+5V图8-128253的计数器串级连接应用电路设8253的端口地址为304H,305H,306H,307H。初始值L,N为二进制数,且小于256,M为BCD数,且大于100。设计:8253的初始化程序段如下MOVAL,14HOUT307H,AL;设计数器0为方式2,低8位二进制计数MOVAL,LOUT304H,AL;置初值LMOVAL,73HOUT307H,AL;设计数器1为方式1,16位BCD码数计数MOVAX,MOUT305H,AL;置初值M低8位MOVAL,AHOUT305H,AL;置初值M高8位MOVAL,96HOUT307H,AL;设计数器2为方式3,低8位二进制数计数MOVAL,NOUT306H,AL;置初值N例8-4图8-13所示为一自动计数系统。当工件从光源与光敏电阻之间通过时,CLK0端即可接收到一个脉冲信号,由计数器0计数。每当有80个工件通过后,由输出端OUT0输出一个负脉冲作为中断请求信号通知CPU。CPU在处理该中断的中断服务程序中启动计数器1,由OUT1产生2000Hz的方波驱动蜂鸣器发声,提示工件以满80个,5秒后扬声器停止发声。光敏电阻驱动器扬声器CLK1GATE15MHz8255PA4OUT0TNTOUT1光源工件R+5V图8-13自动计数系统设计:程序清单如下MOVAL,15H;写方式控制字(设计数器0工作于方式2)OUT43H,ALMOVAL,80;设计数0的计数初值为80OUT40H,ALSTI;置IF=1,开中断LOOP:HLTJMPLOOP;中断服务程序MOVAL,01H;置GATE1=1(80H为8255PA口地址)OUT80H,ALMOVAL,77H;写方式控制字(设计数器1工作于方式3)OUT43H,ALMOVAL,0;写计数初值低位OUT41H,ALMOVAL,25;写计数初值高位OUT41H,ALCALLD5S;调5秒延时MOVAL,0OUT80H,AL;置GATE0=1,使计数器1停止工作8.3DMA传送的基本原理8.3.1DMA传送的特点DMA方式可以实现外部设备与存储器之间的数据高速传输DMA传送主要用于需要高速大批量数据传送的系统中,以提高数据的吞吐量DMA传送方式的优点是以增加系统硬件的复杂性和成本为代价的DMA传送虽然脱离CPU的控制,但并不是说DMA传送不需要进行控制和管理8.3.2DMA传送的机制当外设准备好数据时,通过硬件提出DMA请求,进而向系统提出总线占有请求。在系统同意让出总线的情况下,高速外设就可以利用总线在硬件的控制下完成数据交换,速度非常快。具有这种功能的硬件是DMA控制器(DMAC)。DMA控制器系统总线存储器I/O接口CPUI/O设备总线允许(HLDA)DMA请求(DREQ)总线请求(HOLD)DMA允许(DACK)③④②①图8-14DMA传送机制示意图DMAC可以通过下面的方式获得总线控制权1.周期挪用(CycleStealing)在这种方式中,DMAC在处理器不访问存储器或I/O端口时控制总线2.周期扩展在这种方式中,DMAC在处理器不访问存储器或I/O端口时控制总线3.CPU停机CPU停机是指在DMA操作期间,CPU交出总线控制权,由DMA控制器接管总线,完成数据传送。这期间CPU不能使用总线,只能进行内部操作。在上述三种方式中,“CPU停机”是DMA占用总线最简单常用的方式。
以数据输入过程为例,CPU停机方式下DMA的工作过程如下:(1)当外设需要输入数据时,首先由I/O接口电路向DMA控制器发出DMA操作请求信号。(2)DMA控制器接收到外设的请求后,向CPU发出总线请求信号。(3)若CPU予以响应,将向DMA发回总线响应信号,同时出让总线的控制权,由DMA控制器接管总线。(4)DMA控制器接管总线后,向I/O端口发出DMA响应信号,并设置读写信号及存储器地址信号。(5)接口接到响应信号后,将数据送往数据总线,并撤销DMA请求信号。(6)存储器接收数据后,DMA控制器进行地址修改和字节计数,并撤销总线请求信号,通知CPU归还总线控制权,完成一次DMA操作。8.3.3DMA传送的模式单字节传送模式单字节模式下,只能一个字节一个字节地传送(或校验或检索),每传送一个字节DMAC必须重新向CPU申请占用总线。一般是在DMAC中设置字数计数器,DMA传送时,每传送一个字节数据,计数器减1,并释放总线,将控制权还给CPU数据块传送模式在数据块传送的整个过程中,只要DMA传送一开始,DMAC始终占用总线,直到数据传送结束或校验完毕或检索到“匹配字节”,才把总线控制权还给CPU请求传送模式DMAC控制总线以后,每传送完一个字节,都由DMAC检测外设是否有继续传送的要求8.4DMA控制器8237A8237A是Intel系列高性能可编程DMA控制器,它使用单一+5V电源、单相时钟,是一个40引脚双列直插式的大规模集成电路芯片。其具有以下功能:(1)每片8237A内部有4个独立的DMA通道,每个通道可分别进行数据传送,一次传送最大达64MB,能够实现存储器与外设间或存储器两个区域间的数据传送。(2)每个通道的DMA请求可以分别允许和禁止,具有不同的优先级,并且每个通道的优先级可以是固定的,也可以是循环的。(3)8237A具有4种传送方式:单字节传送方式、数据块传送方式、请求传送方式和级联方式。级联以后可以扩充DMA通道。8.4.18237A的内部结构及引脚功能通道1通道3通道2模式寄存器当前地址寄存器屏蔽触发器请求触发器控制寄存器当前字节计数器基本字节计数器基地址寄存器暂存器状态寄存器DREQ1DACK1DREQ2DACK2DREQ3DACK3DREQ0DACK0HRQHLDACLKAENHOLDHLDAA3~A0A7~A4通道0IORIOWMEMRMEMWEOPREADYRESETADSTBDB7~DB0CS图8-158237A的内部结构与主要引脚12345678910111213141516171819204039383736353433323130292827262524232221IORIOWMEMRMEMWNCREADYHLDAADSTBAENHRQCSCLKRESETDACK2DACK3DREQ3DREQ2DREQ1DREQ0VSS
(地)A7A8A5A4EOPA3A2A1A0VCC(+5V)DB0DB1DB2DB3DB4DACK0DACK1DB5DB6DB78237A图8-168237A引脚图端口通道I/O地址(Hex)寄
存
器读()写()DMA+0DMA+1DMA+2DMA+3DMA+4DMA+5DMA+6DMA+7DMA+8DMA+9DMA+10DMA+11DMA+12DMA+13DMA+14DMA+1500112233公用000102030405060708090A0B0C0D0E0F当前地址寄存器当前字节计数器当前地址寄存器当前字节计数器当前地址寄存器当前字节计数器当前地址寄存器当前字节计数器状态寄存器
————
——
——暂存寄存器————基地址与当前地址寄存器基字节计数器与当前字节计数器基地址与当前地址寄存器基字节计数器与当前字节计数器基地址与当前地址寄存器基字节计数器与当前字节计数器基地址与当前地址寄存器基字节计数器与当前字节计数器命令寄存器请求寄存器屏蔽寄存器(单个屏蔽位)方式控制寄存器清除先/后触发器命令*复位命令*清四个通道屏蔽寄存器命令*综合屏蔽命令寄存器表8-28237A控制器的寄存器口地址8.4.28237A的工作过程与工作方式1.8237A的工作过程就绪未就绪有效周期空闲周期向外提出HRQ单字节传送数据块传送接收到有效的DREQ接收到有效的HLDA就绪SiS3S2S1S0S0S1S4SWSW图8-178237A的内部状态转换流程2.8237A的工作方式(1)通道的优先级问题(2)工作模式①单字节传送模式②数据块传送模式③请求传送模式④级联模式(3)操作类型①DMA读,用于把数据从存储器中读出,写入外设。②DMA写,用于将数据从外设中读出,写入存储器中。③DMA校验,是一种空操作,并不是真正的DMA传送,只产生时序。地址信号、外设可以利用这样的时序进行校验。8.4.38237A的编程1.方式控制寄存器00通道001通道110通道211通道300校验传送01写传送10读传送11无意义图8-18方式控制寄存器格式通道选择传送类型D7D6D5D4D3D2D1D0预置选择0禁止自动预置1允许自动预置地址增减选择0递增1递减00请求方式01单字节方式10块字节方式11级联方式传送方式选择2.命令寄存器图8-19命令寄存器格式0:正常时序写1:扩展写入选择X:当D3=1时任意优先级0:固定优先级选择1:循环优先级0:禁止1:允许X:D0=0任意是否允许存储器与存储器传输是否允许通道0地址保持0:禁止1:允许是否禁止芯片工作0:允许1:禁止%0:正常时序1:压缩时序时序控制D7D6D5D4D3D2D1D0DACK有效0:低有效电平选择1:高有效DREQ有效0:高有效电平选择1:低有效3.状态寄存器图8-20状态寄存器格式D7D6D5D4D3D2D1D01已接收到终止计数信息0未接收到终止计数信息1有尚未处理的DMA请求0无尚未处理的DMA请求通道3
通道2
通道1
通道0通道0
通道1
通道2
通道34.请求寄存器00通道001通道110通道211通道30撤消请求1设置请求图8-21请求寄存器格式通道选择DMA请求D7D6D5D4D3D2D1D0XXXXX5.屏蔽寄存器00通道001通道110通道211通道3图8-22屏蔽寄存器格式屏蔽设置0撤除屏蔽1设置屏蔽通道选择D7D6D5D4D3D2D1D0XXXXX6.综合屏蔽寄存器1设置屏蔽0撤除屏蔽1设置屏蔽0撤除屏蔽图8-23综合屏蔽寄存器格式通道0通道31设置屏蔽0撤除屏蔽通道21设置屏蔽0撤除屏蔽通道1D7D6D5D4D3D2D1D0XXXX7.软件命令
8237A有三种软件命令,它们只需要向相应地址写入一个数据即可,而写入什么数据却无关紧要。(1)清除高/低触发器(F/L触发器)(2)软件复位命令(主清除命令)(3)清屏蔽寄存器命令8.4.48237A的应用举例例4-1用0通道从磁盘输入32KB的数据块,传送到内存08000H开始的区域(增量传送),采用块传送方式,传送完不自动预置,外设的DREQ和DACK均为高电平有效。设定8237A端口地址为00H~0FH,初始化程序如下:OUT0DH,
AL;写入总清除命令MOVAL,
00HOUT00H,
AL;写入0通道基地址和当前地址寄存器的低8位MOVAL,80HOUT00H,
AL;写入0通道基地址和当前地址寄存器的高8位MOVAL,
00HOUT01H,
AL;写入0通道基字节和当前字节寄存器的低8位MOVAL,
80HOUT01H,
AL;写入0通道基字节和当前字节寄存器的高8位MOVAL,84HOUT0BH,AL;写入模式控制字(块传送、地址增量、写传送、不自动预置)MOVAL,
00OUT0AH,AL;写入屏蔽寄存器(清除通道0的屏蔽)MOVAL,
0C0H;写入命令寄存器(DREQ、DACK为高电平有效,固定优先级)OUT08H,AL例8-7用8237A通道0对动态存储器进行刷新,每隔15s刷新一次,利用8253实现15s定时,试编出动态刷新程序。MOVAL,0FFH;写入通道0计数初值为FFFFHOUT01H,ALOUT01H,ALMOVAL,58H
;写入模式控制字(单字节、地址递增、读传送、自动预置)OUT0BH,ALMOVAL,00H;写入命令寄存器OUT08H,ALOUT0AH,AL;写入屏蔽寄存器(清除通道0的屏蔽位)MOVAL,54H;设8253计数器1为方式2,只访问低位字节OUT43H,ALMOVAL,18;设计数器1定时周期为15sOUT41H,AL例8-8对IBMPC/XT的8237A进行初始化和测试的程序段加注释说明。在IBMP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论