单片机定时器实验.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三单片机内部定时器应用
实验目的
1、理解单片机内部定时器的工作原理及使用方法
2、了解单片机定时中断程序的编写和调试方法
3、掌握定时器的基本使用方法
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
1、单片机定时器的工原理
MCS-51 单片机内部有两个16 位可编程的定时器/ 计数器 T0 和 T1。它们即可用作定时器方式,又
可用作计数器方式。其中T0 由 TH0 和 TL0 计数器构成; T1 由 TH1 和 TL1 计数器构成。
工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个
机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定
时器每隔( 1/12MHZ)× 12=1us 加 1。
工作于计数器方式时,对或管脚的负跳变(1→0)计数。它在每个机器周期的S5P2 时采样外
部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。因此需要两个机器
周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24 。
特殊功能寄存器TMOD用于定时器 / 计数器的方式控制。高 4 位用于设置 T1,低 4 位用于设置 T0。
如图 4-7 所示。
图 4-7 定时器模式控制字格式
TCON寄存器用于定时器的计数控制和中断标志。如图4-8 所示。
图 4-8 定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器 / 计数器的使用,简而概之:( 1)如需用中断,则将 EA和相关中断控制位置 1;( 2)根据需要设置工作方式,即对 TMOD设置;(3)然后启动计数,即对 TR0或 TR1置1。(4)如使用中
断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1
进行判断。
2、用定时器编写一个秒计时器
假设系统使用的晶振频率为12MH Z,即每个机器周期为1us 。如使用方式 1,则定时时间最长是216
× 1us=65536us= ,小于 1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为 50ms,则必须定
时中断 20次才达到 1s并对秒计时单元加 1, 20即为软件计数次数。最后再把秒计时单元的值转成显示数码送
显示缓冲区。
定时器中断服务程序
主程序
图 4-9定时器应用程序流程图
实验内容保护现场
初始化中断控制器,定
N
1、单片机定时器秒计时器
时器,软件初值,显示软件计数 -1=0 ?
LEDCLK BIT ;
缓冲区
Y
秒计时器加 1,转成显
启动定时器示数据并送显示
恢复现场
LEDDIN BIT ;
LEDDATA DATA P0;
DSEG AT 30H
dispbuf: ds 8;显示缓冲区
timetick: ds 1
second:ds 1
minute:ds 1
hour:ds 1
PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
MOV TH0,#(65535-TIMECOUNT)/256
MOV TL0,#(65535-TIMECOUNT)MOD 256
SETB RS0;后面所使用的R0~r7
DJNZ timetick,P_T02
MOV timetick,#20
INC second
;cjne second,#60,P_T01
;MOV SECOND,#0
;inc minute;
P_T01: MOV A,second
MOV B,#100
DIV AB
MOV R0,#dispbuf+2
MOV @R0,A
DEC R0
MOV A,B
MOV B,#10
DIV AB
MOV @R0,A
DEC R0
MOV @R0,B
P_T02:CLR RS0
POP DPL
POP DPH
POP ACC
POP PSW
RETI
MAIN:
mov sp,#60h
MOV dispbuf,#0
MOV dispbuf+1,#0
MOV dispbuf+2,#0
MOV dispbuf+3,#0
MOV dispbuf+4,#0
MOV dispbuf+5,#0
MOV dispbuf+6,#0
MOV dispbuf+7,#0
MOV TH0,#(65535-TIMECOUNT)/256;3CAF
MOV TL0,#(65535-TIMECOUNT)MOD 256;
MOV TMOD,#01H;设定定时器的工作方式
SETB ET0;允许 T0 溢出中断
SETB TR0;启动 t0
SETB EA;开启总中断
MAIN1:
ACALL DISP
SJMP MAIN1
DISP:
MOV R6,#8
MOV R0,#dispbuf
CLR LEDCLK
CLR LEDDIN
NOP
DISP1: SETB LEDCLK
MOV A,@R0
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV LEDDATA,A;
MOV R7,#5
ACALL DelayNms
INC R0
SETB LEDDIN
CLR LEDCLK
DJNZ R6,DISP1
RET; 大延时
DelayNms:
D1: ACALL Delay1ms
DJNZ R7,D1
RET;延时子程序
Delay1ms:
push 07
mov R7,#250