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

📄 tlight_b.lst

📁 PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont This code is copyright (c) 200
💻 LST
📖 第 1 页 / 共 4 页
字号:
 117   4                  }
 118   3      
 119   3               break;
 120   3               }
 121   2      
 122   2            case RED_AMBER: 
 123   2               {
 124   3               Red_light = ON;
 125   3               Amber_light = ON;
 126   3               Green_light = OFF;
 127   3      
 128   3               if (++Time_in_state == RED_AND_AMBER_DURATION)
 129   3                  {
 130   4                  Light_state_G = GREEN;
 131   4                  Time_in_state = 0;
 132   4                  }
 133   3      
 134   3               break;
 135   3               }
 136   2      
 137   2            case GREEN: 
 138   2               {
 139   3               Red_light = OFF;
 140   3               Amber_light = OFF;
 141   3               Green_light = ON;
 142   3      
 143   3               if (++Time_in_state == GREEN_DURATION)
 144   3                  {
 145   4                  Light_state_G = AMBER;
 146   4                  Time_in_state = 0;
 147   4                  }
 148   3      
 149   3               break;
 150   3               }
 151   2      
 152   2            case AMBER: 
 153   2               {
 154   3               Red_light = OFF;
 155   3               Amber_light = ON;
 156   3               Green_light = OFF;
 157   3      
 158   3               if (++Time_in_state == AMBER_DURATION)
 159   3                  {
 160   4                  Light_state_G = RED;
C51 COMPILER V6.10  TLIGHT_B                                                               04/18/2001 16:48:10 PAGE 11  

 161   4                  Time_in_state = 0;
 162   4                  }
 163   3      
 164   3               break;
 165   3               }
 166   2      
 167   2            case BULB_BLOWN: 
 168   2               {
 169   3               // Blown bulb detected
 170   3               // Switch all bulbs off
 171   3               // (Drivers won't be happy, but it will be clear
 172   3               //  that something is wrong)
 173   3               Red_light = OFF;
 174   3               Amber_light = OFF;
 175   3               Green_light = OFF;
 176   3      
 177   3               // We remain in this state until state
 178   3               // is changed manually, or system is reset
 179   3               break;
 180   3               }
 181   2            }
 182   1         }
 183          
 184          /*------------------------------------------------------------------*-
 185          
 186            TRAFFIC_LIGHTS_Check_for_Hardware_Faults()
 187          
 188            Tests for and reports errors.
 189          
 190          -*------------------------------------------------------------------*/
 191          bit TRAFFIC_LIGHTS_Check_for_Hardware_Faults(void) reentrant
 192             {
 193   1         tByte Return = RETURN_NORMAL;
 194   1      
 195   1         // Check the status of the other node
 196   1         if (MASTER_SLAVE == MASTER) 
 197   1            {
 198   2            // This is a master unit
 199   2            // - check the status of the slave unit
 200   2            if (Ack_message_data_G == RETURN_ERROR)
 201   2               {
 202   3               // A bulb has blown on the SLAVE unit
 203   3               Light_state_G = BULB_BLOWN;
 204   3               Return = RETURN_ERROR;
 205   3               }
 206   2            }
 207   1         else
 208   1            {
 209   2            // This is a slave unit
 210   2            // - check the status of the master unit
 211   2            if (Tick_message_data_G == RETURN_ERROR)
 212   2               {
 213   3               // A bulb has blown on the MASTER unit
 214   3               Light_state_G = BULB_BLOWN;
 215   3               Return = RETURN_ERROR;
 216   3               }
 217   2            }
 218   1      
 219   1         // We check the local bulb status every time
 220   1         if (TRAFFIC_LIGHTS_Check_Local_Bulb() == RETURN_ERROR)
 221   1            {
 222   2            Light_state_G = BULB_BLOWN;
C51 COMPILER V6.10  TLIGHT_B                                                               04/18/2001 16:48:10 PAGE 12  

 223   2      
 224   2            // Must report this to the other node!
 225   2            if (MASTER_SLAVE == MASTER)
 226   2               {
 227   3               Tick_message_data_G = RETURN_ERROR; 
 228   3               }
 229   2            else
 230   2               {
 231   3               Ack_message_data_G = RETURN_ERROR; 
 232   3               }
 233   2      
 234   2            Return = RETURN_ERROR;
 235   2            }
 236   1      
 237   1         return (bit) Return;
 238   1         }
 239          
 240          /*------------------------------------------------------------------*-
 241          
 242            TRAFFIC_LIGHTS_Check_Local_Bulb()
 243          
 244            Check the status of the local bulbs (DUMMY FUNCTION HERE)
 245          
 246          -*------------------------------------------------------------------*/
 247          bit TRAFFIC_LIGHTS_Check_Local_Bulb(void)
 248              {
 249   1          // This dummy function confirms the bulbs are OK
 250   1          //
 251   1          // - See Chapter 32 for complete version of this function.
 252   1          return RETURN_NORMAL;
 253   1          }
 254          
 255          /*------------------------------------------------------------------*-
 256          
 257            TRAFFIC_LIGHTS_Display_Safe_Output()
 258          
 259            Used in the event of system failure, etc.
 260          
 261          -*------------------------------------------------------------------*/
 262          void TRAFFIC_LIGHTS_Display_Safe_Output(void)
 263             {
 264   1         if (TRAFFIC_LIGHTS_Check_for_Hardware_Faults() == RETURN_NORMAL)
 265   1            {
 266   2            // Bulbs are OK on both nodes
 267   2            // - best thing to do is to display STOP
 268   2            Red_light = ON;
 269   2            Amber_light = OFF;
 270   2            Green_light = OFF;
 271   2            }
 272   1         else
 273   1            {
 274   2            // At least one bulb has blown 
 275   2            // - best thing we can do is extinguish all bulbs
 276   2            Red_light = OFF;
 277   2            Amber_light = OFF;
 278   2            Green_light = OFF;
 279   2            } 
 280   1         }
 281          
 282          /*------------------------------------------------------------------*-
 283            ---- END OF FILE -------------------------------------------------
 284          -*------------------------------------------------------------------*/
