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

📄 2_01_12g.lst

📁 自己做的时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
  49          void SCH_Init_T2(void) 
  50             {
  51   1         tByte i;
  52   1      
  53   1         for (i = 0; i < SCH_MAX_TASKS; i++) 
  54   1            {
  55   2            SCH_Delete_Task(i);
  56   2            }
  57   1      
  58   1         // Reset the global error variable
  59   1         // - SCH_Delete_Task() will generate an error code, 
  60   1         //   (because the task array is empty)
  61   1         Error_code_G = 0;  
  62   1      
  63   1         // Now set up Timer 2
  64   1         // 16-bit timer function with automatic reload
  65   1      
  66   1         // Crystal is assumed to be 12 MHz
  67   1         // The Timer 2 resolution is 0.000001 seconds (1 祍)
  68   1         // The required Timer 2 overflow is 0.001 seconds (1 ms)
  69   1         // - this takes 1000 timer ticks
  70   1         // Reload value is 65536 - 1000 = 64536 (dec) = 0xFC18
  71   1      
  72   1         T2CON = 0x04;   // load Timer 2 control register
  73   1         T2MOD = 0x00;   // load Timer 2 mode register
  74   1      
  75   1         TH2    = 0xFC;  // load timer 2 high byte
  76   1         RCAP2H = 0xFC;  // load timer 2 reload capture reg, high byte
  77   1         TL2    = 0x18;  // load timer 2 low byte
  78   1         RCAP2L = 0x18;  // load timer 2 reload capture reg, low byte
  79   1         
  80   1         ET2   = 1;  // Timer 2 interrupt is enabled
  81   1      
  82   1         TR2   = 1;  // Start Timer 2
  83   1         }
  84          
  85          
  86          /*------------------------------------------------------------------*-
  87          
  88            SCH_Start()
  89          
  90            Starts the scheduler, by enabling interrupts.
  91          
  92            NOTE: Usually called after all regular tasks are added,
  93            to keep the tasks synchronised.
  94          
  95            NOTE: ONLY THE SCHEDULER INTERRUPT SHOULD BE ENABLED!!! 
  96          
  97          -*------------------------------------------------------------------*/
  98          void SCH_Start(void) 
  99             {
 100   1         EA = 1;
 101   1         }
 102          
 103          /*------------------------------------------------------------------*-
 104          
 105            SCH_Update()
 106          
 107            This is the scheduler ISR.  It is called at a rate 
 108            determined by the timer settings in the 'init' function.
 109          
 110            This version is triggered by Timer 2 interrupts:
C51 COMPILER V8.05a   2_01_12G                                                             06/07/2007 19:40:26 PAGE 12  

 111            timer is automatically reloaded.
 112          
 113          -*------------------------------------------------------------------*/
 114          void SCH_Update(void) interrupt INTERRUPT_Timer_2_Overflow  
 115             {
 116   1         tByte Index;
 117   1      
 118   1         TF2 = 0; // Have to manually clear this. 
 119   1      
 120   1         // NOTE: calculations are in *TICKS* (not milliseconds)
 121   1         for (Index = 0; Index < SCH_MAX_TASKS; Index++)
 122   1            {
 123   2            // Check if there is a task at this location
 124   2            if (SCH_tasks_G[Index].pTask)
 125   2               {
 126   3               if (SCH_tasks_G[Index].Delay == 0)
 127   3                  {
 128   4                  // The task is due to run
 129   4                  SCH_tasks_G[Index].RunMe += 1;  // Inc. the 'RunMe' flag
 130   4      
 131   4                  if (SCH_tasks_G[Index].Period)
 132   4                     {
 133   5                     // Schedule regular tasks to run again
 134   5                     SCH_tasks_G[Index].Delay = SCH_tasks_G[Index].Period;
 135   5                     }
 136   4                  }
 137   3               else
 138   3                  {
 139   4                  // Not yet ready to run: just decrement the delay 
 140   4                  SCH_tasks_G[Index].Delay -= 1;
 141   4                  }
 142   3               }         
 143   2            }
 144   1         }   
 145          
 146          
 147          /*------------------------------------------------------------------*-
 148            ---- END OF FILE -------------------------------------------------
 149          -*------------------------------------------------------------------*/
 150          
