单片机:定时器0和1中断(内含硬件内容详解+软件编程)(ps:此处硬件执行结构间的理解是重中之重)

简介: 单片机:定时器0和1中断(内含硬件内容详解+软件编程)(ps:此处硬件执行结构间的理解是重中之重)

b2a02c3a42a34007b9081fde585b385f.png

fd51eb649e00496b8dfec19fc18e5707.png

T=1/f,若f=12MHz,

则振荡周期T=1/12us,

状态周期T=2*(1/6)us;

机器周期T=12*(1/12)=1us

指令周期T=1~4us

精确的延时函数,用定时器完成


f15ca7a5c2464b2cb0bb11b17ebf3fb3.png


默认介绍T0-T1, T2不做介绍,内容基本相同


实质是+1计算。有16位=高8位+低8位


每次有脉冲时,自动+1,当全部+1时,溢出,此时完成定时/计数功能


定时时间/计数次数计算=溢出计数值-初值(如65536-10)


T0引脚连接P3.4管脚


T1引脚连接P3.5管脚


TMOD寄存器工作方式寄存器;控制选择是定时器功能还是计数器功能


TCON寄存器低4位用于控制外部中断相关位,高4位控制定时器控制位,包括启动,停止,溢出


b4941937dc794c0ba129444e7ed364a9.png


7-4位,高4位,管理T1:


GATE:门控位,为0时,软件控制TR0=1,TR1=1(常用)


为1时,软件控制TR0=1,TR1=1并且INTO=1,INT1=1


C/T:选择位,C为计数,T为定时,T=0时,低电平有效,为定时模式,T=1时,为计数模式


M0,M1为工作方式的设置:00 01 10 11多使用01和10(01是定时寄存器工作,10是串口通信波特率的生成)


3-0位,低4位,管理T0:


df957d49955c4646944aadfe103a0fb7.png


TF1/TF0:查询定时器是否溢出(也可通过软件置1或清0)

TR1:为1时,定时器开始工作;为0时,定时器停止工作,通过软件配置


14b36a8235f14812b88983ad36bad5cb.png

TMOD的0X00方式0的00,13位,若5位均为11111,则向前8位置1,若前8位也满,则溢出给TF0,


TFO为溢出标志位,溢出,发送信号给计数器


图右侧:


GATE=0时,经过非门为1,(与INTO引脚的)或门为1,当TRO为1时,经过与门,进入中断开关,使之置为1。


GATE=1时,经过非门为0,(与INTO引脚的)或门为1(INT0为1时),当TRO为1时,经过与门,进入中断开关,使之置为1。


GATE=1时,经过非门为0,(与INTO引脚的)或门为0(INT0为0时),进入中断开关,使之置为0。


C/T:工作模式选择


当T=0时,计数模式,中断开关连接1,TO引脚连接外部引脚P3.4管脚,并传输外部脉冲


当T=1时,计数模式,中断开关连接0,机器周期,一次就是1us..达到技术目的


计数初值与计数个数:2的13次方-N


(用于定时计算器)


b55548e0a6d54bc5bf81a25e47b945e4.png


TM0D的0X01方式1的01,16位,低八位计数满了,向高八位溢出,高八位计数满了则溢出给TF0,给CPU中断...

计数初值与计数个数:2的16次方-N

(用于波特率)


4917e22329ce4b14aea66de85db115bd.png


TMOD的0X02方式2的10,TLO全为11111111时,溢出给THO,THO再次归还给TLO,自动重置

适用于精确脉冲信号发生器,如串口通信uart

计数初值与计数个数:2的8次方-N


d7062b7bde9447dabede471fb2a57240.png


TMOD的0X03方式3的11,仅适用于T0


89bdb4f5f3fd4e6fa620cfa0744d1a33.png


计算初值1ms


如默认为f=12MHz时,机器的T=1/f=1us


则1ms/1us=1000,65536-1000=64536,并将其写入TL0,TH0或TH1,TH1中,FC18


TL0=0xFC TL1=0x18


若计算值过大时,则可以用工具里面的定时器计算工具


理解此图需要与上图尤其是方式1.2紧密结合着理解,较简单,不再赘述。


b009adbd77984c49a20b8a54ab926b85.png

TMOD=0x01,0x0代表选择T0,1代表0001,0001的0代表GATA=0,C/T=0,M1=0,M0=1.此时完成对T0/T1的确定


TH0=0XFC;TL0=0X18是赋初值,将1ms=FC18,FC18给TH0和TL0


打开ET0或ET1,(定时器0中断允许位或定时器1中断允许位)+EA(总中断)


打开定时器1或定时器2


若T0换为T1时,需要TMOD|=0X10;TH1=0XFC;TL1=0X18L;ET1=1;EA=1;TR1=1......


注:用单片机板子显示出来时,需要用D1=P2.0


994ec10d01cf40a181dc20f519ae22bd.png


#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED1=P2^0;
void time0_init(void)//定时器中断0
{
    TMOD|=0X01;//选择为定时器0模式,工作方式1
    TH0=0XFC;//给定时器赋初值,定时1ms
    TL0=0X18;
    ET0=1;//打开定时器0中断允许
    EA=1;//打开总中断
    TR0=1;//打开定时器
}
void time1_init(void)
{
    TMOD|=0X10;//选择为定时器0模式,工作方式1
    TH1=0XFC;    //给定时器赋初值,定时1ms
    TL1=0X18;    
    ET1=1;//打开定时器1中断允许
    EA=1;//打开总中断
    TR1=1;//打开定时器        
}
void main(void)
{
    time0_init();//定时器0中断配置
    time1_init();//定时器1中断配置
    while(1)
    {
    }
}
void time0() interrupt 1 //定时器0中断函数
{
    static u16 i;//定义静态变量i
    TH0=0XFC;    //给定时器赋初值,定时1ms
    TL0=0X18;
    i++;
    if(i==1000)
    {
        i=0;
        LED1=!LED1;    
    }                        
}
void time1() interrupt 3 //定时器1中断函数
{
    static u16 i;//定义静态变量i
    TH1=0XFC;    //给定时器赋初值,定时1ms
    TL1=0X18;
    i++;
    if(i==1000)
    {
        i=0;
        LED1=!LED1;    
    }                        
}

a9a6eefb51bb4227a8ce9183a69262ee.png



相关文章
|
6月前
|
开发框架 .NET 网络性能优化
MCS-51单片机的基本结构
MCS-51单片机的基本结构
421 1
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
|
6月前
|
存储 监控 芯片
单片机的扩展结构
单片机的扩展结构
171 2
|
6月前
|
存储
MCS-51单片机的中断源
MCS-51单片机的中断源
183 1
|
6月前
|
算法 定位技术 C语言
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
123 1
|
6月前
|
传感器 人工智能 物联网
单片机:编程实践与应用探索
单片机:编程实践与应用探索
69 4
|
6月前
|
存储 传感器 数据处理
单片机编程入门与实践
单片机编程入门与实践
71 2
【期末不挂科-单片机考前速过系列P5】(第五章:11题速过中断系统和中断系统结构)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P5】(第五章:11题速过中断系统和中断系统结构)经典例题盘点(带图解析)
|
6月前
|
存储
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)