定时器计数器应用实验

  • 格式:doc
  • 大小:60.97 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及应用实验报告

实验五定时器/计数器应用实验

一、实验目的

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、小结做完实验后的体会(着重弄懂控制寄存器的位含义及中断的处理)。