C51 COMPILER V8.05a   2_01_12G                                                             06/07/2007 19:40:26 PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION SCH_Init_T2 (BEGIN)
                                           ; SOURCE LINE # 49
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 53
0000 E4                CLR     A
0001 F500        R     MOV     i,A
0003         ?C0001:
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
0003 AF00        R     MOV     R7,i
0005 120000      E     LCALL   _SCH_Delete_Task
                                           ; SOURCE LINE # 56
0008 0500        R     INC     i
000A E500        R     MOV     A,i
000C C3                CLR     C
000D 9403              SUBB    A,#03H
000F 40F2              JC      ?C0001
0011         ?C0002:
                                           ; SOURCE LINE # 61
0011 E4                CLR     A
0012 F500        E     MOV     Error_code_G,A
                                           ; SOURCE LINE # 72
0014 75C804            MOV     T2CON,#04H
                                           ; SOURCE LINE # 73
0017 F5C9              MOV     T2MOD,A
                                           ; SOURCE LINE # 75
0019 75CDFC            MOV     TH2,#0FCH
                                           ; SOURCE LINE # 76
001C 75CBFC            MOV     RCAP2H,#0FCH
                                           ; SOURCE LINE # 77
001F 75CC18            MOV     TL2,#018H
                                           ; SOURCE LINE # 78
0022 75CA18            MOV     RCAP2L,#018H
                                           ; SOURCE LINE # 80
0025 D2AD              SETB    ET2
                                           ; SOURCE LINE # 82
0027 D2CA              SETB    TR2
                                           ; SOURCE LINE # 83
0029 22                RET     
             ; FUNCTION SCH_Init_T2 (END)

             ; FUNCTION SCH_Start (BEGIN)
                                           ; SOURCE LINE # 98
                                           ; SOURCE LINE # 99
                                           ; SOURCE LINE # 100
0000 D2AF              SETB    EA
                                           ; SOURCE LINE # 101
0002 22                RET     
             ; FUNCTION SCH_Start (END)

             ; FUNCTION SCH_Update (BEGIN)
0000 C0E0              PUSH    ACC
0002 C0F0              PUSH    B
0004 C0D0              PUSH    PSW
0006 75D000            MOV     PSW,#00H
0009 C000              PUSH    AR0
000B C004              PUSH    AR4
000D C005              PUSH    AR5
000F C007              PUSH    AR7
C51 COMPILER V8.05a   2_01_12G                                                             06/07/2007 19:40:26 PAGE 14  

                                           ; SOURCE LINE # 114
                                           ; SOURCE LINE # 118
0011 C2CF              CLR     TF2
                                           ; SOURCE LINE # 121
;---- Variable 'Index' assigned to Register 'R7' ----
0013 E4                CLR     A
0014 FF                MOV     R7,A
0015         ?C0006:
                                           ; SOURCE LINE # 122
                                           ; SOURCE LINE # 124
0015 EF                MOV     A,R7
0016 75F007            MOV     B,#07H
0019 A4                MUL     AB
001A 2400        E     ADD     A,#LOW SCH_tasks_G
001C F8                MOV     R0,A
001D E6                MOV     A,@R0
001E FC                MOV     R4,A
001F 08                INC     R0
0020 E6                MOV     A,@R0
0021 4C                ORL     A,R4
0022 6046              JZ      ?C0008
                                           ; SOURCE LINE # 125
                                           ; SOURCE LINE # 126
