zoukankan      html  css  js  c++  java
  • 测试定时器0的程序

    这是写的一个简单的测试定时器0的程序:要实现的目标是,LED第一个跟第二个灯先循环亮起,第三盏灯则以间隔一秒钟的时间亮起一次,其中,第三盏灯的亮起时间以定时器0的中断来执行,里边有亮点需要注意。

    一、不要忘记中断程序中进if语句中的后的tt清零

    二、不要忘了把定时器里边的语句回归哦,否则老是认为中断服务程序没返回主函数呢

    三、这个if语句不应写在主函数中,因为如果写在主函数中,时序会出现问题。因为如果在main函数中的话,前边的几个delay时间会与定时器定的准确时间产生时序问题,因为delay()的时间长,早过了20个tt时间了,所以会出现时序问题!

    四、另外,那个delay函数的时间也有问题,我还得重新调试下!

    五、注意定时器0的初始化,中断函数不需声明等。

    # include<reg52.h>
    # define uint unsigned int
    # define uchar unsigned char
    sbit P21=P2^0;  
    sbit P22=P2^1;
    sbit P23=P2^2;
    void delay(uint z);  //延时函数声明
    uchar tt;

    void main ()
    {
             TMOD=0x01;      //定时器0初始化
              TH0=(65536-50000)/256; //约为50ms
              TL0=(65536-50000)%256;
              EA=1;   //开总中断
              ET0=1;   //开定时器0中断
              TR0=1;   //启动定时器工作    */

              while(1)
              { 
                        P23=1;    //不要忘了把定时器里边的语句回归哦,否则
                                      //老是认为中断服务程序没返回主函数呢
                        P21=0;    //如果是50*20ms=1秒时候,触发中断
                        delay(2000);   //P21与P22以约为1秒的时间间隔闪烁
                        P21=1;
                        delay(2000);
                        P22=0;
                        delay(2000);
                        P22=1;    
                        delay(2000);
               }
    }

    void delay(uint z)   //延时函数,约为1秒
    {
              uchar x,y;
              for(x=z;x>0;x--)
              for(y=110;y>0;y--);
    }

    void timer0() interrupt 1  //定时器0中断服务函数
    {
              TH0=(65536-50000)/256;
              TL0=(65536-50000)%256;
              tt++;
              if(tt==20)     //这个if语句不应写在主函数中,因为如果
               {                 //写在主函数中,时序会出现问题
                         tt=0; //千万不要忘记tt清零哇!!!!   
                         P23=0;
                         delay(2000); //delay()函数还要调试,因为
                                              //延时时间不是按照()中的数字递增而递增的
                         P21=1;
                         delay(2000);
                         P22=1;
                         delay(2000);
               } 
    }

  • 相关阅读:
    调试
    node笔记汇总
    移动端布局
    css 易错点总结
    Angular笔记
    CANVAS笔记
    http笔记汇总
    各种环境搭建 软件安装等等 参考网址收录
    js中同步异步,任务队列
    node.js之fs模块
  • 原文地址:https://www.cnblogs.com/steararre/p/2392279.html
Copyright © 2011-2022 走看看