可编程接口芯片8254及应用.ppt_第1页
可编程接口芯片8254及应用.ppt_第2页
可编程接口芯片8254及应用.ppt_第3页
可编程接口芯片8254及应用.ppt_第4页
可编程接口芯片8254及应用.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

第7章 可编程定时器/计数器芯片8254,概述 可编程计数器/定时器芯片8254 8254在PC机中的应用,/kecheng1/2008/site04/courseware/chapter7/7.3.1.htm,7.1 定时器和计数器概述,定时控制在微机系统中极为重要 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔。定时器强调的是精确的时间。,定时举例: 一天24小时的计时,称为日时钟。 在监测系统中,对被测点的定时取样。 在读键盘时,为去抖,一般延迟一段时间,再读。 在微机控制系统中,控制某工序定时启动。,计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器。 计数举例: 对零件和产品的计数; 对大桥和高速公路上车流量的统计。,定时功能的实现方法,软件延时是利用CPU每执行一条指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时。利用微处理器执行一个延时程序段实现。 不可编程的硬件定时采用分频器、单稳电路或简易定时电路控制定时时间 可编程的硬件定时软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路,7.2 8253/8254定时计数器,3个独立的16位计数器通道 每个计数器有6种工作方式,按二进制或十进制(BCD码)计数 每个计数器在开始工作前必须预制时间常数 每个计数器在工作过程中的当前计数值可被CPU读出。(注:时间常数也可在计数过程中更改),8254是8253的改进型,8253/8254的内部结构和引脚,计数器结构示意图,计数初值存于预置寄存器; 在计数过程中, 减1计数器的值不断递减,而预置寄存器中的预置不变。 输出锁存器用于写入锁存命令时, 锁定当前计数值,1 计数器的3个引脚,CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,2 与处理器接口,D0 D7数据线 A0 A1地址线 RD读信号 WR写信号 CS片选信号,8254的工作方式,8254有6种工作方式,由方式控制字确定 熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式 不同工作方式的区分点: 输出波形 计数过程中门控信号的影响 启动触发方式,每种工作方式的过程类似: 设定工作方式 设定计数初值 硬件启动 计数初值进入减1计数器 每输入一个时钟计数器减1的计数过程 计数过程结束,方式0 计数结束中断(一次有效),写入控制字之后,相应的输出信号OUT就开始变成低电平。 计数器写完计数值时,开始计数。当计数器减到零时,OUT立即输出高电平。, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式0,门控信号GATE位高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变。 在计数器工作期间,如果重新写入新的计数值,计数器将按新写入的计数值重新工作。,8254的方式0时序波形,方式1 可编程单稳脉冲,写入计数初值后,计数器并不立即开始工作; 等待到GATE上升沿,才开始工作,使输出OUT变成低电平; 直到计数器值减到零后,输出才变高电平。 计数到0,初值自动重置,但要等到下一个GATE上升沿触发才重新计数。 单稳态触发器只有一个稳态(高电平),一个触发脉冲使触发器进入暂稳态(低电平),经过一段可调的时间间隔后,又回到稳态。所以工作于方式1时相当于一个可重复触发的单稳态触发器。, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式1,在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数。 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值计满回零且门控信号再次出现上升沿后,才按新写入的计数初值开始工作。,8254的1方式时序波形,方式2 频率发生器(分频器),写入控制字之后,输出端OUT变为高电平。 计数器写完计数值时,开始计数。当计数器减到1时,OUT变为低电平。 完成一次计数过程,输出端OUT又变为高电平,开始一个新的计数过程,周而复始。 对于计数初值N,输出端OUT 输出的信号的周期是计数值N时钟CLK的周期T,N-1个时钟周期为高,1个时钟周期为低,为负脉冲 。 输出负脉冲的周期为时钟周期的N倍,频率是1/N,称为分频器,可以用来给自动控制中的实时检测,实时控制提供时钟信号。,方式3 方波发生器,与2方式基本相同,也具有自动装入时间常数(计数初值)的功能,不同之处在于: 工作在3方式,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波;当计数初值为偶 数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。 由于3方式输出的波形是方波,并且具有自动重装计数初值的功能,因此,8254一旦计数开始,就会在输出端OUT输出连续不断的方波。,方式3,当计数值为奇数时,在前(N+1)2计数期间,OUT输出高电平,而后(N-1)2个计数期间,OUT输出为低电平。,方式4 软件触发选通信号,控制字写入8254后,计数器输出OUT为高电平 在写入计数初值后,而且GATE为高电平时,开始计数,计数到0后输出一个时钟周期的低电平脉冲。 门控信号GATE1时允许计数,GATE0禁止计数。 软件触发选通体现在当GATE为高电平时,写入计数初值后开始计数。,CPU送数据同时输出一数据选通信号,锁存数据。方式4可编程控制选通信号发出时间。,方式4和方式2的区别: (1)方式2的负脉冲是在计数到1时产生一个T的负脉冲,而方式4是在计数到0时产生一个T的负脉冲。 (2)在计数过程中,写入新的初值时,方式2是从下一次开始从新的初值计数,而方式4是从下一个脉冲就开始以新的值计数,因为方式4不能重复计数。,方式5 硬件触发选通信号,工作特点是由GATE上升沿触发计数器开始工作。 当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数。 在计数过程中(或者计数结束后),如果门控再次出现上升沿,计数器将从原装入的计数初值重新计数。 硬件触发选通:GATE信号一般由硬件产生。,计数开始的时刻,需要注意 当控制字写入8254时,所有的控制逻辑电路自动复位,这时输出端OUT进入初始状态。 处理器写入8254的计数初值只是写入了预置寄存器,要到时钟下降沿,减法计数器才开始工作。 方式0、方式4GATE信号为电平触发 方式1、方式5GATE信号为上升沿触发 方式2、方式3两种皆可,7.3 8254的编程,8254加电后的工作方式不确定 8254必须初始化编程,才能正常工作 写入方式控制字 写入计数初值 读取计数值 8254新增读回命令,1 方式控制字(A1A011),00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5,0 二进制 1 BCD码,示例,8254的控制字编程,;某个8254的计数器0、1、2端口和控制端口地址依次是40H43H ;设置其中计数器0为方式0,采用二进制计数,先低后高写入计数值 mov al,30h ;方式控制字:30H00 11 000 0B out 43h,al ;写入控制端口:43H,2 写入计数值,计数值写入计数器各自的I/O地址,示例,选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大值10000,8254的计数初值编程,;某个8254的计数器0、1、2端口和控制端口地址依次是40H43H ;设置计数器0采用二进制计数,写入计数初值:1024(400H) mov ax,1024 ;计数初值:1024(400H) ;写入计数器0地址:40H out 40h,al ;写入低字节计数初值 mov al,ah out 40h,al ;写入高字节计数初值,3 读取计数值,8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8254写入锁存命令 从计数器I/O地址:读取锁存的计数值,读取计数值,要注意读写格式和计数数制,;某个8254的计数器0、1、2端口和控制端口地址依次是40H43H,要读取通道1的计数值。 ;则先对通道1发出锁存命令,然后读取数据。 MOV AL,40H ;方式控制字:30H01 00 000 0B OUT 43H,AL ;写入控制端口:43H IN AL,41H,7.4 8254在PC机上的应用,定时中断和定时刷新,将计数器1作为定时刷新 看如何编写初始化程序段,从阅读初始化程序段 看计数器0作为定时中断的作用,8254初始化(定时中断),mov al,0011 0110B ;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 out 43h,al ;写入方式控制字 mov al,0 ;计数值为0 out 40h,al ;写入低字节计数值 out 40h,al ;写入高字节计数值,计数器0:定时中断,计数器0:方式3,计数值:65536,输出频率为1.19318MHz6553618.206Hz的方波 门控为常启状态,这个方波信号不断产生 OUT0端接8259的IRQ0,用作中断请求信号 每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,计数器1:定时刷新,门控总为高,选择方式2或3,2ms内刷新128次,即15.6s刷新一次,计数初值为18,需要重复不断提出刷新请求,8254初始化(定时刷新),mov al,0101 0100B ;计数器1为方式2, ;采用二进制计数,只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值,扬声器控制,计数器2的输出控制扬声器的发声音调 计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声 扬声器还受控于并行接口(8255芯片) 必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音,扬声器控制(频率设置),speaker proc push ax mov al,1011 0110B;0b6h out 43h,al ;写入控制字 pop ax out 42h,al ;写入低8位计数值 mov al,ah out 42h,al ;写入高8位计数值 ret speaker endp,扬声器控制(扬声器开),speakon proc push ax in al,61h or al,03h ;D1D0PB1PB011B,其他位不变 out 61h,al pop ax ret speakon endp,扬声器控制(扬声器关),speakoff proc push ax in al,61h and al,0fch ;D1D0PB1PB000B,其他位不变 out 61h,al pop ax ret speakoff endp,扬声器控制(主程序),;数据段 freq dw 1193180/600 ;代码段 mov ax,freq call speaker ;设置扬声器音调 call speakon ;打开扬声器声音 mov ah,1 ;等待按键 int 21h call speakoff ;关闭扬声器声音,在一个实际的数据采集系统中,要求5s采一个数,现场的主时钟的振荡频率为2.5MHz。 分析:选择工作方式3(方波发生器),连续工作对2.5M的脉冲分频。 时钟周期Tckl2.5106 计数初值n=T/Tck=5(l2.5106 )=1.25107 一个计数器最多的分频次数是65536,是不够用的。,例,采用两级计数器,用计数器0的输出OUT0作为计数器1的输入CLK1。 计数器0的计数值为50000 (C350H );计数器1的250 (FAH) 。则有: 总的计数值=50000250=1.25 107 计数器0:方式3(方波发生器)控制宇36H( 0011 0110B ) 计数器1:方式2(分频器)控制字54H)( 0101 0100B ) 设:控制口地址:CRPT;0号计数器:PRT0;1号计数器:PRT1,实现上述过程的程序如下: MOV AL,36H MOV DX,CRPT OUT DX,AL ;0号计数器方式3 MOV AL,50H MOV DX,PRT0 OUT DX,AL ;计数值低8位 MOV AL,C3H OUT DX,AL ;计数值高8位 MOV AL,54H MOV DX,CRPT OUT DX,AL ; 1号计数器方式2 MOV AL,FAH MOV DX,PRT1 OUT DX,AL ;计数值低8位,例:某火灾报警系统的部分接口电路如图所示。该系统 具有温度和烟雾浓度超限报警和自动灭火功能。当温度或烟雾浓度超限时,进行光报警;两者同时超限时,进行光、声报警,并开启电磁阀,进行喷淋灭火。按键A为手动报警按钮,按键B为解除报警按钮。半导体温度传感器的温度测量范围为0127,对应输出电压为0V5V。ADC0809输入电压范围为0V5V。开关式集成烟雾传感器报警时输出高电平,正常工作时输出低电平。8253的通道0、通道1、通道2均工作于方式3(方波发生器),按BCD码计数。扬声器的报警声音频率为2kHz。8253、8255的方式控制字及8255的置位/复位控制字格式如图所示。,GATE0 A0 CLK0 A1 OUT0 RD CLK1 WR 8253 GATE1 CS GATE2 OUT1 D7D0 CLK2 OUT2,IOW IOR A1 A0,PA7PA0 D7D0 PB0 PB1 CS PB2 WR PC0 RD A1 PC4 A0 8255 PC1 PC5 PC6 PC7,D7D0 IN0 ADDA ADDB ADDC EOC IN7 OE START ALE ADC 0809,+5V,烟雾传感器,驱动,电磁阀,喷淋头,温度传感器,D7D0 8259 CS A0,驱动,扬声器,驱动,1MHz,D7D0,D7D0,发光二极管,40H43H,80H83H,D7D0,20H21H,A0,+5V,+5V,按键 B解除警报,按键 A手动报警,IR7,IR1,IR0,8255的方式控制字格式如下:,8255 端口C按位置0/置1控制字,作用:指定PC口的某一位(某一个引脚)输出高平或低电平。,注意:C口控制字虽然是对端口C操作,但应写入到控制口地址,而不是写入到C数据口,8253的方式控制字(A1A011),00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5,0 二进制 1 BCD码,示例,部分初始化、主程序及中断服务子程序如下: CODE SEGMENT ASSUME DS:DATA,CS:CODE START: ;8259初始化 MOV AL,13H ;初始化8259 ICW1 OUT 20H,AL MOV AL, ;送中断类型码基值 OUT 21H,AL MOV AL,0DH OUT 21H,AL ;8255初始化 MOV AL, ;置8255工作方式 OUT 83H,AL MOV AL,00H ;C口初始化 OUT 82H,AL,91H,08H,;8253初始化 MOV AL,37H ;置8253通道0方式控制字 OUT 43H,AL MOV AL,00H ;置8253通道0计数初值 OUT 40H,AL MOV AL,10H OUT 40H,AL MOV AL, ;置8253通道1方式控制字 OUT 43H,AL MOV AL,00H ;置8253通道1计数初值 OUT 41H,AL MOV AL,10H OUT 41H,AL MOV AL, 0B7H; 置8253通道2方式控制字 OUT 43H,AL,77H或7FH,MOV AL, ;置8253通道2计数初值 OUT 42H,AL MOV AL, ; OUT 42H,AL ;中断设置 MOV AH,25H ;设置中断向量 MOV AL,08H ;中断类型号为入口参数 MOV BX, ;DS:DX指向4字节地址 MOV DS,BX MOV DX, ; INT 21H MOV AH,25H MOV AL, ; MOV BX,SEG KEYAINT MOV DS,BX,00H,05H,SEG KEYBINT,OFFSET KEYBINT,09H,MOV DX,OFFSET KEYAINT INT 21H STI ;数据采集 MOV AL,00H ;选ADC0809模拟量输入通道号 OUT 81H,AL LOP: MOV AL, ;置PC4=1,锁存模拟量通道选择号 OUT 83H,AL NOP MOV AL,08H ;置PC4=0,启动A/D转换 OUT 83H,AL LOP1:IN AL,82H ;读8255C口,查询EOC TEST AL,01H JZ LOP1 IN AL,80H ;读A/D转换结果 CMP AL,0A0H ;判断是否高于上限,09H,JA ABOVE IN AL,82H ;判断烟雾传感器是否报警 TEST AL,02H JNZ BJ MOV AL,0EH OUT 83H,AL JMP LOP ABOVE:IN AL,82H TEST AL,02H JZ BJ MOV AL,0F0H ;启动报警及灭火功能 OUT 82H,AL JMP LOP BJ: MOV AL,0FH ;光报警 OUT 83H,AL JMP LOP,;中断服务 KEYAINT PROC FAR ;按键A中断服务子程序 PUSH AX MOV AL,0F0H OUT 82H,AL MOV AL,20H ;给8259发中断结束命令 OUT 20H,AL POP AX IRET KEYAINT ENDP,;中断服务 KEYBINT

温馨提示

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

评论

0/150

提交评论