51单片机第23步_定时器1工作在模式0(13位定时器)

重点学习51单片机定时器1工作在模式0的应用。

在51单片机中,定时器1工作在模式0,它和定时器0一样,TL1占低5位,TH1占高8位,合计13位,也是向上计数。

1、定时器1工作在模式0

1)、定时器1工作在模式0的框图:

2)、定时器1输入时钟:

①、TMOD寄存器的bit6(C/T)=0,定时器输入时钟为CPU时钟经过12分频后得到的。

②、TMOD寄存器的bit6(C/T)=1,定时器输入时钟为来自T1引脚(P3.5),我们也可以理解为计数脉冲。

3)、定时器1启动:

①、当TMOD寄存器的bit7(GATE)=0时,将TR1=1,则会启动定时器1;

②、当TMOD寄存器的bit7(GATE)=1时,给INT1引脚(P3.3)施加高电平,同时TR1=1,则会启动定时器1;

4)、定时器1溢出标志TF1建立的条件

TH1和TL1从装载的初始值开始计数,直到TH1和TL1从0x1FFF变成0x2000时产生溢出,此时定时器1的溢出标志TF1=1;

5)、定时器1产生中断条件

定时器1的溢出标志TF1=1

定时器1的中断使能位ET1=1

总中断使能位EA=1

只有这3个条件同时满足,定时器1才会进入到中断服务程序。

6)、定时器1工作在模式0的初始化程序

#define T1_Load_Value (0x2000-3000) //配置T0为3000us中断一次;

//函数功能: 定时器1工作在模式0的初始化;

void timer1_initializtion(void)

{

TMOD &= 0x0F;//清除高4位

//TMOD寄存器的bit6(C/T)=0,定时器输入时钟为CPU时钟经过12分频后得到的

//配置Timer1为方式0(13位定时器)

//设置GATE1=0,即不允许外部INT1脚控制Timer1;

TL1=T1_Load_Value&0x1F; //手动装载最低5位值;

TH1=T1_Load_Value>>5; //手动装载剩下的8位值;

TR1=1; //当GATE1=0时,TR1=1,表示启动T1开始工作;

ET1=1; //允许Timer1中断;

EA=1; //开总中断允许位;

}

//函数功能: Timer1的中断服务函数,每3000us中断一次;

void timer1_interrupt_program() interrupt 3 using 1

{ TL1=T1_Load_Value&0x1F; //手动装载最低5位值;

TH1=T1_Load_Value>>5; //手动装载剩下的8位值;

///其它处理程序///

}

void main(void)

{ timer1_initializtion(); //定时器1工作在模式0的初始化;

while(1);

{

}

}

相关推荐
纳祥科技2 小时前
方案分享:一款基于低功耗单片机的腰腹甩脂机方案
单片机·嵌入式硬件
点灯小铭5 小时前
基于单片机的电子琴设计与乐曲存储播放实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
hemama_6 小时前
STM32F103VET6开发板例程(一)-LED
stm32·单片机·嵌入式硬件
夜月yeyue6 小时前
Linux 内核驱动加载机制
linux·服务器·stm32·嵌入式硬件
奋斗的牛马6 小时前
FPGA--zynq学习 PS与PL交互(二) HP接口
单片机·嵌入式硬件·学习·fpga开发·信息与通信
ACP广源盛139246256738 小时前
GSV1016/ACP#HDMI2.0 HDCP1.4 发射器(TTL/LVDS 输入 + 音频插入)技术解析
单片机·嵌入式硬件·音视频
d111111111d9 小时前
STM32中为什么会有APB1和APB2两个外设有什么区别
笔记·stm32·单片机·嵌入式硬件·学习
ACP广源盛139246256739 小时前
GSV6505F---1 In to 4 Out HDMI 2.1 Splitter with Embedded MCU
单片机·嵌入式硬件·音视频
ThreeYear_s9 小时前
【FPGA+DSP系列】——CCS联合proteus仿真DSP工程,以TMS320f28027芯片为例,LED闪烁仿真。
单片机·fpga开发·proteus
2501_925317139 小时前
【底层奥秘与性能艺术】让 RTOS 在 48 MHz MCU 上跑出 0.5 µs 上下文切换——一场从零开始的嵌入式“时间革命”
单片机·嵌入式硬件·#嵌入式·#嵌入式开发·#rtos