网站怎么做更新吗,网站建设要多少费用,国内低代码平台,南昌vi设计公司重点学习51单片机定时器1工作在模式0的应用。
在51单片机中#xff0c;定时器1工作在模式0#xff0c;它和定时器0一样#xff0c;TL1占低5位#xff0c;TH1占高8位#xff0c;合计13位#xff0c;也是向上计数。
1、定时器1工作在模式0
1)、定时器1工作在模式0的框图…重点学习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时将TR11则会启动定时器1
②、当TMOD寄存器的bit7(GATE)1时给INT1引脚(P3.3)施加高电平同时TR11则会启动定时器1 4)、定时器1溢出标志TF1建立的条件
TH1和TL1从装载的初始值开始计数直到TH1和TL1从0x1FFF变成0x2000时产生溢出此时定时器1的溢出标志TF11 5)、定时器1产生中断条件
定时器1的溢出标志TF11
定时器1的中断使能位ET11
总中断使能位EA1
只有这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位定时器)
//设置GATE10,即不允许外部INT1脚控制Timer1; TL1T1_Load_Value0x1F; //手动装载最低5位值; TH1T1_Load_Value5; //手动装载剩下的8位值; TR11; //当GATE10时,TR11,表示启动T1开始工作; ET11; //允许Timer1中断; EA1; //开总中断允许位;
} //函数功能: Timer1的中断服务函数,每3000us中断一次;
void timer1_interrupt_program() interrupt 3 using 1
{ TL1T1_Load_Value0x1F; //手动装载最低5位值; TH1T1_Load_Value5; //手动装载剩下的8位值; ///其它处理程序///
} void main(void)
{ timer1_initializtion(); //定时器1工作在模式0的初始化; while(1); {
}
}