定时与计数.docx
- 文档编号:10826340
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:31
- 大小:621.58KB
定时与计数.docx
《定时与计数.docx》由会员分享,可在线阅读,更多相关《定时与计数.docx(31页珍藏版)》请在冰豆网上搜索。
定时与计数
第3章(5)可编程定时器/计数器
3.5.1概述
1)定时与计数
1.定时
定义:
提供的时间基准。
分类:
内部定时、外部定时。
2.计数
定时与计数本质上是一致的。
计数的信号随机,定时的信号具有周期性。
2)定时方法
1.软件定时
通过软件指令周期方法定时,如执行循环程序。
增加CPU负担,通用性差,一般用于短延时。
2.不可编程硬件定时
采用中小规模IC构成。
不增加CPU负担,成本低,定时值不可改变。
3.可编程硬件定时
采用可编程计数器完成,软件可改变计数值。
可编程定时/计数器:
实质上定时和计数本质上都是脉冲计数器,定时
计的是内部基准始终源产生的脉冲,计数是计外部脉冲。
3)定时/计数器工作原理
数据线
计数初值寄存器
输出脉冲
输入脉冲
减1计数器
1CPU将数值送入到初值寄存器及计数器中。
2输入一个脉冲计数器计数一次(计数器减1)。
3减到0时输出一个脉冲(输出时间间隔相同)。
4自动恢复预置数,返回第②步。
1.定时与计数
定时(输出脉冲间隔时间)=一个输入脉冲的周期时间*脉冲个数
计数初值N=输出脉冲时间/输入脉冲时间
2.定时与频率
每秒钟输出脉冲个数为定时器输出的频率。
改变定时器的预置数既可改变输出的频率,通过此频率可产生不同的音调。
计数初值N=输入频率/输出频率
3.5.28253/8254定时/计数器
基本功能
1.3个独立的16位定时/计数器(T/C);
每个T/C功能:
2.可按二、十进制(BCD)计数;
3.有6种不同的工作方式;
4.最高频率10MHz;(82801BA为14.31818MHz)
5.有读回状态/当前计数值功能。
(8253没有)
8253/8254引脚与内部结构
8253/8254含有三个独立的计数器,是一个可编程的接口芯片。
其内部结构如下:
⒈计数器
计数器内部逻辑:
每个计数器中:
一个16位初值寄存器。
一个16位减1计数器。
一个16位当前计数值锁存器。
CLK引脚:
计数脉冲。
GATE引脚:
计数控制。
OUT引脚:
计数为0输出。
⒉数据总线缓冲器
作用:
与CPU交换数据。
确定8253/8254工作方式。
预置计数初值。
读出当前计数值。
⒊读/写控制逻辑
/CS=0片选A1A0
/RD=0读00访问计数器0
/WD=0写01访问计数器1
10访问计数器2
11写控制寄存器
3.5.68253/8254工作方式控制字及其初始化操作
CPU操作功能及命令
I/O端口地址:
8253/8254提供四个端口(使用A1A0);
命令:
初始化—设置工作方式、设置计数器初值;
操作—重写计数器初值、取状态命令。
状态:
当前计数值、工作方式及当前状态。
I/O端口操作冲突时解决方法:
工作方式与读取状态命令采用特征位方法;
读取的当前计数值或状态采取时序方法。
8253/8254命令关系表
1.8253/8254的工作方式控制字(A1A0=11)
D0=0按二进制计数
=1按十进制计数
D3D2D1=000方式0
001方式1
010方式2
011方式3
100方式4
101方式5
D5D4=00计数器中数据送锁存器
=01仅访问初值寄存器低字节
=10仅访问初值寄存器高字节
=11先访问低字节再访问高字节
D7D6=00选择计数器0
=01选择计数器1
=10选择计数器2
2.计数初值
(1)不同通道的计数初值写到不同地址中;
(2)每次写入一个字节;
(3)根据控制字定义,决定高、低字节写入方法。
(4)初始值的范围是:
•二进制为65536(0000H)~1(0001H)
•十进制为10000(0000H)~1(00001H)
计算公式:
Ci=CLK/OUT或Tc=CLK/OUT
例:
MOVAL,01110101B;T/C1,先低后高字节,方式2,BCD
OUT43H,AL
OUT41H,00H;
OUT41H,20H;计数初值为2000
MOVAL,00010110B;T/C0,只低字节,方式3,二进制
OUT43H,AL
OUT41H,50H;计数初值为50H(80)
3.8253/8254的读操作(A1A0=00~10)
(1)读取当前计数值方法1
(a)锁存当前计数值或禁止计数
(b)读取当前计数值
例:
MOVAL,01000101B;T/C1,锁存,先低后高字节,方式2,BCD
OUT43H,AL
INAL,41H
MOVAH,AL
INAL,41H
XCHGAH,AL;AX为T/C1当前计数值
(2)读取当前计数值方法2—使用读回命令
特征位:
D7D6=11。
功能选择:
锁存计数值—D5D4=01;
锁存状态—D5D4=10。
计数器选择:
T/C0—D1=1,T/C1—D2=1,T/C2—D3=1。
特点:
控制字同时只能锁存单个通道,
读回命令可同时锁存多个通道。
例:
MOVAL,11010100B;T/C1,锁存计数值
OUT43H,AL
INAL,41H;
MOVAH,AL
INAL,41H
XCHGAH,AL;AX为当前计数值
MOVAL,11011010B;T/C0、T/C2锁存计数值
OUT43H,AL
INAL,40H;
MOVAH,AL
INAL,40H
XCHGAH,AL;AX为T/C0当前计数值
INAL,42H;
MOVAH,AL
INAL,42H
XCHGAH,AL;AX为T/C2当前计数值
(3)读取计数器当前状态—使用读回命令
状态字格式:
例:
MOVAL,11100100B;T/C1,锁存状态值
OUT43H,AL
INAL,41H;若AL=00110101,表示T/C1为方式2,BCD码,先低后高读/写,当前OUT为低电平
:
MOVAL,11100010B;T/C0,锁存状态值
OUT43H,AL
INAL,40H;若AL=00010110,表示T/C0;为方式3,
;二进制码,只有低字节,当前OUT为低电平
(4)使用硬件门控信号GATE
用门控信号GATE禁止计数过程后,直接使用IN指令读出当前计数值。
3.5.78253/8254的工作方式
PC机中8253/8254工作方式:
计数器0方式3
计数器1方式2
计数器2方式2
方式0:
计数结束时中断
特点:
一次计数;
GATE高允许、下降暂停、低禁止、上升继续计数;
重写后下一脉冲下降沿重新计数;
OUT在控制字或计数初值写完时变低、计数值为0时变高(N+1个低)。
方式一:
硬件可重触发单稳
方式二:
重复计数,计数为1时,OUT输出一个负脉冲。
GATE=0暂停计数GATE=1恢复计数。
方式三:
方波发生器。
重复计数,计数为零OUT前一半输出为高后一半输出为低(一半是对初值数而言)。
GATE=0暂停计数GATE=1恢复计数。
3.5.108253/8254的应用编程
例一、选择计数器2,方式3,初值为533H、二进制计数、接口地址为11000001XX。
MOVDX,307H;控制寄存器口地址
MOVAL,10110110B;D7—D0=10110110
OUTDX,AL
MOVDX,306H;选择计数器2
MOVAX,533H
OUTDX,AL
MOVAL,AH
OUTDX,AL
例二、选择计数器0、方式2、二进制计数、计数值在BYTEH、BYTEL
中接口同上。
MOVDX,307H
MOVAL,00110100B
OUTDX,AL
MOVDX,304H;选择计数器0
MOVAL,BYTEL
OUTDX,AL
MOVAL,BYTEH
OUTDX,AL
例3:
用8253监视一个生产流水线,要求每通过50个工件,扬声器响5秒,发声频率为
2000Hz.
设:
8253端口地址:
40H–43H
8255的A组工作方式为方式0,A口为输出口,其端口地址:
80H
编程:
MOVAL,00010101B;TC0,单字节传送,方式2,十进制计数
OUT43H,AL
MOVAL,50H;基值=50
OUT40H,AL
STI;开中断
LOP:
HLT;等待中断
JMPLOP;中断返回后,继续等待
:
;ISR代码
MOVAL,01H
OUT80H,AL;8255PA0置“1”,启动TC1
MOVAL,01110111B;TC1,双字节传送,方式3,BCD计数
OUT43H,AL
MOVAL,50H;计数基值=FIN/FOUT=1250
OUT41H,AL
MOVAL,12H
OUT41H,AL
CALLDL5S;延时
MOVAL,00
OUT80H,AL
:
IRET
例4:
在实时控制系统中利用8253实现采样周期发生器的应用
原理:
利用8253/8254的方式2(方式3)的固定输出频率,产生中断请求信号。
设:
8253/8254的端口地址为230H–233H
编程:
:
;8253/8254初始化
MOVDX,233H
MOVAL,00010100B;TC0,单字节传送,方式2,二进制计数
OUTDX,AL
MOVDX,230H
MOVAL,00H;TC0计数基值=65535
OUTDX,AL
MOVDX,233H
MOVAL,01110110B;TC1,双字节传送,方式3,二进制计数
OUTDX,AL
MOVDX,231H
MOVAL,TIME;送低字节
OUTDX,AL
MOVAL,TIME+1;送高字节
OUTDX,AL
:
8253/8254在PC系列微机中的应用
⒈接口地址
8253/8254的/CS接LS138的/Y2(/TCCS端)。
8253/8254接口地址为0040H~~005FH,通常使用口地址:
40H选择计数器0
41H选择计数器1
42H选择计数器2
43H控制寄存器
⒉计数器时钟输入
三个计数器使用同一种输入脉冲。
计数脉冲CLK0\CLK1\CLK2的频率为1.193M。
方波输出频率为fout=CLK/计数值=1.193MHz/65536=18.2H。
方波输出周期Tout=1/18.2x1000ms=54.945ms
⒊计数器0----日时钟定时
GATE0=1
OUT0输出:
连8259的IRQ0端作为“日时钟”计时中断请求。
工作在方式三、计数初值为0、即计数216产生一个中断信号。
1.193M/216=18.2Hz,
即每54.945ms产生一个“日时钟”请求。
PC机8253/8254-计数器0初始化:
MOVAL,36H;00110110b=0#计数器、读写一个字、工作方式3
OUT43H,AL
MOVAX,0
OUT40H,AL;先送低字节到计数器0
MOVAL,AH
OUT40H,AL;后送高字节到计数器0
PC系列微机日时钟工作过程:
8253/8254计数器每隔54.945ms产生一个8#硬中断,在中断服务程序中使双字变量TIMER+1(40:
6FH、40:
6EH、40:
6DH、40:
6CH)。
1秒钟=18.2(计时单位)
1分钟=1092(计时单位)
1小时=65543(计时单位)
1天=1573040(001800B0H)(计时单位)
当TIMER计到24小时将TIMER所在内存单元清零.
·每次开机时人工输入或自动设置当前日期和时间并换算成上述计时单位
存放在变量TIMER处。
·由当前TIMER的值很容易计算出当前日、时、分、秒日时钟。
·PC微机为用户提供软中断日时钟服务INT1AH
读TIMER值到CX/DX
MOVAH,00H;设置功能号为00H
INT1AH
读时分秒到CH/CL/DH
MOVAH,02H;设置功能号为02H
INT1AH
读年月日到CX/DH/DL
MOVAH,04H;设置功能号为04H
INT1AH
⒋1#-----计数器
GATE1=1
OUT1产生RAM动态刷新请求信号DRQ0。
输入频率fin=1.1931816MHzTin=1/(1.1931816x106)Hz=0.838ns
工作方式:
方式2计数值18(18X0.838ns=15us)
MOVAL,01010100B;通道1/仅低字节/方式2/二进制计数
OUT43H,AL
MOVAL,18
OUT41H,AL;1#计数器高字节自动清零
⒌2#----计数器
1.19M
CLK2
OUT2
GATE2
8254
D0~7
CPU
功
放
&
PB0PB1
8255
8255的PB0接GATE2控制2#计数器。
OUT2与8255的PB1经与门输出到扬声器。
由OUT2发声音:
PB0=1PB1=1则OUT2信号到扬声器。
举例:
由OUT2发出1000H声音(假设PB0、PB1=1)
MOVAL,10110110B;通道2/双字节/方式3/二进制计数
OUT43H,AL
MOVAX,4A9H;N=CLK/fout=(1.1931816x106)/1000
OUT42H,AL
MOVAL,AH
OUT42H,AL
例:
利用8253/8254编制歌曲程序
·七个低音频率:
175196221234262294330
·七个中音频率:
350393441467525589661
·七个高音频率:
700786882935104911781322
;filenamemusic.asm
.386
datasegmentuse16
tabfdw-1,262,350,352,350,441,393,350,393,441
dw350,352,441,525,589,588,589,525,441
dw440,350,393,350,393,441,350,293,294,262
dw350,589,525,441,440,350,393,350,393,589
dw525,441,440,525,589,700,525,441,440,350
dw393,350,393,441,350,294,292,262,350,0
tabtdb4,4,6,2,4,4,6,2,4,4
db6,2,4,4,12,1,3,6,2
db4,4,6,2,4,4,6,2,4,4
db12,4,6,2,4,4,6,2,4,4
db6,2,4,4,12,4,6,2,4,4
db6,2,4,4,6,2,4,4,12
dataends
codesegmentuse16
assumecs:
code,ds:
data
beg:
movax,data
movds,ax
open:
inal,61h;读8255-B口
oral,00000011b
out61h,al;接扬声器
aga:
leasi,tabf;SI频率指针
leadi,tabt;DI节拍指针
last:
cmpwordptr[si],0;曲尾?
Jzaga;是
movdx,12h
movax,34deh;DX&AX=1234DEH(1.193MHZ)
divwordptr[si];输入频率/输出频率
out42h,al;分频数低8位
moval,ah
out42h,al;分频数高8位
calldelay;延时
addsi,2;节拍表指针+2
incdi;频率表指针+1
movah,1
int16h;有键否?
Jzlast;无
close:
inal,61h
andal,11111100b
out61h,al;关扬声器
movah,4ch
int21h
delayproc
moveax,0
moval,[di];取节拍
imuleax,55000;15000(1us)X节拍
movdx,ax;乘积低16位送DX
roleax,16
movcx,ax;乘积高16位送CX
movah,86h;INT15H入口参数AH=86HCXDX延时时间参数
int15h
ret
delayendp
codeends
endbeg
五实时钟芯片介绍(MC146818)
24pin、+5v供电(可用后备电池)的RTC(RealTimerChip)
日时钟:
支持时、分、秒的更新。
实时钟:
支持年、月、日、星期、时、分、秒的更新。
若有后备电池关机后可继续走时。
MC146818实时钟特性:
1实时钟RAM区(00–0DH):
存放年、月、日、星期、时、分、秒更新的数据(BCD码)。
位移
信息内容
位移
信息内容
0
秒
7
日
1
报警秒
8
月
2
分
9
年
3
报警分
10
寄存器A
4
时
11
寄存器B
5
报警时
12
寄存器C
6
星期几
13
寄存器D
32H
世纪
②系统配置数据RAM区(0FH~3FH)
③地址寄存器:
存放芯片内部的存储地址。
④读写过程:
先由地址选通信号将D0~D7线上地址数据送入地址寄存器中,再由数据选通信号、内部地址译码信号对某一内部单元进行读写。
⑤状态寄存器:
寄存器A:
输入/输出频率选择
D7(UIP):
时钟更新
D6(DV2):
D5(DV1):
分频器输入频率选择
D4(DV0):
D3(RS3):
D2(RS2):
分频器输出频率选择
D1(RS1):
D0(RS0):
寄存器B:
工作模式选择
D7(TE):
计时允许
D6(PIE):
周期中断允许
D5(AIE):
报警中断允许
D4(UIE):
更新结束中断允许
D3(SQWE):
方波输出允许
D2(DM):
信息格式选择
D1(M24):
24/12选择
D0(MSE):
夏令时允许
寄存器C:
中断请求(只读)
D7(IRF):
中断请求
D6(PF):
周期中断
D5(AF):
报警中断
D4(UF):
更新中断
寄存器D:
电源状态(只读)
D7(VRB):
掉电状态
D5--D0:
日期报警值
⑥微机的实时钟端口:
70H为地址选通端口,71H数据选通端口。
如读当前“小时”的数据:
MOVAL,04
OUT70H,AL;选择操作单元
NOP
NOP
INAL,71H;“小时”数以BCD码读入AL中
写“小时”数据:
MOVAL,04
OUT70H,AL;选择操作单元
NOP
NOP
MOVAL,3
OUT71H,AL;写数据
初始化程序段如下:
CMOS-PORTEQU070H;MC146818—RAM区地址端口
:
CALLINI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 计数