定时器计数器应用实验定时器计数器应用实验.doc
文本预览下载声明
单片机原理及应用实验报告
实验五 定时器/计数器应用实验
一、实验目的
学习8051内部定时器/计数器的使用方法和编程方法
掌握定时器0作为中断源时的中断处理程序的编程方法
二、实验原理
8051单片机内部有两个16为可编程定时器/计数器:T0和T1。16为是指它们都是有16个触发器构成,故最大计数模值为216-1。可编程是指它们的工作方式由指令来设定,或者当计数器用,或者当定时器用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。工作在定时方式时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟;工作在计数方式时,时钟脉冲(计数脉冲)由T0和T1(即P3.4和P3.5)输入。
定时器在计到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。
程序一:定时器/计数器0按定时模式和方式2工作,产生周期为1秒的方波,方波由P1.0口输出。此程序用中断方式。弄清IE寄存器的作用及矢量地址000BH的含义。
1、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:
机器周期=12÷6MHZ=2uS
(256-定时常数)×2uS=100us
定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟。
2、在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
3、实验电路及连线
4、实验框图
Y
主程序框图 定时中断子程序框图
5、汇编语言源程序:
Tick equ 10000 ; 10000 x 100us = 1s
T100us equ 256-50 ; 100us时间常数(6M)
C100us equ 30h ; 100us记数单元
LEDBuf equ 0
LED equ P1.0
ljmp Start
org 000bh ;中断程序入口
T0Int:
push PSW
mov a, C100us+1
jnz Goon
dec C100us
Goon:
dec C100us+1
mov a, C100us
orl a, C100us+1
jnz Exit ; C100us 记数器不为0, 返回
mov C100us, #high(Tick)
mov C100us+1, #low(Tick)
cpl LEDBuf ; C100us 记数器为0, 重置记数器
; 取反LED
Exit:
pop PSW
reti
Start: ; 主程序入口
mov TMOD, #02h ; 方式2, 定时器0
mov TH0, #t100us ; 计算T/C的计数初值,并装载到TH和TL
mov TL0, #t100us
mov IE, ; EA=1, IT0 = 1
setb TR0 ; 开始定时
clr LEDBuf
clr LED
显示全部