⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timermanage.lst

📁 68013的定时器控制demo
💻 LST
字号:
C51 COMPILER V7.02b   TIMERMANAGE                                                          06/03/2004 14:00:29 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE TIMERMANAGE
OBJECT MODULE PLACED IN TimerManage.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TimerManage.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /**************************************************************
   2                                          定时器管理、计时时钟
   3                                          设计者:彭恩文
   4                                          日期:2003/11/02
   5          **************************************************************/
   6          
   7          #include "fx2.h"
   8          #include "fx2regs.h"
   9          #include "string.h"
  10          #include "io.h"
  11          #include "led.h"
  12          #include "key.h"
  13          #include "OTimer.h"
  14          
  15          BYTE Mini;         //分钟
  16          BYTE Second;       //秒
  17          
  18          void Disp_Updata()
  19          {
  20   1              DispBuf[0] = Second % 10;           //更新显示
  21   1              DispBuf[1] = Second / 10;
  22   1              DispBuf[2] = Mini % 10+0x80;
  23   1              DispBuf[3] = Mini / 10;
  24   1      }
  25          
  26          void Clock_Updata(BYTE m_s_flag, BYTE inc_dec_flag)
  27          {
  28   1              if(m_s_flag == 0)   //分钟
  29   1              {
  30   2                      if(inc_dec_flag == 0)   //加1
  31   2                      {
  32   3                              Mini++;
  33   3                              if(Mini >= 60)
  34   3                              {
  35   4                                      Mini = 0;
  36   4                              }
  37   3                      }
  38   2                      else if(inc_dec_flag == 1)   //减1
  39   2                      {
  40   3                              Mini--;
  41   3                              if(Mini >= 60)
  42   3                              {
  43   4                                      Mini = 59;
  44   4                              }
  45   3                      }
  46   2                      else if(inc_dec_flag == 2)   //清零
  47   2                      {
  48   3                              Mini = 0;
  49   3                      }
  50   2                      else if(inc_dec_flag == 3)   //置为59
  51   2                      {
  52   3                              Mini = 59;
  53   3                      }
  54   2      
  55   2              }
C51 COMPILER V7.02b   TIMERMANAGE                                                          06/03/2004 14:00:29 PAGE 2   

  56   1              else          //秒
  57   1              {
  58   2                      if(inc_dec_flag == 0)   //加1
  59   2                      {
  60   3                              Second++;
  61   3                              if(Second >= 60)
  62   3                              {
  63   4                                      Second = 0;
  64   4                              }
  65   3                      }
  66   2                      else if(inc_dec_flag == 1)   //减1
  67   2                      {
  68   3                              Second--;
  69   3                              if(Second >= 60)
  70   3                              {
  71   4                                      Second = 59;
  72   4                              }
  73   3                      }
  74   2                      else if(inc_dec_flag == 2)   //清零
  75   2                      {
  76   3                              Second = 0;
  77   3                      }
  78   2                      else if(inc_dec_flag == 3)   //置为59
  79   2                      {
  80   3                              Second = 59;
  81   3                      }
  82   2              }
  83   1              Disp_Updata();
  84   1      }
  85          
  86          void main()
  87          {
  88   1              BYTE i;
  89   1              BYTE temp_data;
  90   1      
  91   1              IO_Init();
  92   1              REG_Init();
  93   1              Disp_Init();
  94   1              OKey_RP_Init();
  95   1              Sys_TimerInit ();     //系统定时器初始化
  96   1              Mini = 0;
  97   1              Second = 0;
  98   1              /**************延时测试***************/
  99   1              for(i = 0; i < 17; i++)
 100   1              {
 101   2                      memset(DispBuf,i,4);//送显示数据
 102   2                      delay(500);           //延时0.5S     //等待定时
 103   2              }
 104   1              memset(DispBuf,0,4);
 105   1              Sys_TimerRequest(OTimerID0,10,1) ;         //1S定时
 106   1              Sys_TimerRequest(OTimerID1,5,1) ;          //word led flash
 107   1              while(1)
 108   1              {
 109   2                      Led_Display();
 110   2                      temp_data = Analyse_OTimerID();        //查询逻辑定时器
 111   2                      if(temp_data == OTimerID0)       //1S定时到    
 112   2                      {
 113   3                              Second++;
 114   3                              if(Second == 60) 
 115   3                              {
 116   4                                      Second = 0;
 117   4                                      Mini++;
C51 COMPILER V7.02b   TIMERMANAGE                                                          06/03/2004 14:00:29 PAGE 3   

 118   4                                      if(Mini == 60)
 119   4                                      {
 120   5                                              Mini = 0;
 121   5                                      }
 122   4                              }
 123   3                              Disp_Updata();
 124   3                      }
 125   2                      else if(temp_data == OTimerID1)                //WORD LED 闪烁定时器
 126   2                      {
 127   3                              IOE ^= WORK_LED;
 128   3                      }
 129   2      ////////////////////////////////////////////////////////////
 130   2                      temp_data = OKey_RP_Scan();           //键盘扫描
 131   2                      switch(temp_data)
 132   2                      {
 133   3                              case 3:
 134   3                                      Clock_Updata(0,0);  //分钟加1
 135   3                                      break;
 136   3                              case 1:
 137   3                                      Clock_Updata(0,1);  //分钟减1
 138   3                                      break;
 139   3                              case 7:
 140   3                                      Clock_Updata(1,0);  //秒加1
 141   3                                      break;
 142   3                              case 5:
 143   3                                      Clock_Updata(1,1);  //秒减1
 144   3                                      break;
 145   3                              case 2:
 146   3                                      Clock_Updata(0,2);  //分钟清零
 147   3                                      break;
 148   3                              case 4:
 149   3                                      Clock_Updata(0,3);  //分钟置‘59’
 150   3                                      break;
 151   3                              case 6:
 152   3                                      Clock_Updata(1,2);  //秒清零
 153   3                                      break;
 154   3                              case 8:
 155   3                                      Clock_Updata(1,3);  //秒置‘59’
 156   3                                      break;
 157   3                              default:break;
 158   3                      }
 159   2              }       
 160   1      }
 161                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    357    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -