微机原理与接口技术8定时器计数器_第1页
微机原理与接口技术8定时器计数器_第2页
微机原理与接口技术8定时器计数器_第3页
微机原理与接口技术8定时器计数器_第4页
微机原理与接口技术8定时器计数器_第5页
已阅读5页,还剩56页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第8章可编程接口芯片及其应用可编程定时器/计数器8253第8章定时计数控制接口教学重点

8253的引脚和6种工作方式

8253的编程

8253在IBMPC系列机上的应用一、定时器和计数器简介

在微机应用系统中,常常要求有一些实时时钟,以实现定时或延时控制,如定时中断、定时检测、定时扫描等;还要求有计数器对外部事件计数,如外来脉冲等。这就需要用到定时/计数器。那么什么是定时/计数器呢?所谓的定时/计数器其实质都是计数器,只不过在定时时是对微机内部时钟脉冲进行计数,而工作在计数器时是对微机外部输入的脉冲进行计数。如果输入的脉冲是周期相同的,也可将计数器作为定时器来使用,视具体情况而定。定时功能的实现方法软件延时——利用微处理器执行一个延时程序段实现不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路本章介绍的Intel8253就是一种可编程的定时器/计数器芯片二、8253/8254定时计数器主要功能3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制(BCD码)计数8254是8253的改进型三、8253/8254的内部结构和引脚D7~D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT21.计数器结构示意图预置寄存器GATECLKOUT减1计数器输出锁存器计数初值存于预置寄存器;在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值计数器的3个引脚CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号2.与处理器接口D0~D7数据线 A0~A1地址线RD*读信号 WR*写信号CS*片选信号CS*A1A0I/O地址读操作RD*写操作WR*00000101001140H41H42H43H读计数器0读计数器1读计数器2无操作写计数器0写计数器1写计数器2写控制字①每个计数器内部都有1控制寄存器,3个控制寄存器的端口地址相同(=11)。当CPU向控制寄存器写入控制字时,由控制字的最高2位决定写入哪个计数器内部的控制寄存器。

②初值寄存器(CR)和输出锁存器(OL)均是16位的,但它们对应1个8位端口地址,即16位的CR和OL是作为两个8位寄存器来读/写。当CPU对8位端口读写时,由控制字决定读写16位CR/OL的低8位或高8位关于CPU对这些寄存器的读/写应说明以下点:四、8253/8254的工作方式8253有6种工作方式,由方式控制字确定熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式每种工作方式的过程类似:⑴设定工作方式⑵设定计数初值〔⑶硬件启动〕⑷计数初值进入减1计数器⑸每输入一个时钟计数器减1的计数过程⑹计数过程结束

1.计数初值何时起作用

2.门控信号的影响

3.OUT信号的状态

4.计数操作是否可以重复,或称计数初值是否可以自动装入。

①不可重复②自动重复③条件重复

每种工作方式决定以下内容:方式0计数结束中断重新方式0工作的特点和应用计数器只计一遍输出信号OUT是在N+1个CLK脉冲后才变高的在计数过程中,可由门控信号GATE控制暂停。当GATE=0时,计数暂停,GATE变高后就接着计数改变计数值是立即有效的主要用于事件计数,OUT信号可作为中断请求信号方式0工作的特点和应用计数器只计一遍。当计数到0时,并不恢复计数值,不开始重新计数,且输出保持为高。只有在写入另一个计数值时,OUT变低,开始新的计数。8253内部是在写计数值的WR信号上升沿时,将此值写入通道的时间常数寄存器,在WR信号上升沿后的下一个CLK脉冲,才将计数值由时间常数寄存器送至计数器作为初值,开始计数。所以,是在写计数值命令后经过一个输入脉冲,才将计数值装入计数器,下一个脉冲才开始计数。因此,如果设置计数初值为N,则输出信号OUT是在N+1个CLK脉冲后才变高的。在计数过程中,可由门控信号GATE控制暂停。当GATE=0时,计数暂停,GATE变高后就接着计数。在计数过程中可改变计数值。若是8位计数,在写入新的计数值后,计数器将立即按新的计数值重新开始计数。如果是16位计数,在写如第一个字节后,计数器停止计数,在写入第二个字节后,计数器按照新的数值开始计数,即改变计数值是立即有效的。主要用于事件计数,OUT信号可作为中断请求信号。方式1可重复触发的单稳态触发器

