实验五 8051单片机定时中断实验

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

实验五8051单片机定时中断实验

一实验目的:

了解8051系列单片机的定时中断基本工作原理。掌握8051系列单片机定时中断的用法。

二实验原理:

在上一个实验里我们介绍了8051单片机的外中断应用,本实验要介绍的是定时器中断的应用。

8051系列单片机至少有两个16位的内部定时器/计数器,既可以编程为定时器使用,也可以作为计数器使用。如果是计数内部晶振驱动时钟,它是定时器,如果是计数8051的输入管脚的信号,就是计数器。

MCS-51单片机内部的定时/计数器的结构如图5-1所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。

图5-1

TMOD特殊功能寄存器的格式参见下表(表5-1):

表5-1

高4位为定时器/计数器1的控制字,低4位为定时器/计数器0的控制字。其中GATE

为门控信号,C/T为定时器或计数器的选择,而M1,M0是工作方式选择位。

当M1M0=00时,T/C工作在方式0。方式0为13位的T/C,其计数器由TH的8位和TL的5

位构成,计数器的计数值范围是: 1—8192(213),但是启动前可以预置计数初值。当C/T为

0时,T/C为定时器,计数脉冲为振荡源12分频的信号;当C/T为1时,T/C为计数器,对输入端T0或T1输入的脉冲进行计数。计数脉冲加到计数器上与否决定于启动信号。当GATE=0时,TR=1时T/C便启动,当GATE=1时,启动受到TR与INT的双重控制,即二者同时为高

时才启动。当计数满时,TH向高位进位,这时中断溢出标志TF置1,即产生中断请求。而当CPU转向中断服务程序时,TF自动清零。

当M1M0=01时,T/C工作在方式1。方式1和方式0的区别仅在于方式0的计数器位数为13位,而方式1的为16位。

当M1M0=10时,T/C工作在方式2。区别于前面的两种工作方式的是,方式2具有自动重装载的功能。TH和TL作为两个8位的计数器,TH中的8位初值始终保持不变,由TL进行8位计数。在计数溢出时不但会产生中断请求,而且自动将TH中的值加载至TL 中,即自动重装载。

当M1M0=11时,T/C工作在方式3。但是这种工作方式只存在于T/C0中,这时TH0与TL0成为两个独立的计数器。只有在T/C1作为串行口的波特率发生器使用,而造成定时器不够用时,T/C0才能工作在方式3。

下面是定时器时间常数计算公式,这个公式在方式1,即16 位定时或计数模式可用。

THX=(65536-定时时长[µS]/(机器周期数/时钟频率[MHz])/256;

TLX=(65536-定时时长[µS]/(机器周期数/时钟频率[MHz])%256;

在定时器重装载过程中因为TL1=0可以不写。

三实验内容:

利用中断方式在LED上输出10HZ方波,系统晶体频率11.059MHz。

四实验电路图:

图5-2

五实验方法:

1.根据如上电路图连接好实验电路。实验板中只要将P1.3与LED1相连。

2.按照实验要求编写实验程序,建立新工程,保存为TINT。

3.调试程序。

4.将keilC51产生的tint.hex文件通过在线下载ISP或商用编程器。

六参考程序:

1.汇编源程序

ORG 0000H

LJMP MAIN

ORG 001Bh ;定时1中断服务入口地址

LJMP TMR1_INT_SRV

MAIN: LCALL INIT_TMR1

LCALL INIT_TMR1INT

AGAIN: SJMP AGAIN

TMR1_INT_SRV: MOV TH1,#0x4C ;中断服务子程序

CPL P1.3

RETI

INIT_TMR1INT: SETB ET1 ;定时中断初始化

SETB EA ;开中断

RET

INIT_TMR1: MOV TMOD,#0x11 ;初始化定时器

MOV TH1,#0x4C

CLR A

MOV TL1,A

SETB TR1

RET

END

2.C语言源程序

/********************************************************

文件名:tint.c

*描述:方波输出

********************************************************/ #include

sbit LED= P1^3;

/********************************************************

* 描述:定时中断设置子程序

* 输入:无

* 返回:无

********************************************************/ void INIT_TMR1(void)

{

TMOD=0x11;

TH1=0x4C; // (65536-50000uS/(12cyc/11.0592MHz))/256

TL1=0; // (65536-50000uS/(12cyc/11.0592MHz))%256

TR1=1;

}

/**************************************************

* 描述:定时器 1 开中断程序

* 输入:无

* 返回:无

**************************************************/

void INIT_TMR1INT(void)

{

ET1=1;

EA=1;

}

/**************************************************

* 描述:中断服务子程序,输出方波

* 输入:无

相关文档
最新文档