第3章定时技术._第1页
第3章定时技术._第2页
第3章定时技术._第3页
第3章定时技术._第4页
第3章定时技术._第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、3.1 基本概念基本概念一、问题的提出一、问题的提出:1.定时定时例如例如: 一天一天2424小时的计时小时的计时( (称为日时钟称为日时钟) )。 在监测系统中,对被测点的定时取样。在监测系统中,对被测点的定时取样。 在读键盘时,为去抖,一般延迟一段时间,再读。在读键盘时,为去抖,一般延迟一段时间,再读。 在步进电机速度控制程序中,利用时间间隔来控制在步进电机速度控制程序中,利用时间间隔来控制步进电机的转速。步进电机的转速。2.计数计数 例如例如: 对零件和产品的计数;对零件和产品的计数; 对大桥和高速公路上车流量的统计,等等。对大桥和高速公路上车流量的统计,等等。二、定时的方法 为获得所需

2、要的定时,要求有准确而稳定的时间基准,产生这种时间基准通常采用两种方法-软件定时和硬件定时。1.软件定时 运用软件编程,循环执行一段程序而产生的等待延时。优点:不需增加硬设备,只需编制相应的延时程序以备调用。缺点:CPU执行延时待时间增加了CPU的时间开销,延时时间越长,这 种等待开销越大,降低了CPU的效率,浪费了CPU的资源。2.硬件定时 它是采用可编程的定时/计数器或单稳延时电路产生定时或延时。一、外部特性与内部逻辑1、外部特性(1)定时/计数器8253/8254是24脚双列直插式芯片,+5V电源供电。(2)每个芯片内部有3个独立的计数器,通过编程选择计数器和设置工作方式,计数器既可作计

3、数器用,也可作定时器用,故称定时/计数器,记作T/C。3.2 可编程定时/计数器8253/8254优点: 不占用CPU的时间,定时时间长,使用灵活。 定时准确,定时时间不受主机频率影响,定时程序具有通用性,故得到广泛应用。 如Intel8253/8254,Zilog的CTC等。 数据总线D0D7:为三态输出/输入线。用于将8253与系统数据总线相连。 片选线CS-:为输入信号,低电平有效。 读信号RD-:为输入信号,低电平有效。 写信号WR-:为输入信号,低电平有效。地址线A1A0:这两根线接到系统地址总路线的A1A0上。面向I/O设备的信号线: 计数器时钟信号CLK:CLK为输入信号。 计数

4、器门控选通信号GATE0-2:为输入信号。 计数器输出信号OUT0-2;为输出信号。 2、引脚的功能定义;1224121413GNDD7D6D5D4D3D2D1D0CLK0OUT0GATE0VCCWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT18253/8254图3.1 定时/计数器8253/8254 引脚图8253、8254 读写操作及端口地址CSRDWRA1A0操 作PC微机实验平台01000加载T/C0(向计数器0写入“计数初值”)40H304H01001加载T/C1(向计数器1写入“计数初值”)41H305H01010加载T/C2(向计数器2写入“计数初值”)4

5、2H306H01011向控制器寄存器写“方式控制字”43H307H00100加载T/C0(从计数器0读出“当前计数值”)40H304H00101加载T/C1(从计数器1读出“当前计数值”)41H305H00110加载T/C2(从计数器2读出“当前计数值”)42H306H00111无操作三态 1 禁止三态2.内部逻辑结构 数据总线缓冲器:它是一个三态、双向8位寄存器,用 于将8253与系统数据总线D0D7 相连。 读/写逻辑。 控制命令寄存器:它接受CPU送来的控制字。数据总线缓冲器读/写逻辑控制命令寄存器计数器0计数器1计数器2CLK0GATE0OUT0CLK1GATE1OUT1CLK2GAT

6、E2OUT2D0D7 A0A1RDWRCS图3.2 定时/计数器8253/8254内部框图内部总线 计数器:8253有3个独立的计数器(计数通道), 计数器由16位初值寄存器、减1计数器和当前计数值锁存器组成。16位当前计数值锁存器16位减1计数器16位计数初值寄存器锁存后读出当前值LSBMSB&CLKGATE装入/读出初值LSBOUT图3.3 计数通道内部逻辑图 计数初值寄存器(16位):用于存放计数初值(定时常数、分频系数),最大计数值为65536(64KB)。在初始化时同时一起装入的,计数初值寄存器的计数初值,在计数器计数过程中保持不变。 减1计数器(16位):用于进行减1计数操

