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

📄 timer.lst

📁 会议计时器
💻 LST
字号:
C51 COMPILER V8.02   TIMER                                                                 12/10/2008 22:55:07 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE timer.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "timer.h"
   2          #include "main.h"
   3          #include "keyboard.h"
   4          #include "led.h"
   5          
   6          unsigned char display_buffer[4];        //显示缓冲区,共4位
   7          
   8          unsigned char minute=0;         //定义默认定时时间
   9          unsigned char second=0; 
  10          unsigned char setminute=0,setsecond=20;  //设置定时时间
  11              
  12          unsigned char n_50m_second;     //保存多少个50毫秒的变量
  13          
  14          
  15          unsigned char coming1=15;     //15秒灯光提示 
  16          unsigned char coming2=3;      // 3秒声音提示
  17          bit beepcome=0;              //到时标记位
  18          
  19          
  20          //unsigned char flicker_time=0;     //闪烁频率
  21          //unsigned char display_on=1;       //显示开关标志。用来产生闪烁效果
  22          unsigned int status=1;           //状态值         1 设置 ; 2 计时
  23          
  24          unsigned int alarmtime1=0,alarmtime2=0;
  25          unsigned int alarmspeed=300;
  26          
  27          void timer0_isr(void) interrupt 1 using 1      //定时器0中断处理倒计时函数
  28          {
  29   1              TL0=0xB9;
  30   1              TH0=0x3C;                              //定时器重装。定时50mS中断一次
  31   1              n_50m_second++;
  32   1              if (n_50m_second>=20)                  //1秒到
  33   1              {
  34   2                      n_50m_second=0;                     //清50毫秒计数
  35   2                      second--;                        //秒减1
  36   2                      if(second==0xff)                      //如果秒到00
  37   2                      {
  38   3                              second=59;                         //秒变59秒
  39   3                              minute--;                         //分减1
  40   3                              if(minute==0xff)                    //如果分到00
  41   3                              {
  42   4                                      minute=0;                       //分清0
  43   4                                      second=0;
  44   4                                      beepcome=1;                     //标记beepcome
  45   4                                      TR0=0;
  46   4                                      EA=0;                           //取消计时中断
  47   4                              }
  48   3                      }
  49   2              }
  50   1      }
  51          
  52          
  53          
  54          
  55          
C51 COMPILER V8.02   TIMER                                                                 12/10/2008 22:55:07 PAGE 2   

  56          void timer(void)
  57          {
  58   1      
  59   1      
  60   1              if (minute ==0 && second<=coming1 && TR0==1)            //开始灯光提示
  61   1              {
  62   2                      alarmtime1+=10;         
  63   2                      if (alarmtime1>=alarmspeed) {P0_0=~P0_0;alarmtime1=0;alarmspeed-=3;}   //蜂鸣器,LED切换
  64   2      
  65   2                      if (minute ==0 && second<=coming2 && TR0==1)             //开始声音提示
  66   2                      {
  67   3                              alarmtime2+=10;         
  68   3                              if (alarmtime2>=alarmspeed) {P0_1=~P0_1;alarmtime2=0; }
  69   3                      }
  70   2      
  71   2              } 
  72   1      
  73   1      
  74   1      
  75   1       
  76   1       switch (status)         //1为设置状态,2为计时状态
  77   1       {
  78   2         case 1:          //============================设置状态===================================
  79   2         {
  80   3              if(key==KEY_START)           //开始计时
  81   3              {
  82   4                minute=setminute; //载入设置时间
  83   4                second=setsecond;
  84   4                EA=1;                 //开始计时
  85   4                TR0=1;
  86   4                status=2;      //进入计时状态
  87   4                key=0;
  88   4              } 
  89   3      
  90   3           if(key==KEY_MIN)             //调整分功能
  91   3            {
  92   4             setminute++;
  93   4                 if (setminute>=100) setminute=0;
  94   4      
  95   4             key=0;
  96   4            }
  97   3            if(key==KEY_SEC)            //调整秒功能
  98   3            {
  99   4              setsecond++;
 100   4                      if (setsecond>=60) setsecond=0;
 101   4              key=0;
 102   4            }
 103   3            if(key==KEY_RESET)           //重置功能
 104   3            {
 105   4              key=0;
 106   4            }
 107   3                      showset();                               //调用显示设置函数
 108   3                      display(display_buffer);      //显示结果
 109   3          break;
 110   3         }
 111   2      
 112   2      
 113   2         case 2:                     //=======================计时状态=====================================
 114   2          {
 115   3               if(key==KEY_RESET)          //如果设置键按下
 116   3               {
 117   4                 status=1;                     //进入设置状态
C51 COMPILER V8.02   TIMER                                                                 12/10/2008 22:55:07 PAGE 3   

 118   4                 key=0;                    //清键值
 119   4               }
 120   3      
 121   3               if(key==KEY_MIN)           //调整分功能
 122   3               {
 123   4                       key=0; 
 124   4               }
 125   3      
 126   3               if(key==KEY_SEC)          //调整秒功能
 127   3               {
 128   4                       key=0;
 129   4               }
 130   3      
 131   3           if(key==KEY_START)     // 转为暂停         
 132   3            {
 133   4                 TR0=~TR0; //暂停、启动计时器
 134   4             key=0;
 135   4            }
 136   3                      showtime();                              //调用显示时间函数
 137   3                      display(display_buffer);      //显示结果
 138   3                      break;
 139   3          }
 140   2       }
 141   1      
 142   1      }
 143          
 144          
 145          
 146          
 147          
 148          
 149          
 150          void showtime(void)     //显示当前剩余时间
 151          {
 152   1             display_buffer[0]=second%10;
 153   1             display_buffer[1]=second/10;
 154   1             display_buffer[2]=minute%10;
 155   1             display_buffer[3]=minute/10;
 156   1      }
 157          
 158          void showset(void)      //显示当前设置时间
 159          {
 160   1             display_buffer[0]=setsecond%10;
 161   1             display_buffer[1]=setsecond/10;
 162   1             display_buffer[2]=setminute%10;
 163   1             display_buffer[3]=setminute/10;
 164   1      }
 165          
 166          
 167          /*
 168          void beeping(void)
 169          {
 170                  if (beeptime>0) 
 171                          {
 172                          P0_5=0;
 173                          P0_0=1;
 174                          beeptime--;
 175                          }
 176                  else
 177                      {
 178                          P0_5=1;
 179                          P0_0=0;
C51 COMPILER V8.02   TIMER                                                                 12/10/2008 22:55:07 PAGE 4   

 180                          beepcome=0;
 181                          beeptime=20;
 182                          }
 183          
 184          }
 185          */


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


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

⌨️ 快捷键说明

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