定时器计数器应用实验
- 格式:doc
- 大小:60.97 KB
- 文档页数:6
单片机原理及应用实验报告
实验五定时器/计数器应用实验
一、实验目的
1、学习8051内部定时器/计数器的使用方法和编程方法
2、掌握定时器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、实验框图
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
Y
主程序框图 定时中断子程序框图
开始 置T0中断工作方式 设置定时常数 设置初始状态位 设置秒计数值 定时中断入口
保护现场 秒计数值减1
重新设置秒计数值
状态位取反 恢复现场
中断返回 是否到1秒 是 否 中断允许 输出状态位 等待中断 连线 连接孔1 连接孔2 1 P1.0 L0
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, #10000010B ; EA=1, IT0 = 1
SETB TR0 ; 开始定时
CLR LEDBUF
CLR LED
MOV C100US, #HIGH(TICK)
MOV C100US+1, #LOW(TICK)
LOOP:
MOV C, LEDBUF
MOV LED, C
LJMP LOOP
END
程序二:定时器/计数器0按计数器模式和方式2工作,对P3.4(T0)引脚进行计数。按动按钮,记数寄存器增加1记数,记满则与P1.0相连的发光二极管亮,留意按动次数。
说明:
1、单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。
2、实验电路及连线
3、程序框图
连线 连接孔1
连接孔2 1
P1.0 L0 2 单脉冲输出 T0
P1.0 ·––––·LED0 ·––––·T0 开始 设置初始状态位 设置计数值
输出状态位
查询状态位是否为一
是
4、汇编语言源程序:
CLR P1.0
MOV TMOD, #00000110B ; 方式2,记数器0
MOV TH0, #0FBH
MOV TL0, #0FBH
SETB TR0 ; 开始记数
LOOP1:
JBC TF0, LOOP2
SJMP LOOP1
LOOP2:
SETB P1.0
NOP
END
三、实验器材
1、LAB6000 通用微控制器实验系统。
2、计算机,WAVE 集成调试软件。
3、连线若干。
四、实验步骤:
1、连接系统,设置好仿真器和编译选项。
2、建立新程序和新项目,编译程序。
3、编译成功后进行调试,观察LED的闪烁。
4、对于实验一,可在中断程序中设置断点,在观察窗口中添加C100US和LEDBUF 观察项,并观察和记录下XDATA窗口和观察窗口中的数据变化。
五、实验报告要求
1、整理好观测到的数据,并与理论值相比较。
2、讨论定时器/计数器0的四种方式的定时范围。
3、小结做完实验后的体会(着重弄懂控制寄存器的位含义及中断的处理)。