初识定时器

其实定时器就是配置TCON与TMOD 然后还有

ea,pt0,et0这三个是终端配置

void Timer0_Init() //定时器初始化

TMOD=0x01; //配置工作模式定时器 一共8位----前四位表示定时器1 -GATE-C/T(0是定时器)--最后两位是模式位一般用模式1 GATE是门控位控制定时器是否受外界中断的影响
                            //GATE=0表示只受TR0的控制TR0表示定.0时器开关控制位

 


TMOD=TMOD&0xf0; 这个是配置定时器0 需要把低八位置0 如果配置定时器1的话需要高八位置0

//按位与高四位不变,低四位置0
TMOD=TMOD|0x01;    //按位或高四位不变,最后一位置1

如果没有上面两行的话配置定时器0的时候容易刷新定时器1的状态


TF0=0;        //中断溢出位
TR0=1;        /定时器开关位 1表示定时器开

3dce679811344a3ea37262ac82e4504f.png
TH0=64535/256;       
TL0=64535%256;        //TH0开始计数的高8位,TL0低八位
ET0=1;            //ET0是51系列单片机中定时器0的中断允许开关
EA=1;                //中断总开关 1是开
PT0=0;            //优先级PT  0表示定时器0,0表示低优先级

 

3959c53fa8b34adaa637e95229c119be.png

 

 

 

void main()
{
    Timer0_Init(); //定时器初始化   开始必须初始化
    
    while(1)
    {
        P2_0=0;
        Delay(500);
        P2_0=1;
        Delay(500);
        
    }
}

 

下面是中断程序

unsigned int TimeC=0;
void Timer0_routine(void)  interrupt 1
{
    TH0=64535/256;        //定时器开关位 1表示定时器开
    TL0=64535%256;        //TH0开始计数的高8位,TL0低八位

如果不设置上面两行的话就第一次是1000ms 第二次就从0开始了
    TimeC++;
    if(TimeC>=1000)
    {
        TimeC=0;
        P2_3=~P2_3;
    }
}

 

 

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进的大马猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值