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

📄 timer_rev1_7.lst

📁 64输入32输出单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TIMER_REV1_7                                                          08/22/2004 21:22:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TIMER_REV1_7
OBJECT MODULE PLACED IN TIMER_rev1_7.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TIMER_rev1_7.c LARGE OPTIMIZE(7,SIZE) MODA2 DEBUG OBJECTEXTEND

stmt level    source

   1          // module title: timer_rev1_7.c
   2          // revision:     1.7 
   3          // date:         6/1/2004
   4           
   5          #include <..\atmel\at89s53.h>
   6          #include <absacc.h>
   7          #include <dom12a.h>
   8          
   9          //#define XTAL12MHz
  10          //#define XTAL22_1184MHz
  11          #define  XTAL24MHz
  12          
  13          #define ACTIVATE                1
  14          #define DEACTIVATE              0
  15          #define Flashing_ON             1
  16          #define Flashing_OFF    0
  17          
  18          #define Out_Port        XBYTE[0x2000]
  19          #define PanelSW     XBYTE[0x2002]
  20          
  21          //#define debug
  22          //External Idefinition
  23          extern char output_buf;
  24          
  25          
  26          sbit    Flashing = P1^3;                //uP running status
  27          sbit    ctrlBuzz = P1^5;
  28          
  29          /************************************************
  30          *       Local  Data     : Create software timer                 *
  31          ************************************************/
  32          unsigned int data       tmr0, tmr1, tmr2;
  33          unsigned int data       Flash_CNT = 250;                                        // flashing at 2Hz
  34          
  35          uchar data keySTAGE[8]; //public variables, keys pressed if >= 6
  36          uchar data idxKey;      
  37          uchar data durationBuzzON;
  38          
  39          /************************************************
  40          *       Local  Data     : Create Bit Addressable Data   *
  41          *************************************************/
  42          bit             Timer0State =0;
  43          bit             Timer1State =0;
  44          bit             Timer2State =0;
  45          bit             stFlashing = 0;
  46          bit             keyDetectEnable = 1;
  47          
  48          /************************************
  49          *       Local Function Prototype                *
  50          ************************************/
  51          void    Enable_Timer(char timer_name, unsigned int timer_count);
  52          void    Disable_Timer(char timer_name);
  53          void    Init_Sys_Timer(void);
  54          void    Timer_ISR(void);
  55          void    msDelay(unsigned int timer_count);
C51 COMPILER V7.06   TIMER_REV1_7                                                          08/22/2004 21:22:04 PAGE 2   

  56          void    flashMODE_update(unsigned char modeFlashing, unsigned int Flash_count);
  57          uchar   Turn1LEDon(uchar turnon, uchar ledIndex);
  58          uchar   STimerStillCounting(uchar idxStimer);
  59          void    Mask_Key_Detect(uchar flagClear_nDisable, uchar keyMask);
  60          
  61          //**************************************************************************
  62          void Enable_Timer(char timer_name, unsigned int timer_count)
  63          {
  64   1              EA=0;           // Disable 8051 Interrupt 
  65   1              switch (timer_name)
  66   1              {   case 0 :    tmr0 = timer_count;
  67   2                                              Timer0State=ACTIVATE;
  68   2                                              break;
  69   2                      case 1 :        tmr1 = timer_count;
  70   2                                              Timer1State=ACTIVATE;
  71   2                                              break;
  72   2                      case 2 :        tmr2 = timer_count;
  73   2                                              Timer2State=ACTIVATE;
  74   2                                              break;
  75   2              }
  76   1              EA=1;           // Enable 8051 Interrupt 
  77   1      }
  78          
  79          //**************************************************************************
  80          void Disable_Timer (char timer_name)
  81          {
  82   1              EA=0;                   /* Disable 8051 Interrupt */
  83   1              switch (timer_name)
  84   1              {       case 0 :        Timer0State=DEACTIVATE;
  85   2                                              break;                      
  86   2                      case 1 :        Timer1State=DEACTIVATE;
  87   2                                              break;
  88   2                      case 2 :        Timer2State=DEACTIVATE;
  89   2                                              break;
  90   2              }
  91   1              EA=1;           // Enable 8051 Interrupt 
  92   1      } // end func.
  93          
  94          //***********************************************************************************
  95          void    Init_Sys_Timer (void)
  96          {
  97   1        uchar i;
  98   1      
  99   1        TMOD = 1;                     // TIMER MODE 
 100   1      
 101   1        #ifdef XTAL12MHz
                              TH0 = -1000/256;        // 1 msec with 12 MHz clock             
                              TL0 = -1000%256;                
                #endif
 105   1        #ifdef XTAL22_1184MHz
                              TH0 = -1843/256;        // 1 msec with 12 MHz clock             
                              TL0 = -1843%256;                       
                #endif
 109   1        #ifdef XTAL24MHz
 110   1                      TH0 = -2000/256;        // 1 msec with 12 MHz clock             
 111   1                      TL0 = -2000%256;                        
 112   1        #endif
 113   1      
 114   1        tmr0 = tmr1 = tmr2 = 0;
 115   1        ET0 = 1;                              // Enable HW Timer0's Interrupt      
 116   1        Enable_Timer(0, Flash_CNT); // Enable Flashing of the running LED
 117   1        EA    = 1;                                    // Enable 8051 Interrupt                     
C51 COMPILER V7.06   TIMER_REV1_7                                                          08/22/2004 21:22:04 PAGE 3   

 118   1        TR0   = 1;                                    // Start HW Timer0 to count
 119   1        keyDetectEnable = 1;
 120   1        for (i=0; i<8; i++)
 121   1                      keySTAGE[i] = 0;
 122   1        idxKey = 0;
 123   1      }  // end func.
 124          
 125          //***********************************************************************************
 126          void    msDelay(unsigned int timer_count)
 127          {
 128   1        Enable_Timer(2, timer_count);    // delay for sometime specified by timer_cnt
 129   1        while( Timer2State );
 130   1        Disable_Timer(2);
 131   1      } // end func.
 132          
 133          //**********************************************************************************
 134          uchar code keyMask[8] = {0x01,0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
 135          void    Timer_ISR (void) interrupt 1 using 1
 136          {
 137   1        uchar keyStatus;
 138   1      
 139   1        #ifdef XTAL12MHz
                              TH0 = -1000/256;        /* 1 msec with 12 MHz clock             */
                              TL0 = -1000%256;                /*                              */
                #endif
 143   1        #ifdef XTAL22_1184MHz
                              TH0 = -1843/256;        // 1 msec with 12 MHz clock             
                              TL0 = -1843%256;                       
                #endif
 147   1        #ifdef XTAL24MHz
 148   1                      TH0 = -2000/256;        // 1 msec with 12 MHz clock             
 149   1                      TL0 = -2000%256;                       
 150   1        #endif
 151   1      
 152   1      
 153   1        ET0 = 1;                /* Enable HW Timer0's Interrupt       */

⌨️ 快捷键说明

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