0024 EF                MOV     A,R7
0025 75F007            MOV     B,#07H
0028 A4                MUL     AB
0029 2400        E     ADD     A,#LOW SCH_tasks_G+02H
002B F8                MOV     R0,A
002C E6                MOV     A,@R0
002D FC                MOV     R4,A
002E 08                INC     R0
002F E6                MOV     A,@R0
0030 4C                ORL     A,R4
0031 7028              JNZ     ?C0010
                                           ; SOURCE LINE # 127
                                           ; SOURCE LINE # 129
0033 EF                MOV     A,R7
0034 75F007            MOV     B,#07H
0037 A4                MUL     AB
0038 2400        E     ADD     A,#LOW SCH_tasks_G+06H
003A F8                MOV     R0,A
003B 06                INC     @R0
                                           ; SOURCE LINE # 131
003C EF                MOV     A,R7
003D 75F007            MOV     B,#07H
0040 A4                MUL     AB
0041 2400        E     ADD     A,#LOW SCH_tasks_G+04H
0043 F8                MOV     R0,A
0044 E6                MOV     A,@R0
0045 FC                MOV     R4,A
0046 08                INC     R0
0047 E6                MOV     A,@R0
0048 FD                MOV     R5,A
0049 4C                ORL     A,R4
004A 601E              JZ      ?C0008
                                           ; SOURCE LINE # 132
                                           ; SOURCE LINE # 134
004C EF                MOV     A,R7
004D 75F007            MOV     B,#07H
0050 A4                MUL     AB
0051 2400        E     ADD     A,#LOW SCH_tasks_G+02H
0053 F8                MOV     R0,A
C51 COMPILER V8.05a   2_01_12G                                                             06/07/2007 19:40:26 PAGE 15  

0054 A604              MOV     @R0,AR4
0056 08                INC     R0
0057 A605              MOV     @R0,AR5
                                           ; SOURCE LINE # 135
                                           ; SOURCE LINE # 136
0059 800F              SJMP    ?C0008
005B         ?C0010:
                                           ; SOURCE LINE # 138
                                           ; SOURCE LINE # 140
005B EF                MOV     A,R7
005C 75F007            MOV     B,#07H
005F A4                MUL     AB
0060 2400        E     ADD     A,#LOW SCH_tasks_G+02H
0062 F8                MOV     R0,A
0063 08                INC     R0
0064 E6                MOV     A,@R0
0065 16                DEC     @R0
0066 18                DEC     R0
0067 7001              JNZ     ?C0014
0069 16                DEC     @R0
006A         ?C0014:
                                           ; SOURCE LINE # 141
                                           ; SOURCE LINE # 142
                                           ; SOURCE LINE # 143
006A         ?C0008:
006A 0F                INC     R7
006B BF03A7            CJNE    R7,#03H,?C0006
                                           ; SOURCE LINE # 144
006E         ?C0013:
006E D007              POP     AR7
0070 D005              POP     AR5
0072 D004              POP     AR4
0074 D000              POP     AR0
0076 D0D0              POP     PSW
0078 D0F0              POP     B
007A D0E0              POP     ACC
007C 32                RETI    
             ; FUNCTION SCH_Update (END)

C51 COMPILER V8.05a   2_01_12G                                                             06/07/2007 19:40:26 PAGE 16  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
tLong. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_LONG   -----  4
sTask. . . . . . . . . . . . . . . . .  TYPEDEF  DATA   STRUCT   -----  7
  pTask. . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0000H  2
  Delay. . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0002H  2
  Period . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0004H  2
  RunMe. . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0006H  1
tByte. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
_SCH_Delete_Task . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
SCH_tasks_G. . . . . . . . . . . . . .  EXTERN   DATA   ARRAY    -----  21
tWord. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
RCAP2H . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00CBH  1
SCH_Update . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  Index. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
RCAP2L . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00CAH  1
Error_code_G . . . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
SCH_Init_T2. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
ET2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ADH  1
TF2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CFH  1
TH2. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00CDH  1
SCH_Start. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TL2. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00CCH  1
TR2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CAH  1
T2MOD. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C9H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    170    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       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 + -