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

📄 main.lst

📁 基于8051共享时钟调度器的can总线通讯
💻 LST
📖 第 1 页 / 共 3 页
字号:
           =3 // - see Chapter 14. 
           =3 //------------------------------------------------------------------
           =3 
           =3 #define ERROR_SCH_TOO_MANY_TASKS (1)
           =3 #define ERROR_SCH_CANNOT_DELETE_TASK (2)
           =3 
           =3 #define ERROR_SCH_WAITING_FOR_SLAVE_TO_ACK (3)
           =3 #define ERROR_SCH_WAITING_FOR_START_COMMAND_FROM_MASTER (3)
           =3 
           =3 #define ERROR_SCH_ONE_OR_MORE_SLAVES_DID_NOT_START (4)
           =3 #define ERROR_SCH_LOST_SLAVE (5)
           =3 
           =3 #define ERROR_SCH_CAN_BUS_ERROR (6)
           =3 
           =3 #define ERROR_I2C_WRITE_BYTE (10)
           =3 #define ERROR_I2C_READ_BYTE (11)
           =3 #define ERROR_I2C_WRITE_BYTE_AT24C64 (12)
           =3 #define ERROR_I2C_READ_BYTE_AT24C64 (13)
           =3 #define ERROR_I2C_DS1621 (14)
           =3 
           =3 #define ERROR_USART_TI (21)
           =3 #define ERROR_USART_WRITE_CHAR (22)
           =3 
           =3 #define ERROR_SPI_EXCHANGE_BYTES_TIMEOUT (31)
           =3 #define ERROR_SPI_X25_TIMEOUT (32)
           =3 #define ERROR_SPI_MAX1110_TIMEOUT (33)
           =3 
           =3 #define ERROR_ADC_MAX150_TIMEOUT (44)
           =3 
           =3 #endif
 115      =3  
 116      =3  /*------------------------------------------------------------------*-
 117      =3    ---- END OF FILE -------------------------------------------------
 118      =3  -*------------------------------------------------------------------*/
C51 COMPILER V7.06   MAIN                                                                  12/25/2007 19:33:30 PAGE 12  

  28      =2  
  29      =2  // ------ Public data type declarations ----------------------------
  30      =2  
  31      =2  // Store in DATA area, if possible, for rapid access  
  32      =2  // Total memory per task is 7 bytes
  33      =2  typedef data struct 
  34      =2     {
  35      =2     // Pointer to the task (must be a 'void (void)' function)
  36      =2     void (code * pTask)(void);  
  37      =2  
  38      =2     // Delay (ticks) until the function will (next) be run
  39      =2     // - see SCH_Add_Task() for further details
  40      =2     tWord Delay;       
  41      =2  
  42      =2     // Interval (ticks) between subsequent runs.
  43      =2     // - see SCH_Add_Task() for further details
  44      =2     tWord Period;       
  45      =2  
  46      =2     // Incremented (by scheduler) when task is due to execute
  47      =2     tByte RunMe;       
  48      =2     } sTask; 
  49      =2  
  50      =2  // ------ Public function prototypes -------------------------------
  51      =2  
  52      =2  // Core scheduler functions
  53      =2  void  SCH_Dispatch_Tasks(void);
  54      =2  tByte SCH_Add_Task(void (code*) (void), const tWord, const tWord);  
  55      =2  bit   SCH_Delete_Task(const tByte);
  56      =2  void  SCH_Report_Status(void);
  57      =2  
  58      =2  // ------ Public constants -----------------------------------------
  59      =2  
  60      =2  // The maximum number of tasks required at any one time
  61      =2  // during the execution of the program
  62      =2  //
  63      =2  // MUST BE ADJUSTED FOR EACH NEW PROJECT
  64      =2  #define SCH_MAX_TASKS   (2)   
  65      =2   
  66      =2  #endif
  67      =2                                
  68      =2  /*------------------------------------------------------------------*-
  69      =2    ---- END OF FILE -------------------------------------------------
  70      =2  -*------------------------------------------------------------------*/
  71      =2  
  26      =1  
  27      =1  // ------ Public function prototypes -------------------------------
  28      =1  
  29      =1  void SCC_A_MASTER_Init_T2_CAN(void);
  30      =1  void SCC_A_MASTER_Start(void);
  31      =1  
  32      =1  // ------ Public constants -----------------------------------------
  33      =1  
  34      =1  #define NUMBER_OF_SLAVES 1
  35      =1  
  36      =1  // CAN #defines &c - mainly from Infineon DaVE output 
  37      =1  
  38      =1  // Control Register
  39      =1  #define CAN_cr   (*((tByte volatile xdata *) 0xF700))
  40      =1  
  41      =1  // Status Register
  42      =1  #define CAN_sr   (*((tByte volatile xdata *) 0xF701))
  43      =1  