7、作,每来一个时钟脉冲,它就作减1运算,直至将计数初值减为零。 当前计数值锁存器(16位):用于锁存减1计数器的内容,以供读出和查询。二、计数初值 计数初值与输入时钟(CLK)频率及输出波形(OUT)频率之间的关系为:Tc=CLK/OUT例:CLK=1.193MHz ,OUT=18.2HZ, 则Tc=65549三、读写操作及编程命令 1.方式命令的作用 主要是对8253进行初始化,初始化的工作有两点:(1)向命令寄存器写入方式命令,以选择计数器(3个计数器之一),确定工作方式(6种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD或二进制码)。(2)向已选定的计数器按方式命令

8、的要求写入计数初值。 D7D6D5D4D3D2D1D0计数器选择读写字节数工作方式码制2. 方式命令的格式 方式命令的格式如下所示: D7D6(SC1SC0): 用于选择计数器SC1SC0=00 选择0号计数器SC1SC0=01 选择1号计数器SC1SC0=10 选择2号计数器SC1SC0=11 不用 D5D4(RL1RL0): 用来控制计数器读/写的字节数(1或2个字节)及读/写高低字节的顺序。RL1RL0=00 为锁存命令RL1RL0=01 仅读/写一个低字节RL1RL0=10 仅读/写一个高字节RL1RL0=11 读/写2个字节, 先是低字节,后是高字节D7D6D5D4D3D2D1D0计

9、数器选择读写字节数工作方式码制 D0(BCD):用来指定计数器的码制,是按二进还是按二十进制数计数。BCD=0 二进制 BCD=1 二十进制 DD(): 用来选择计数器的工作方式。10= 000 0方式10= 001 1方式 10= 010 2方式10= 011 3方式10= 100 4方式10= 101 5方式(110和111不用)例1:选择2号计数器,工作在3方式,计数初值为533H(2个字节),采用二进制计数。其初始化程序段为: MOV DX,307H ;命令口 MOV AL,10110110 B ;2号计数器的初始化命令字 OUT DX,AL ;写入命令寄存器 MOV DX,306H

10、;2号计数器数据口 MOV AX,533H ;计数初值 OUT DX,AL ;选送低字节到2号计数器 MOV AL,AH ;取高字节送AL OUT DX,AL ;后送高字节到2号计数器方波发生器3. 读当前计数值 在事件计数器的应用中,需要读出计数过程中的当前计数值,以便根据这个值做计数判断。 例2:要求读出并检查1号计数器的当前计数值是否是全“1”(假定计数值只有低8位),其程序段为 MOV DX, 307H ;命令口L: MOV AL,01000000B ;1号计数器的锁存命令 OUT DX,AL ;写入命令寄存器 MOV DX,305H ;1号计数器数据口 IN AL,DX ;读1号计数

11、器的当前计数值 CMP AL,0FFH ;比较 JNE L ;非全“1”,再读 HLT ;是全“1”,暂停四、工作方式及特点 8253/8254芯片的每个计数器通道都有6种工作方式可供选用。 1. 0方式-低电平输出(GATE信号上升沿继续计数) 图3.4 8253的0方式时序波形n=5n=5CLKOUTWRWRGATEOUTWROUT 543210543210n=998n=4432100方式有如下3个特点: 当向计数器写完计数值后,开始计数,计数一旦开始,输出端OUT就变成低电平,并在计数过程中一直保持低电平,当计数器减到零时,OUT立即变成高电平。 门控信号GATE为高电平时,计数器工作;

12、当GATE为低电平时,计数器停止了工作,其计数值保持不变。如果门控信号GATE再次变高时,计数器从中止处继续计数。 在计数器工作期间,如果重新写入新的计数值,计数器将按新写入的计数初值重新工作。例1:使计数器T1工作在0方式,进行16位二进制计数,计数初值的高低字节分别为BYTEH和BYTEL。 其初始化程序段为: MOV DX,307H ;命令口 MOV AL,01110000B ;方式字 OUT DX,AL MOV DX,305H ;T1数据口 MOV AL,BYTEL ;计数值低字节 OUT DX,AL MOV AL,BYTEH ;计数值高字节 OUT DX,AL 2. 1方式-低电平输

