定时器模式一的初始化
#include <REGX52.H>
#include "DSQ.h"
/**
* @brief 定时器0初始化和功能函数,1毫秒
* @param 无
* @retval 无
*/
void DSQ_init(void)//1ºÁÃë
{
TMOD&=0xF0;//寄存器高位不变,模式1
TMOD|=0X01;//寄存器低位GATE:0 C/T:0 M1:0 M0:1,模式1
TL0=0X18;//1000计数,模式1是16位,所以须设值TL0和TH0
TH0=0XFC;
TF0=0;//初值无溢出,最高位溢出时1,CPU响应后归零,只读
TR0=1;//与GATE=0共同使用,不考虑INT0外部中断,允许计数
ET0=1;
EA=1;
PT0=0;
}
/*void Timer0_Routine() interrupt 1//这是模板
{
static int num=0;
TL0=0X18;//设值,继续1000计数
TH0=0XFC;
num++;
if(num>=1000)//约1秒
{
//这里写功能
}
}*/
为什么要TMOD&=0xF0;TMOD|=0X01;?TMOD是不可位寻址,须整体赋值。本次只使用定时器0

为什么 TF0=0;TR0=1;?
TCON是可位寻址,每一位单独赋值的


本文介绍51单片机中定时器0的初始化配置及应用实例,包括定时器模式选择、计数器设置、中断处理等关键步骤,并通过LED闪烁和按键控制流水灯演示实际操作。
最低0.47元/天 解锁文章
2995

被折叠的 条评论
为什么被折叠?