8253方式1的时序高方式1的主要特点为若设置的计数值为N,则输出的单拍脉冲的宽度即为N个输入脉冲间隔。当计数到0后,可再次由外部触发启动,于是可再输出一个同样宽度的单拍脉冲,而不用再次送一个计数值。在计数过程中,外部可发出门控脉冲进行再触发。在再触发脉冲上升沿之后的一个CLK脉冲的下降沿,计数器按初值重新开始计数。在计数过程中,CPU可改变计数值,这时计数过程不受影响,计数到0后输出为高,若再次由GATE信号触发启动,则计数器将按新输入的计数值计数,即计数值是下次有效的。在微机实时控制系统中常作监视时钟。方式1的主要特点若设置的计数值为N,则输出的单拍脉冲的宽度即为N个输入脉冲间隔。当计数到0后,可再次由外部触发启动在计数过程中,外部可发出门控脉冲进行再触发。在再触发脉冲上升沿之后的一个CLK脉冲的下降沿,计数器按初值重新开始计数。在计数过程中,CPU改变计数值,计数值是下次有效的。在微机实时控制系统中常作监视时钟。方式2分频器8253方式2的时序(N=3)方式2的主要特点不用重新设置计数值,通道能够连续工作,输出固定频率的脉冲。计数过程中可由门控脉冲控制。当GATE变低时,就暂停计数。在GATE变高后的下一个CLK脉冲使计数器恢复初值,重新开始计数。在计数过程中可以改变计数值,这对正在进行的计数过程没有影响,但在计数到1时输出变低,过一个CLK周期输出又变高,计数器将按新的计数值计数,所以改变计数值是下次有效的。主要应用作为分频器。方式3方波发生器8253方式3的时序2442424225242方式3的主要特点和应用若计数值为偶数,在装入计数值后,每一个CLK脉冲使计数值减2,当计数到“0”时,一方面使输出改变状态,另一方面又重新装入计数值开始新的计数。过程就这样周而复始地重复进行。若计数值为奇数,则在装入计数值后的第一个CLK脉冲使计数器减1,其后每一个CLK脉冲使计数器减2,当计数到0时,改变输出状态,同时重新装入计数值。这以后的第一个CLK脉冲使计数器减3,以后每一个CLK脉冲,计数器仍减2,直到计数器再次到0时,输出恢复为高,重复上述过程。所以,如果计数值N是奇数,则输出(N+1)/2个CLK脉冲周期为高,而在(N-1)/2脉冲周期为低。即OUT为高将比其为低多一个CLK周期时间。GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。如果在输出OUT为低期间,GATE=0,OUT将立即变高,停止计数。当GATE变高以后,计数器将装入初始值,重新开始计数。若在计数期间写入一个新的计数值,并不影响现行的计数过程。但是若在方波半周期结束之前或新计数值写入之后收到GATE脉冲,计数器将在下一个CLK脉冲时装入新的计数值并以这个计数值开始计数。否则新计数值将在现行半周期结束时装入计数器。作为方波脉冲发生器和波特率发生器。方式3的主要特点和应用若计数值为偶数N,输出对称方波;如果计数值N是奇数,则输出(N+1)/2个CLK脉冲周期为高,而在(N-1)/2脉冲周期为低GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。如果在输出OUT为低期间,GATE=0,OUT将立即变高,停止计数。当GATE变高以后,计数器将装入初始值,重新开始计数。若在计数期间写入一个新的计数值,并不影响现行的计数过程。但是若在方波半周期结束之前或新计数值写入之后收到GATE脉冲,计数器将在下一个CLK脉冲时装入新的计数值并以这个计数值开始计数。否则新计数值将在现行半周期结束时装入计数器。作为方波脉冲发生器和波特率发生器。方式4软件触发选通信号发生器8253方式4的时序方式4的特点若设置的计数值为N,则是在写了计数值后的N+1个脉冲,才输出一个负脉冲。当GATE=1时,允许计数,而GATE=0,禁止计数。所以,要做到软件启动,则GATE应保持为“1”。若在计数过程中,改变计数值,则立即按新计数值重新开始计数。若计数值是双字节,则在设置第一字节时停止计数,在设置第二字节后,立即按照新计数值开始计数。方式5硬件触发的选通信号发生器8253方式5时序方式5的特点若设置计数值为N,则在门控脉冲触发后,经过N+1个CLK脉冲,才输出一个负脉冲。若在计数过程中产生新的门控脉冲,则使计数器重新开始计数,但对输出的状态没有影响。若在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当计数到0后,若有新的门控信号的触发,则按新的计数值计数。但若在写入了新的计数值后,在未计数到0之前,有新的门控信号触发,则立即按新的计数值重新开始计数。各种工作方式的输出波形方式0方式1方式2方式3方式4方式50N0N0N0/N110NN/2