C51 COMPILER V6.10  TLIGHT_B                                                               04/18/2001 16:48:10 PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION TRAFFIC_LIGHTS_Init (BEGIN)
                                           ; SOURCE LINE # 74
                                           ; SOURCE LINE # 75
                                           ; SOURCE LINE # 77
                                           ; SOURCE LINE # 78
                                           ; SOURCE LINE # 79
0000 E4                CLR     A
0001 F500        R     MOV     Light_state_G,A
                                           ; SOURCE LINE # 80
                                           ; SOURCE LINE # 82
                                           ; SOURCE LINE # 83
                                           ; SOURCE LINE # 84
0003         ?C0002:
                                           ; SOURCE LINE # 87
0003 120000      R     LCALL   TRAFFIC_LIGHTS_Display_Safe_Outp
                                           ; SOURCE LINE # 88
0006 22                RET     
             ; FUNCTION TRAFFIC_LIGHTS_Init (END)

             ; FUNCTION TRAFFIC_LIGHTS_Update (BEGIN)
                                           ; SOURCE LINE # 97
                                           ; SOURCE LINE # 98
                                           ; SOURCE LINE # 102
0000 120000      R     LCALL   _?TRAFFIC_LIGHTS_Check_for_Hardwar
                                           ; SOURCE LINE # 105
0003 E500        R     MOV     A,Light_state_G
0005 14                DEC     A
0006 6029              JZ      ?C0007
0008 14                DEC     A
0009 6042              JZ      ?C0009
000B 14                DEC     A
000C 605B              JZ      ?C0011
000E 14                DEC     A
000F 6073              JZ      ?C0013
0011 2404              ADD     A,#04H
0013 7075              JNZ     ?C0014
                                           ; SOURCE LINE # 106
                                           ; SOURCE LINE # 107
