51单片机定时器(T0/T1)的使用与配置流程

您所在的位置:网站首页 工作模式的定义 51单片机定时器(T0/T1)的使用与配置流程

51单片机定时器(T0/T1)的使用与配置流程

2023-12-05 18:07| 来源: 网络整理| 查看: 265

第一步:配置工作方式寄存器—TMOD

TMOD寄存器的字节地址为89H,不能位寻址。一般采用整体赋值的方式进行配置;如:TMOD=0x01 // 0000 0001在这里插入图片描述   GATE=0,定时器仅受TCON寄存器中TRx(x=0,1)来控制   GATE=1,定时器TCON寄存器中TRx(x=0,1)和外部中断引(INT0或INT1)上的电平状态来共同控制。   C/T=1,为计数器模式;   C/T=0,为定时器模式。   M1M0一工作方式选择位;一共有4种工作方式,通常选择 方式1 和 方式2;即M1M0 = 0 1 或M1M0 = 1 0 定时计数器的4种工作方式

第二步:赋初值 —— THx、TLx

注意: (1) 51单片机定时器常常方式1或者方式2 (2)方式1可以装入的总数是65536 (3)方式2可以转入的总数是256 赋值举例(以方式1和方式2):  1、采用方式1  使用定时器0的方式1,定时1ms。因为1ms = 1000us。故,65536 - 1000=64536 。即为16进制的0xfc18。  方法一:

TH0 = (65536 - 1000) / 256 TL0 = (65536 - 1000) % 256

方法二

TH0 = 0xfc TL0 = 0x18

2、采用方式2定时   使用定时器0的方式2,定时0.1ms。因为0.1ms = 100us。故,256 - 100 = 246 。即为16进制的 0xf6 。

TH0 = TL0 = 0xf6 或者: TH0 = 0xf6 TL0 = 0xf6 第三步:配置控制寄存器——TCON

控制寄存器(TCON)在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别是88H~8FH,该寄存器可进行位寻址。可采用TRO=1,IT0=1的方式进行配置启动    在这里插入图片描述 TF1一定时器1溢出标志位。   当定时器1计满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0。需要注意的是,如果使用定时器的中断,那么该位完全不用人为去操作,但是如果使用软件查询方式的话,当查询到该位置1后,就需要用软件清0。 TR1-定时器1运行控制位。   由软件清0关闭定时器1。当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1。 TFO-定时器0溢出标志,其功能及操作方法同TF1。 TRO-定时器0运行控制位,其功能及操作方法同TR1. IE1-外部中断1请求标志。   当IT1=0时,为电平触发方式,每个机器周期的S5P2采样lNT1引脚,若INT1脚为低电平,则置1,否则IE1清0。   当IT1=1时,INT1为跳变沿触发方式,当第一个机器周期采样到INT1为低电平时,则IE1置1。IE1=1,表示外部中断1正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清0。 IT1-外部中断1触发方式选择位。 IT1=0,为电平触发方式,引脚INT1.上低电平有效。 IT1=1,为跳变沿触发方式,引脚INT1.上的电平从高到低的负跳变有效。 IE0一外部中断0请求标志,其功能及操作方法同IE1。 IT0–外部中断0触发方式选择位,其功能及操作方法同IT1。

第四步:开总中断——EA = 1; 定时器0方式1的逻辑框图

在这里插入图片描述

程序示例

(1)使用定时器0、方式1   定时 1ms(500HZ),使LED闪烁   1ms = 1000us ;65536 - 1000 = 64536。 64536的十六进制为 0xfc18

#include sbit LED = P1^0; int main(void) { TMOD = 0x01; //第一步:配置TMOD // 0000 0001 ; 选择方式1 TH0 = 0xfc; TL0 = 0x18; // 第二步:赋初值 // 0xfc18 = 64536. 定时1000us = 1ms (500HZ) TR0 = 1; //第三步:配置TCON // 定时方式,选择定时器 T0 ET0 = 1; // 定时器/计数器0中断允许位,打开T0中断 EA = 1; //第四步:开总中断 while(1); } void timer0() interrupt 1 { TH0 = 0xfc; TL0 = 0x18; // 方式1 在中断中需要重新赋初值 LED = ~LED; }

(1)使用定时器0、方式2   定时 0.1ms(5000HZ),使LED闪烁   0.1ms = 100us ; 256 - 100 = 156; 十六进制为0x9c

#include sbit LED = P1^0; int main(void) { TMOD = 0x02; //第一步:配置TMOD // 0000 0002 ; 选择方式2 TH0=TL0=0x9c; // 第二步:赋初值 // 0x9c = 156. 定时100us = 0.1ms (5000HZ) TR0 = 1; //第三步:配置TCON // 定时方式,选择定时器 T0 ET0 = 1; // 定时器/计数器0中断允许位,打开T0中断 EA = 1; //第四步:开总中断 while(1); } void timer0() interrupt 1 { LED = ~LED; //方式2不需要重新赋初值 }

【参考文档】 《51单片机C语言教程(郭天祥)》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3