13、出(GATE信号上升沿重新计数) 1方式为可编程的单稳态工作方式。图3.5 8253的1方式时序波形n=4n=3CLKGATEWROUTOUTWROUT 43210432132n=210210GATE40GATE情况一:1. 写入计数初值后,计数器并不立即开始工作;2. 门控信号GATE有效,才开始工作,使输出OUT变成 低电平;3. 直到计数器值减到零后,输出才变高电平。情况二:1. 在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数,见图见图3.5中。2. 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值计满回零且门控信号再次出现上升沿后,才按

14、新写入的计数初值开始工作,见图3.5所示。例2: 使计数器T2 工作在1方式,进行8位二进制计数,并 设计数初值的低8位为BYTEL。 其初始化程序段为 MOV DX,307H ;命令口 MOV AL,10010010B ;方式字 OUT DX,AL MOV DX,306H ;T2数据口 MOV AL,BYTEL ;低8位计数值 OUT DX,AL图3.6 8253的2方式时序波形n=4n=3CLKWROUTOUTWROUT 432101321321020(4)(0)GATEWRn=4n=3334320(3)213113. 2方式-周期性负脉冲输出 2方式是一种具有自动装入时间常数(计数初值)

15、的N分频器。例3:使计数器T0 工作在2方式,进行16位二进制计数。 其初始化程序段为 MOV DX,307H ;命令口 MOV AL,00110100B ;方式字 OUT DX,AL MOV DX,304H ;T2数据口 MOV AL,BYTEL ;低8位计数值 OUT DX,AL MOV AL,BYTEL ;高8位计数值 OUT DX,AL图3.7 8253的3方式时序波形CLKWROUTOUT WR2n=4n=532222324.3方式-周期性方波输出 3方式工作方式与2方式基本相同,也具有自动装入时间常数(计数初值)的功能。不同之处在于:(1)工作在3方式,引脚OUT输出的不是一个时钟

16、周期的负脉冲,而是占空比为1:1或近似1:1的方波;当计数初值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。(2)由于3方式输出的波形是方波,并且具有自动重装计数初值的功能,因此,8253一旦计数开始,就会在输出端OUT输出连续不断的方波。5. 4方式-单次负脉冲输出(软件触发) 4方式工作方式是一种由软件启动的闸门式计数方式,即由写入计数初值来触发计数器开始工作。门控信号GATE为高电闰时,允许计数器工作。例4:使计数器T1工作方式4方式,进行8位二进制计数,并且只装入高8位计数值。其初始化程序段为: MOV DX,307H ;命令口 MOV AL,0011010

17、0B ;方式字 OUT DX,AL MOV DX,304H ;T2数据口 MOV AL,BYTEL ;低8位计数值 OUT DX,AL图3.8 8253的4方式时序波形CLKWROUTOUT WR5n=54201321GATE554320OUTn=3310210n=2 6. 5方式-单次负脉冲输出(硬件触发) 5方式工作特点是由GATE上升沿触发计数器开始工作。在5方式工作方式下,当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数。 在计数过程中(或者计数结束后),如果门控再次出现上升沿,计数器将从原装入的计数初值重新计数。图3.9 8253的5方式时序波形CLKWROU

18、TOUT n=4GATE543210GATE54543210小结:6 种工作方式的比较 0方式(门控单稳)和1方式(门控单稳),这两种方式的输出波形类似。 2方式(分频器)和3方式(方波发生器),这两种方式共同的特点是具有自动再加载功能(装入)能力。二者的区别在于:2方式在计数过程中输出高电平,而在每当减1至0时输出宽度为1个TCLK的负脉冲。3方式是在计数过程中,OUT的信号是占空比为1:1的方波或近似方波。 4方式(软件触发单脉冲)和5方式(硬件触发单脉冲)。这两种方式的OUT输出波形相同,两者的区别是计数启动的触发信号不同,前者由写信号启动计数,后者或一个脉冲)。 3.3 8253-/8