0015         ?C0005:
                                           ; SOURCE LINE # 108
                                           ; SOURCE LINE # 109
0015 C2A0              CLR     Red_light
                                           ; SOURCE LINE # 110
0017 D2A1              SETB    Amber_light
                                           ; SOURCE LINE # 111
0019 D2A2              SETB    Green_light
                                           ; SOURCE LINE # 113
001B 0500        R     INC     Time_in_state+01H
001D E500        R     MOV     A,Time_in_state+01H
001F 7002              JNZ     ?C0027
0021 0500        R     INC     Time_in_state
0023         ?C0027:
0023 640A              XRL     A,#0AH
0025 4500        R     ORL     A,Time_in_state
0027 7061              JNZ     ?C0014
                                           ; SOURCE LINE # 114
                                           ; SOURCE LINE # 115
0029 750001      R     MOV     Light_state_G,#01H
                                           ; SOURCE LINE # 116
C51 COMPILER V6.10  TLIGHT_B                                                               04/18/2001 16:48:10 PAGE 14  

002C F500        R     MOV     Time_in_state,A
002E F500        R     MOV     Time_in_state+01H,A
                                           ; SOURCE LINE # 117
                                           ; SOURCE LINE # 119
0030 22                RET     
                                           ; SOURCE LINE # 120
                                           ; SOURCE LINE # 122
0031         ?C0007:
                                           ; SOURCE LINE # 123
                                           ; SOURCE LINE # 124
0031 C2A0              CLR     Red_light
                                           ; SOURCE LINE # 125
0033 C2A1              CLR     Amber_light
                                           ; SOURCE LINE # 126
0035 D2A2              SETB    Green_light
                                           ; SOURCE LINE # 128
0037 0500        R     INC     Time_in_state+01H
0039 E500        R     MOV     A,Time_in_state+01H
003B 7002              JNZ     ?C0028
003D 0500        R     INC     Time_in_state
003F         ?C0028:
003F 640A              XRL     A,#0AH
0041 4500        R     ORL     A,Time_in_state
0043 7045              JNZ     ?C0014
                                           ; SOURCE LINE # 129
                                           ; SOURCE LINE # 130
0045 750002      R     MOV     Light_state_G,#02H
                                           ; SOURCE LINE # 131
0048 F500        R     MOV     Time_in_state,A
004A F500        R     MOV     Time_in_state+01H,A
                                           ; SOURCE LINE # 132
                                           ; SOURCE LINE # 134
004C 22                RET     
                                           ; SOURCE LINE # 135
                                           ; SOURCE LINE # 137
004D         ?C0009:
                                           ; SOURCE LINE # 138
                                           ; SOURCE LINE # 139
004D D2A0              SETB    Red_light
                                           ; SOURCE LINE # 140
004F D2A1              SETB    Amber_light
                                           ; SOURCE LINE # 141
0051 C2A2              CLR     Green_light
                                           ; SOURCE LINE # 143
0053 0500        R     INC     Time_in_state+01H
0055 E500        R     MOV     A,Time_in_state+01H
0057 7002              JNZ     ?C0029
0059 0500        R     INC     Time_in_state
005B         ?C0029:
005B 640A              XRL     A,#0AH
005D 4500        R     ORL     A,Time_in_state
005F 7029              JNZ     ?C0014
                                           ; SOURCE LINE # 144
                                           ; SOURCE LINE # 145
0061 750003      R     MOV     Light_state_G,#03H
                                           ; SOURCE LINE # 146
0064 F500        R     MOV     Time_in_state,A
0066 F500        R     MOV     Time_in_state+01H,A
                                           ; SOURCE LINE # 147
                                           ; SOURCE LINE # 149

⌨️ 快捷键说明

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