C51 COMPILER V7.06   MAIN                                                                  12/25/2007 19:33:30 PAGE 13  

  44      =1  // Bit Timing Register
  45      =1  #define CAN_btr0 (*((tByte volatile xdata *) 0xF704))
  46      =1  #define CAN_btr1 (*((tByte volatile xdata *) 0xF705))
  47      =1  
  48      =1  // Global Mask Short
  49      =1  #define CAN_gms0  (*((tByte volatile xdata *) 0xF706))
  50      =1  
  51      =1  // Global Mask Short
  52      =1  #define CAN_gms1  (*((tByte volatile xdata *) 0xF707))
  53      =1  
  54      =1  // Upper Global Mask Long
  55      =1  #define CAN_ugml0 (*((tByte volatile xdata *) 0xF708))
  56      =1  #define CAN_ugml1 (*((tByte volatile xdata *) 0xF709))
  57      =1  
  58      =1  // Lower Global Mask Long
  59      =1  #define CAN_lgml0 (*((tByte volatile xdata *) 0xF70A))
  60      =1  #define CAN_lgml1 (*((tByte volatile xdata *) 0xF70B))
  61      =1  
  62      =1  // ------ Private data type declarations ---------------------------
  63      =1  
  64      =1  // Data structure representing a single CAN message
  65      =1  struct sCAN_message 
  66      =1     {
  67      =1     tByte MCR0;       // Message Control Register 0
  68      =1     tByte MCR1;       // Message Control Register 1
  69      =1     tByte UAR0;       // Upper Arbit. Reg. 0
  70      =1     tByte UAR1;       // Upper Arbit. Reg. 1
  71      =1     tByte LAR0;       // Lower Arbit. Reg. 0
  72      =1     tByte LAR1;       // Lower Arbit. Reg. 1
  73      =1     tByte MCFG;       // Message Configuration Register
  74      =1     tByte Data[8];    // Message Data 0 .. 7
  75      =1     tByte Customer;   // Reserved for application specific data
  76      =1     };
  77      =1  
  78      =1  // ------ Private variables ----------------------------------------
  79      =1  
  80      =1  // A total of 15 CAN message structures exist 
  81      =1  // (starting at at address 0xF710)
  82      =1  #define CAN_messages ((struct sCAN_message volatile xdata *) 0xF710)
  83      =1  
  84      =1  /*------------------------------------------------------------------*-
  85      =1    ---- END OF FILE -------------------------------------------------
  86      =1  -*------------------------------------------------------------------*/
  87      =1  
  33          #include "TLight_B.h"
   1      =1  /*------------------------------------------------------------------*-
   2      =1  
   3      =1     TLight_B.H (v1.00)
   4      =1  
   5      =1    ------------------------------------------------------------------
   6      =1     
   7      =1     - See TLight_B.C for details.
   8      =1  
   9      =1  
  10      =1     COPYRIGHT
  11      =1     ---------
  12      =1  
  13      =1     This code is from the book:
  14      =1  
  15      =1     PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
  16      =1     [Pearson Education, 2001; ISBN: 0-201-33138-1].
  17      =1  
C51 COMPILER V7.06   MAIN                                                                  12/25/2007 19:33:30 PAGE 14  

  18      =1     This code is copyright (c) 2001 by Michael J. Pont.
  19      =1   
  20      =1     See book for copyright details and other information.
  21      =1  
  22      =1  -*------------------------------------------------------------------*/
  23      =1  
  24      =1  // ------ Public data type declarations ----------------------------
  25      =1  
  26      =1  // Possible system states
  27      =1  typedef 
  28      =1  enum {RED, RED_AMBER, GREEN, AMBER, BULB_BLOWN} eLight_State;
  29      =1  
  30      =1  
  31      =1  // ------ Public constants -----------------------------------------
  32      =1  
  33      =1  #define MASTER 1
  34      =1  #define SLAVE 0
  35      =1  
  36      =1  // ------ Public function prototypes -------------------------------
  37      =1  
  38      =1  void TRAFFIC_LIGHTS_Init(void);
  39      =1  void TRAFFIC_LIGHTS_Update(void);
  40      =1  
  41      =1  void TRAFFIC_LIGHTS_Display_Safe_Output(void);
  42      =1  
  43      =1  /*------------------------------------------------------------------*-
  44      =1    ---- END OF FILE -------------------------------------------------
  45      =1  -*------------------------------------------------------------------*/
  34          
  35          /* ............................................................... */
  36          /* ............................................................... */
  37          
  38          void main(void)
  39             {
  40   1         // Prepare for the traffic light task
  41   1         TRAFFIC_LIGHTS_Init();
  42   1      
  43   1         // Set up the scheduler 
  44   1         SCC_A_MASTER_Init_T2_CAN();
  45   1      
  46   1         // Set up the flash LED task
  47   1         LED_Flash_Init();
  48   1      
  49   1         // TIMING IS IN TICKS (6 ms tick interval)
  50   1         // Add a 'flash LED' task (on for 1002 ms, off for 1002 ms)
  51   1         SCH_Add_Task(LED_Flash_Update, 0, 167);
  52   1      
  53   1         // Add the traffic-light task
  54   1         SCH_Add_Task(TRAFFIC_LIGHTS_Update, 30, 167);
  55   1         
  56   1         // Start the scheduler
  57   1         SCC_A_MASTER_Start();
  58   1      
  59   1         while(1)
  60   1            {
  61   2            SCH_Dispatch_Tasks();
  62   2            }
  63   1         }
  64          
  65          /*------------------------------------------------------------------*-
  66            ---- END OF FILE -------------------------------------------------
  67          -*------------------------------------------------------------------*/