19、254-2的应用举例 一、计数器-日时钟1.要求 设计一个计一天时间的日计时器-日时钟。2.分析 利用8253工作在3方式下,其输出为一系列方波,这种方波的周期是准确的,可以作为定时单位。比如,选用8253的计数器0,让其工作在3方式,计数初值设置为最大值-65536。 当输入时钟CLK0=1.1931816MHz,则输出方波的频率为 fout0=1.1931816MHz/65536=18.2Hz 输出方波的周期为: Tout0=1/18.21000ms=54.945ms 1天 2460601000ms/54.945ms=1573040(计时单位) 若以十六进制表示,则为何01800B0H个计

20、时单位。 同理,可得一小时包含65543个计时单位,1分钟包含1092 个计时单位,1秒钟包含18.2个计时单位。每次中断加1的计数值。 双字变量分别为:TIMER-LO(40H:6CH)和TIME-HI(40H:6EH)。 3.设计(1)硬件设计 日时钟的硬件主要由定时/计数器8254和中断控制器8259A构成,共工作原理框图如图3.10所示。该图还画出了在日时钟运行时对内存RAM的使用情况。8254OUT0GATE0CLK08259AIRQ0T=54.9msIR0INTD07INTA总线控制器S2S1S0D QQ状态=000CPPCLK+5VCPUINTRD07S2S1S0RAMFEA5H

21、F000HTIMER-LOTIMER-HI存储器TIMER-INT(中断程序)00:0000:20H00:23H40:6CH40:6EH向量向量指针时间值+1并保存图3.10 日时钟运行原理示意图2.3863632MHZ中断号8(2) 软件设计开中断有关寄存器进栈TIMER-LO加1到0? 到24小时?TIMER-HI加1TIMER-OFL置1并使日时钟复位0点0 TIMER-LO0 TIMER-HINYYN关闭软驱电机计算值减1 减至0?电机运行状态清零输出命令关闭电机调用定时报时中断ICH输出结束中断的命令EOI到8259A有关寄存器出栈N图3.11 日时钟中断8的中断服务程序流程图二、稳

22、定延时三、发声器1.要求 利用定/计数器8253发600Hz的长/短音。按任意键,开始发声;按ESC键,停止发声。8253的输入时钟CLK的频率1.19318MHz。2.分析3.设计(1)硬件设计(2)软件设计发声程序由主程序和子程序组成。主程序流程图如图3.13所示。.开始8253初始化计算并装入初值关闭扬声器按下任意键?发长音(BL=6)(CALL SSP)发短音(BL=1)(CALL SSP)按下Esc键?关闭扬声器返回DOS结束YYNN发长/短音的程序为:CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: JMP BEGIN LONG

23、1 EQU 6 SHORT1 EQU 1 BEGIN: MOV AX,CODE MOV CS,AX MOV DS,AX ;初始化8253 MOV AL,10110110B ; 方式命令 OUT 43H,AL ;命令口 ;装计数初值 MOV AX,1983 ;输出600Hz的计数初值 OUT 42H,AL ;先装低字节 MOV AL,AH ; 后装高字节 OUT 42H,AL ; 关闭扬声器 IN AL,61H ; 读入8255的PB口原输出值 AND AL,0FCH ; 置PB0和PB1为零,关闭GATE2和与门 OUT 61H,AL ; 查任意键,启动发声器 WAIT1: MOV AH, 0

24、BH ; 功能调用 INT 21H CMP AL,0H ;无按按下,发出长音 JE WAIT ;有键按下,发出长音 ;发长音 LOP: MOV BL,LONG1 ;长音入口参数 CALL SSP ;;调发声子程序 ;查Esc键,停止发声 MOV AH,0BH ;功能调用 INT 21H CMP AL,0H JE CONTINUE1 MOV AH,08H ;有键铵下,检测是Esc键? INT 21H CMP AL,1BH JE QUIT ;是,停止发声,并退出 ;发短音CONTINUE1: MOV BL,SHORT1 ;短音入口参数 CALL SSP ;调用发声子程序 JMP LOP ;循环 ;

25、关闭扬声器,并退出 QUIT: IN AL, 61H ;停止发声 MOV AH,AL AND AL,0FCH OUT 61H,AL MOV AL,AH MOV AX,4C00H ;退出,返回DOS INT 21H ;发声子程序SSP PROC NEAR IN AL,61H ;读取PB口的原值 OR AL,03H ;置PB0和PB1为高,打开GATE2与门 OUT 61H,AL ;开始发声 ;延时 SUB CX,CX ;设CX的值为216 L: LOOP L DEC BL ;BL为子程序的入口条件 JNZ L RET SSP ENDPCODE ENDS END START四、波特率时钟发生器1.