N/20/N0N01N01N01讨论:计数开始的时刻计数开始的时刻需要注意:处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。从第二个CLK信号的下降沿,计数器才真正开始减1计数。实验:计数开始的时刻实验1计数开始实验1计数开始计数开始五、8253的编程8253加电后的工作方式不确定8253必须初始化编程,才能正常工作写入控制字写入计数初值读取计数值D7D6D5D4D3D2D1D01写入方式控制字计数器读写格式工作方式数制D7D6D5D4D3D2D1D000计数器001计数器110计数器211非法00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1010方式2011方式3100方式4101方式50二进制1十进制控制字写入控制字I/O地址(A1A0=11)示例2写入计数值选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:0000~99990000代表最大值10000计数值写入计数器各自的I/O地址示例3读取计数值对8位数据线,读取16位计数值需分两次计数在不断进行,应该将当前计数值先行锁存,然后读取:向控制字I/O地址:给8253写入锁存命令从计数器I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制

计时常数=定时时间/8253的时钟周期4计时常数的计算六、8253在IBMPC系列机上的应用A0A1———A0—A1—D0~D7D0~D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2DQCLK+5V接至DMA控制器接至扬声器驱动器PB0PB1IRQ0DRQ0

8253+5V1.19318MHzDACK0BRDIORIOWRDWRCST/CCS1定时中断和定时刷新从阅读初始化程序段看计数器0作为定时中断的作用将计数器1作为定时刷新看如何编写初始化程序段定时中断

moval,36h ;计数器0为方式3,采用二进制计数,

;先低后高写入计数值

out43h,al ;写入方式控制字

moval,0 ;计数值为0

out40h,al ;写入低字节计数值

out40h,al ;写入高字节计数值8253初始化计数器0:定时中断计数器0:方式3,计数值:65536,输出频率为1.19318MHz÷65536=18.206Hz的方波门控为常启状态,这个方波信号不断产生OUT0端接8259A的IRQ0,用作中断请求信号每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能计数器1:定时刷新需要重复不断提出刷新请求门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次计数初值为18定时刷新

moval,54h ;计数器1为方式2,采用二进制计数,只写低8位计数值

out43h,al ;写入方式控制字

moval,18 ;计数初值为18

out41h,al ;写入计数值8253初始化2扬声器控制计数器2的输出控制扬声器的发声音调计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声扬声器还受控于并行接口(8255芯片)必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音频率设置speaker proc pushax moval,0b6h

out43h,al ;写入控制字

popax

out42h,al ;写入低8位计数值

moval,ah

out42h,al ;写入高8位计数值