C51 COMPILER V7.06   MAIN                                                                  12/25/2007 19:33:30 PAGE 15  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 38
                                           ; SOURCE LINE # 39
                                           ; SOURCE LINE # 41
0000 120000      E     LCALL   TRAFFIC_LIGHTS_Init
                                           ; SOURCE LINE # 44
0003 120000      E     LCALL   SCC_A_MASTER_Init_T2_CAN
                                           ; SOURCE LINE # 47
0006 120000      E     LCALL   LED_Flash_Init
                                           ; SOURCE LINE # 51
0009 7E00        E     MOV     R6,#HIGH LED_Flash_Update
000B 7F00        E     MOV     R7,#LOW LED_Flash_Update
000D 7BA7              MOV     R3,#0A7H
000F 7A00              MOV     R2,#00H
0011 E4                CLR     A
0012 FD                MOV     R5,A
0013 FC                MOV     R4,A
0014 120000      E     LCALL   _SCH_Add_Task
                                           ; SOURCE LINE # 54
0017 7E00        E     MOV     R6,#HIGH TRAFFIC_LIGHTS_Update
0019 7F00        E     MOV     R7,#LOW TRAFFIC_LIGHTS_Update
001B 7BA7              MOV     R3,#0A7H
001D 7A00              MOV     R2,#00H
001F 7D1E              MOV     R5,#01EH
0021 7C00              MOV     R4,#00H
0023 120000      E     LCALL   _SCH_Add_Task
                                           ; SOURCE LINE # 57
0026 120000      E     LCALL   SCC_A_MASTER_Start
0029         ?C0001:
                                           ; SOURCE LINE # 59
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 61
0029 120000      E     LCALL   SCH_Dispatch_Tasks
                                           ; SOURCE LINE # 62
002C 80FB              SJMP    ?C0001
002E 22                RET     
             ; FUNCTION main (END)

C51 COMPILER V7.06   MAIN                                                                  12/25/2007 19:33:30 PAGE 16  

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


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
P4 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E8H  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
BULB_BLOWN . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
tByte. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
IEN0 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IEN1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
sCAN_message . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  16
  MCR0 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0000H  1
  MCR1 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0001H  1
  UAR0 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0002H  1
  UAR1 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0003H  1
  LAR0 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0004H  1
  LAR1 . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0005H  1
  MCFG . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0006H  1
  Data . . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0007H  8
  Customer . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   000FH  1
tWord. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
ADCON0 . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D8H  1
SCC_A_MASTER_Start . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
LED_Flash_Init . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_SCH_Add_Task. . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
RED_AMBER. . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TRAFFIC_LIGHTS_Init. . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
SCC_A_MASTER_Init_T2_CAN . . . . . . .  EXTERN   CODE   PROC     -----  -----
eLight_State . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
RED. . . . . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
SCH_Dispatch_Tasks . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
AMBER. . . . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
LED_Flash_Update . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
GREEN. . . . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
TRAFFIC_LIGHTS_Update. . . . . . . . .  EXTERN   CODE   PROC     -----  -----
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
IRCON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C0H  1


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