26、要求 设计一个波特率时钟发生器,其输入时钟CLK=1.19318Mz,波特率因子factor=16,输出的波特率为8档,它们分别是110b/s、 150b/s、 300b/s、 600b/s、1200 b/s、2400b/s、4800b/s、9600b/s。要求利用人-机对话方式选择波特率。按Esc键,退出。2. 分析 发送时钟 TxC=BaudFactor Tc=CLK/BaudFactor=CLK/BF 例如,若要求串行通信传输率为1200b/s,而波特率因子为16,8253的输入时钟为1.19318MHz,则8253的定时常数可利用关系式(3.2)求得: (CLK=1.19M,B=120

27、0,F=16) 1.19318106次/秒Tc= =62 1200位/秒16次/秒 题目要求实现波特率任选,就是实现8253定时常数的任选,其方法有二。一是查表法,二是现场计算法。3. 设计(1)硬件设计 波特率时钟发生器的硬件包括定时/计数器8253、并行接口芯片8255A及I/O端口地址译码电路等。(2)软件编程 计算出题目中要求的8档波特率的定时常数,分别为678H、497H、249H、124H、62H、31H、16H、8H。其次,设计查表法的波特率时钟发生器程序流程图,如图3.15所示。图3.15 波特率时钟发生器程序流程图开始8253初始化8255初始化关闭8253 提示选择波特率选

28、择波特率选择有错?YN波特率代号temp查表获取计数初值,并装入8253(CALL Load)有ESC键按下?关8253返回DOS结束NY产生不同波特率的程序如下: DATA SEGNENT TC-TABLE DW 678 ;0=110b/s ,定时常数表 DW 497 ;1= 150b/s DW 249 ;2= 300b/s DW 124 ;3= 600b/s DW 62 ;4= 1200b/s DW 31 ;5= 2400b/s DW 16 ;6= 4800b/s DW 8 ;7= 9600b/s TEMP DB(?) MES DB NOW BEGIN TO GENERATE BAUD-R

29、ATES CLK!,0DH,0AH DB HTP ESC TO QUIT !,0DH,OAH,$ INPUR-MES DB 0:110 1:150 2:300 3:600 4:1200,0DH,0AH ,$ DB 5:2400 6:4800 7:9600 ,0DH,0AH, $ ERROR-MES DB INPUT ERROR! TRY AGAIN PLEASE!,0DH,0AH, $ DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAOK:MOV AX,CODE MOV CS,AX MOV DX,307H ;8253命令口 MOV AL,0B6H ;82

30、53方式命令 OUT DX,AL MOV AL,0CH ;使PC6=0,关8253 OUT DX,AL MOV AX,DATA MOV DS,AX LEA DX,INPUT-MES ;提示选择波特率 MOV AH,09H INT 21HINPUT:MOV AH,08H INT 21H CMP AL,0 ;选择波特率是否正确? JB ERROR ;不正确,则转出错处理 CMP AL,7 JA ERROR SUB AL,30H ;正确 MOV TEMP,AL ;则保存波特率代号 CALL LOAD ;装入计数初值 JMP BEGIN ;启动8253波特率时钟发生器ERROR:MOV AH,9H ;

31、出错处理 LEA DX,ERROR-MES INT 21H JMP INPUT ;重新选择波特率BEGIN:LEA DX,MES ;显示提示信息 MOV AH,09H INT 21HSTART:MOV DX,303H ;8255命令口 MOV AL,0DH ;使PC6=1,启动8253, 产生波特率时钟 OUT DX,AL NOPLOP: MOV AH,0BH ;检测有键按下? INT 21H CMP AL,00 JE LOP ;无,等待 MOV AH,08H;有,检测是否是Esc键 INT 21H CMP AL,1BH JE QUIT;是,则退出 JMP LOP ;不是,循环查Esc键QUIT:MOV DX,303H MOV AL,0CH;关闭8253 OUT DX,AL MOV AX,4C00H;退出,返回DOS INT 21H LOAD PROC NEAR PUSH AX PUSH DX PUSH SI MOV DL,TEMP SHL DL,1;波形代号乘2,存放在DX中 AND DX,0FH ;只取DX的低4位 MOV

温馨提示

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

评论

0/150

提交评论