retspeaker endp扬声器控制扬声器开speakon proc pushax

inal,61h oral,03h ;D1D0=PB1PB0=11B,其他位不变

out61h,al popax retspeakon endp扬声器控制扬声器关speakoff proc pushax

inal,61h andal,0fch ;D1D0=PB1PB0=00B,其他位不变

out61h,al popax retspeakoff endp扬声器控制主程序 ;数据段freq dw1193180/600 ;代码段

movax,freq callspeaker ;设置扬声器音调

callspeakon ;打开扬声器声音

movah,1 ;等待按键

int21h callspeakoff ;关闭扬声器声音扬声器控制七、扩充定时计数器的应用例1

用8253监视一个生产流水线,每通过50个工件。蜂鸣器响5s,频率为2000HZ。2.5MHzGATE0+5V硬件接口示意图如图所示,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数脉冲,当通道0计数满50后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出2000HZ的方波,持续5s后停止输出。1硬件连接通道0计数器工作于方式2,采用BCD计数,因计数初值为50,采用RL1RL0=01(读/写计数器的低8位),则方式控制字为00010101B。2.5MHzGATE0+5V通道1计数器工作于方式3,CLK1接2.5MHZ时钟,要求产生2000HZ的方波,则计数初值应为2500000÷2000=1250,采用RL1RL0=11(先读/写低8位,后读/写高8位),BCD计数,则方式控制字为01110111B

2控制字设置

3程序编制┇MOVAL,15H;通道0初始化OUT43H,ALMOVAL,50H;计数初值低8位,高8位自动清零OUT40H,ALSTI;开中断LOP:HLT;等待中断JMPLOP

假设8253通道0的地址为40H,通道1的地址为41H,控制口地址为43H。8255A的A口地址为80H,工作于方式0输出。则主程序为:MOVAL,01H;通道1的GATE1置1,启动计数OUT80H,ALMOVAL,77H;通道1初始化OUT43H,ALMOVAL,50H;计数初值OUT41H,ALMOVAL,12HOUT41H,ALCALLDL5s;延时5sMOVAL,00H;通道1的GATE1置0,停止计数OUT80H,ALIRET中断服务程序为:例28253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253各通道端口地址分别为40H、42H、44H、46H,其电路硬件图如图所示,试编程完成以上工作。解题分析(1)硬件连接根据要求8253通道2输出一个周期为4s的方波。从图可知通道1的CLK1输入时钟周期为1μs,若通道1工作为定时,其输出最大定时时间为1×65536μs,仅65.5ms,因而使用一个通道达不到定时时间4s的要求。此时,采用通道级连的办法,将通道1的输出OUT1作为通道2的输入脉冲。(2)控制字设置8253的通道1工作于方式2,其输出端OUT1的输出为相对于1MHZ频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数初值应为4000。周期为4ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,因此通道2应工作于方式3,计数初值为1000。通道1的控制字为01100101B,通道2的控制字为10100111B。

(3)程序编制┇MOVAL,65H

;通道1控制字,只读/写高8位,BCD计数制OUT46H,ALMOVAL,0A7H

;通道2控制字,只读/写高8位,BCD计数制OUT46H,ALMOVAL,40H;通道1计数初值高8位,低8位自动置0OUT42H,ALMOVAL,10H

;通道2计数初值高8位,低8位自动置0OUT44H,AL

┇第8章定时器计数器教学要求1.掌握8253引脚,尤其是CLK、OUT、GATE引脚的功能2.掌握8253的六种工作方式、编程和在IBMPC系列机上的应用1.微机系统中定时分为:

两大类。

2.微机系统一般用

获得精确而稳定的时间基准。

3.8253计数器能否用于定时?为什么?

习题与思考4.现用8253的通道0对外界事件进行计数。要求每计到100时,产生一个中断请求信号,转去执行中断服务程序。要求:(1)画出该8253外部硬件连接图。(2)编写该8253的初始化

温馨提示

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

评论

0/150

提交评论