Timer.lst
上传用户:xmyjxjd
上传日期:2013-05-04
资源大小:1517k
文件大小:17k
开发平台:

C/C++

  1. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 1   
  2. C51 COMPILER V7.06, COMPILATION OF MODULE TIMER
  3. OBJECT MODULE PLACED IN .OutputTimer.obj
  4. COMPILER INVOKED BY: C:KeilC51BINC51.EXE CodeTimer.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS PRINT
  5.                     -(.OutputTimer.lst) PREPRINT(.OutputTimer.i) OBJECT(.OutputTimer.obj)
  6. stmt level    source
  7.    1          #define __TIMER__
  8.    2          
  9.    3          #include "reg52.h"
  10.    4          #include "HeaderLcd_main.h"
  11.    5          #include "HeaderLcd_auto.h"
  12.    6          
  13.    7          /////////////////////////////////////////////////////////////
  14.    8          // Interrupt Service Routine for Timer0 (Fired every 20ms) //
  15.    9          /////////////////////////////////////////////////////////////
  16.   10          void IntProc_Timer0(void) interrupt 1
  17.   11          {
  18.   12   1      #if (IRPOLLING)
  19.               
  20.                   static unsigned char    ucIR_Seq    = 0xff;
  21.                   static unsigned char    ucTimerCnt  = 0x00;
  22.               
  23.                   TL0         = TIME0_COUNTER_LBYTE;  // Reload Timer0 low-byte
  24.                   TH0         = TIME0_COUNTER_HBYTE;  // Reload Timer0 high-byte
  25.               
  26.                   if (ucIR_State)
  27.                   {
  28.                       if (bIR_GPIO)
  29.                       {
  30.                           ucIR_Seq    = (ucIR_Seq << 1) | 0x01;
  31.               
  32.                           if ((0xff == ucIR_Seq) && (ucIR_State & 0xfe))
  33.                           {
  34.                               ucIR_State  = 0;    // Command timeout; Back to idle state
  35.                               
  36.                               ((unsigned int *)ucIR_Cmd)[0]   = 0;
  37.                           }
  38.                       }
  39.                       else
  40.                       {
  41.                           if (1 < ucIR_State)
  42.                           {
  43.                               if (ucIR_Seq & 0x01)
  44.                               {
  45.                                   ((unsigned int *)ucIR_Cmd)[0]   = (((unsigned int *)ucIR_Cmd)[0] << 1) 
  46.                                                                   | (0x07 != (ucIR_Seq & 0x07) ? 1 : 0);
  47.               
  48.                                   if (23 == ++ucIR_State && CUSTOM_CODE != ((unsigned int *)ucIR_Cmd)[0])
  49.                                   {
  50.                                       ucIR_State  = 0;    // Customer code error; Back to idle state
  51.               
  52.                                       ((unsigned int *)ucIR_Cmd)[0]   = 0;
  53.                                   }
  54.                                   else if (39 == ucIR_State)
  55.                                   {
  56.                                       ucIR_State  = 0;    // Command complete; Back to idle state
  57.               
  58.                                       ucIR_Cmd[1] = 8;    // Set command timer to 8 (7*20 = 140ms)
  59.                                   }
  60.                               }
  61. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 2   
  62.                               else if (0x00 == (ucIR_Seq & 0xfe))
  63.                               {
  64.                                   ucIR_State  = 0;    // Command crashed; Back to idle state
  65.                   
  66.                                   ((unsigned int *)ucIR_Cmd)[0]   = 0;
  67.                               }
  68.                           }
  69.                           else                        // ucIR_State is 1
  70.                           {
  71.                               if (0xff == ucIR_Seq)
  72.                               {
  73.                                   ucIR_State  = 0x07; // Start to decode new command and clear old command
  74.                   
  75.                                   ((unsigned int *)ucIR_Cmd)[0]   = 0;
  76.                               }
  77.                               else
  78.                               {
  79.                                   ucIR_State  = 0;    // Fire repeat command and reset to idle
  80.               
  81.                                   ucIR_Cmd[1] = ucIR_Cmd[0] ? 8 : 0;
  82.                               }
  83.                           }
  84.                           
  85.                           ucIR_Seq    = ucIR_Seq << 1;
  86.                       }
  87.                   }
  88.                   else
  89.                   {
  90.                       ucIR_Seq    = (ucIR_Seq << 1) | bIR_GPIO;
  91.               
  92.                       if (0x07 == ucIR_Seq)   ucIR_State  = 1;    // Leader code detected
  93.                   }
  94.               
  95.                   if (54 <= ++ucTimerCnt)        // 0.375ms*54 = 20.25ms passed
  96.                   {
  97.                       ucTimerCnt          = 0;
  98.               
  99.                       bNotify_Timer0_Int  = 1;    // Post Timer0's timeout message
  100.               
  101.                       if (usOSD_Timer)    usOSD_Timer -= 1;   // For OSD Timeout
  102.               
  103.                       // Clear command after 144ms if not repeat code
  104.                       if (0 == ucIR_State)
  105.                       {
  106.                           if (ucIR_Cmd[1] && 0 == --ucIR_Cmd[1])      ucIR_Cmd[0] = 0;
  107.                       }
  108.                   }
  109.               
  110.               #else
  111.  104   1      
  112.  105   1      // mega #if(MCU_TYPE == MCU_WINBOND)                                    //anson 050519
  113.  106   1          TL0         = TIME0_COUNTER_LBYTE;  // Reload Timer0 low-byte
  114.  107   1          TH0         = TIME0_COUNTER_HBYTE;  // Reload Timer0 high-byte
  115.  108   1      
  116.  109   1          bNotify_Timer0_Int  = 1;    // Post Timer0's timeout message
  117.  110   1      
  118.  111   1          if (usOSD_Timer)    usOSD_Timer -= 1;   // For OSD Timeout
  119.  112   1       /*   mega                      //anson 050519
  120.  113   1      #else
  121.  114   1               TL0 = TIME1_COUNTER_LBYTE;  // Reload Timer1 low-byte
  122.  115   1           TH0 = TIME1_COUNTER_HBYTE;  // Reload Timer1 hifh-byte
  123.  116   1               TR0 = 1;                    // Stop Timer1
  124. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 3   
  125.  117   1           bNotify_Timer1_Int  = 1;    // Post Timer1's timeout message  
  126.  118   1      
  127.  119   1           ucTimerCounter++;
  128.  120   1               if(ucTimerCounter>20)
  129.  121   1           {
  130.  122   1              ucTimerCounter=0;
  131.  123   1              bNotify_Timer0_Int  = 1;    // Post Timer0's timeout message
  132.  124   1              if (usOSD_Timer)    usOSD_Timer -= 1;   // For OSD Timeout
  133.  125   1           }
  134.  126   1      #endif
  135.  127   1      */
  136.  128   1      #endif
  137.  129   1      }
  138.  130          
  139.  131          ///////////////////////////////////////////////////////////////////////
  140.  132          // Interrupt Service Routine for Timer1 (Fired in 1ms after restart) //
  141.  133          ///////////////////////////////////////////////////////////////////////
  142.  134          //mega #if(MCU_TYPE == MCU_WINBOND) //Use the standard MCU                      //anson 050519
  143.  135          void IntProc_Timer1(void) interrupt 3
  144.  136          {   
  145.  137   1          TR1 = 0;                    // Stop Timer1
  146.  138   1          TL1 = TIME1_COUNTER_LBYTE;  // Reload Timer1 low-byte
  147.  139   1      
  148.  140   1          TH1 = (bAutoInProgress == 1) ? TIME1_COUNTER_HHBYTE : TIME1_COUNTER_HBYTE;  // Reload Timer1 hifh-byte
  149.  141   1      
  150.  142   1          bNotify_Timer1_Int  = 1;    // Post Timer1's timeout message    
  151.  143   1      }
  152.  144          
  153.  145          /////////////////////////////////////////////////////////////////////////////////
  154.  146          // Function Routines
  155.  147          /////////////////////////////////////////////////////////////////////////////////
  156.  148          void Delay_Xms(unsigned char x)     // For delay 0 ~ 255 ms
  157.  149          {
  158.  150   1          if (x)
  159.  151   1          {
  160.  152   2              bNotify_Timer1_Int  = 0;    // Clear timer1's timeout message
  161.  153   2      
  162.  154   2      //        TL1 = TIME1_COUNTER_LBYTE;  // Reload Timer1 low-byte
  163.  155   2      //        TH1 = TIME1_COUNTER_HBYTE;  // Reload Timer1 hifh-byte
  164.  156   2      
  165.  157   2              TR1 = 1;                    // Start timer1
  166.  158   2              
  167.  159   2              while (1)
  168.  160   2              {
  169.  161   3                  if (bNotify_Timer1_Int)
  170.  162   3                  {
  171.  163   4                      bNotify_Timer1_Int  = 0;    // Clear timer1's timeout message
  172.  164   4      
  173.  165   4                      if (--x)    TR1 = 1;        // Restart timer1 if not timeout
  174.  166   4                      else        return;         // Timeout for X ms.
  175.  167   4                  }
  176.  168   3              }
  177.  169   2          }
  178.  170   1      }
  179.  171          /*mega                  //anson 050519
  180.  172          #else //Use just one timer
  181.  173          
  182.  174          /////////////////////////////////////////////////////////////////////////////////
  183.  175          // Function Routines
  184.  176          /////////////////////////////////////////////////////////////////////////////////
  185.  177          void Delay_Xms(unsigned char x)     // For delay 0 ~ 255 ms
  186.  178          {
  187. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 4   
  188.  179          //    unsigned char i;    
  189.  180              if (x)
  190.  181              {
  191.  182                  bNotify_Timer1_Int  = 0;    // Clear timer1's timeout message
  192.  183                  //TR1 = 1;                    // Start timer1
  193.  184                  while (1)
  194.  185                  {
  195.  186                      if (bNotify_Timer1_Int)
  196.  187                      {
  197.  188                          bNotify_Timer1_Int  = 0;    // Clear timer1's timeout message
  198.  189                          if (--x)    x=x;//TR1 = 1;        // Restart timer1 if not timeout
  199.  190                          else        return;         // Timeout for X ms.
  200.  191                      }
  201.  192                  }
  202.  193              }
  203.  194          }
  204.  195          
  205.  196          
  206.  197          #endif
  207.  198          */
  208. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 5   
  209. ASSEMBLY LISTING OF GENERATED OBJECT CODE
  210.              ; FUNCTION IntProc_Timer0 (BEGIN)
  211. 0000 C0E0              PUSH    ACC
  212. 0002 C0D0              PUSH    PSW
  213. 0004 75D000            MOV     PSW,#00H
  214. 0007 C000              PUSH    AR0
  215.                                            ; SOURCE LINE # 10
  216.                                            ; SOURCE LINE # 106
  217. 0009 758AFF            MOV     TL0,#0FFH
  218.                                            ; SOURCE LINE # 107
  219. 000C 758C5F            MOV     TH0,#05FH
  220.                                            ; SOURCE LINE # 109
  221. 000F D200        R     SETB    bNotify_Timer0_Int
  222.                                            ; SOURCE LINE # 111
  223. 0011 7800        E     MOV     R0,#LOW usOSD_Timer+01H
  224. 0013 E6                MOV     A,@R0
  225. 0014 18                DEC     R0
  226. 0015 46                ORL     A,@R0
  227. 0016 6007              JZ      ?C0002
  228. 0018 08                INC     R0
  229. 0019 E6                MOV     A,@R0
  230. 001A 16                DEC     @R0
  231. 001B 18                DEC     R0
  232. 001C 7001              JNZ     ?C0013
  233. 001E 16                DEC     @R0
  234. 001F         ?C0013:
  235.                                            ; SOURCE LINE # 129
  236. 001F         ?C0002:
  237. 001F D000              POP     AR0
  238. 0021 D0D0              POP     PSW
  239. 0023 D0E0              POP     ACC
  240. 0025 32                RETI    
  241.              ; FUNCTION IntProc_Timer0 (END)
  242.              ; FUNCTION IntProc_Timer1 (BEGIN)
  243. 0000 C0D0              PUSH    PSW
  244. 0002 75D000            MOV     PSW,#00H
  245. 0005 C007              PUSH    AR7
  246.                                            ; SOURCE LINE # 135
  247.                                            ; SOURCE LINE # 137
  248. 0007 C28E              CLR     TR1
  249.                                            ; SOURCE LINE # 138
  250. 0009 758BFF            MOV     TL1,#0FFH
  251.                                            ; SOURCE LINE # 140
  252. 000C 300004      E     JNB     bAutoInProgress,?C0003
  253. 000F 7FFB              MOV     R7,#0FBH
  254. 0011 8002              SJMP    ?C0004
  255. 0013         ?C0003:
  256. 0013 7FF7              MOV     R7,#0F7H
  257. 0015         ?C0004:
  258. 0015 8F8D              MOV     TH1,R7
  259.                                            ; SOURCE LINE # 142
  260. 0017 D200        R     SETB    bNotify_Timer1_Int
  261.                                            ; SOURCE LINE # 143
  262. 0019 D007              POP     AR7
  263. 001B D0D0              POP     PSW
  264. 001D 32                RETI    
  265.              ; FUNCTION IntProc_Timer1 (END)
  266.              ; FUNCTION _Delay_Xms (BEGIN)
  267. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 6   
  268.                                            ; SOURCE LINE # 148
  269. ;---- Variable 'x' assigned to Register 'R7' ----
  270.                                            ; SOURCE LINE # 149
  271.                                            ; SOURCE LINE # 150
  272. 0000 EF                MOV     A,R7
  273. 0001 6011              JZ      ?C0012
  274.                                            ; SOURCE LINE # 151
  275.                                            ; SOURCE LINE # 152
  276. 0003 C200        R     CLR     bNotify_Timer1_Int
  277.                                            ; SOURCE LINE # 157
  278. 0005 D28E              SETB    TR1
  279. 0007         ?C0007:
  280.                                            ; SOURCE LINE # 159
  281.                                            ; SOURCE LINE # 160
  282.                                            ; SOURCE LINE # 161
  283. 0007 3000FD      R     JNB     bNotify_Timer1_Int,?C0007
  284.                                            ; SOURCE LINE # 162
  285.                                            ; SOURCE LINE # 163
  286. 000A C200        R     CLR     bNotify_Timer1_Int
  287.                                            ; SOURCE LINE # 165
  288. 000C 1F                DEC     R7
  289. 000D EF                MOV     A,R7
  290. 000E 6004              JZ      ?C0012
  291. 0010 D28E              SETB    TR1
  292. 0012 80F3              SJMP    ?C0007
  293.                                            ; SOURCE LINE # 167
  294.                                            ; SOURCE LINE # 168
  295.                                            ; SOURCE LINE # 169
  296.                                            ; SOURCE LINE # 170
  297. 0014         ?C0012:
  298. 0014 22                RET     
  299.              ; FUNCTION _Delay_Xms (END)
  300. C51 COMPILER V7.06   TIMER                                                                 11/21/2005 13:47:43 PAGE 7   
  301. NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
  302. ====                                    =====   ======  ====    ======  ====
  303. P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
  304. bNotify_Timer0_Int . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
  305. bNotify_Timer1_Int . . . . . . . . . .  PUBLIC   DATA   BIT      0001H  1
  306. P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
  307. IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
  308. bAutoInProgress. . . . . . . . . . . .  EXTERN   DATA   BIT      -----  1
  309. IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
  310. SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
  311. usOSD_Timer. . . . . . . . . . . . . .  EXTERN   IDATA  U_INT    -----  2
  312. TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
  313. ucTimerCounter . . . . . . . . . . . .  PUBLIC   IDATA  U_CHAR   0000H  1
  314. TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
  315. TH1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008DH  1
  316. TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
  317. TL1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008BH  1
  318. TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
  319. IntProc_Timer0 . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  320. IntProc_Timer1 . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  321. T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
  322. _Delay_Xms . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  323.   x. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  324. PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
  325. MODULE INFORMATION:   STATIC OVERLAYABLE
  326.    CODE SIZE        =     89    ----
  327.    CONSTANT SIZE    =   ----    ----
  328.    XDATA SIZE       =   ----    ----
  329.    PDATA SIZE       =   ----    ----
  330.    DATA SIZE        =   ----    ----
  331.    IDATA SIZE       =      1    ----
  332.    BIT SIZE         =      2    ----
  333. END OF MODULE INFORMATION.
  334. C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)