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

📄 delay_t0.lst

📁 基于8051共享时钟调度器的can总线通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
 187      =2  sbit  T2     = P1^7;
 188      =2  sbit  CLKOUT = P1^6;
 189      =2  sbit  T2EX   = P1^5;
 190      =2  sbit  INT2   = P1^4;
 191      =2  sbit  INT6   = P1^3;
 192      =2  sbit  INT5   = P1^2;
 193      =2  sbit  INT4   = P1^1;
 194      =2  sbit  INT3   = P1^0;
 195      =2  
 196      =2  /*  P4    */
 197      =2  sbit  RXDC   = P4^7;
 198      =2  sbit  TXDC   = P4^6;
 199      =2  sbit  INT8   = P4^5;
 200      =2  sbit  SLS    = P4^4;
 201      =2  sbit  STO    = P4^3;
 202      =2  sbit  SRI    = P4^2;
 203      =2  sbit  SCLK   = P4^1;
 204      =2  sbit  ADST   = P4^0;
 205      =2  
 206      =2  #endif
  33      =1  
  34      =1  // Include oscillator / chip details here 
  35      =1  // (essential if generic delays / timeouts are used)
  36      =1  //  -
  37      =1  // Oscillator / resonator frequency (in Hz) e.g. (11059200UL)
  38      =1  #define OSC_FREQ (10000000UL)
  39      =1  
  40      =1  // Number of oscillations per instruction (4, 6 or 12)
  41      =1  // 12 - Original 8051 / 8052 and numerous modern versions
  42      =1  //  6 - Various Infineon and Philips devices, etc.
  43      =1  //  4 - Dallas, etc.
  44      =1  //
  45      =1  // Take care with Dallas devices 
  46      =1  // - Timers default to *12* osc ticks unless CKCON is modified 
  47      =1  // - If using generic code on a Dallas device, use 12 here
  48      =1  #define OSC_PER_INST (6)
  49      =1  
  50      =1  //------------------------------------------------------------------
  51      =1  // SHOULD NOT NEED TO EDIT THE SECTIONS BELOW
  52      =1  //------------------------------------------------------------------
  53      =1  typedef unsigned char tByte;
  54      =1  typedef unsigned int  tWord;
  55      =1  typedef unsigned long tLong;
  56      =1  
  57      =1  // Misc #defines
  58      =1  #ifndef TRUE
  59      =1  #define FALSE 0
  60      =1  #define TRUE (!FALSE)
  61      =1  #endif
  62      =1  
  63      =1  #define RETURN_NORMAL (bit) 0
  64      =1  #define RETURN_ERROR (bit) 1
  65      =1  
  66      =1  
  67      =1  //------------------------------------------------------------------
  68      =1  // Interrupts
  69      =1  // - see Chapter 13.  
  70      =1  //------------------------------------------------------------------
  71      =1  
  72      =1  // Generic 8051/52 timer interrupts (used in most schedulers)
C51 COMPILER V7.06   DELAY_T0                                                              12/25/2007 19:33:30 PAGE 6   

  73      =1  #define INTERRUPT_Timer_0_Overflow 1
  74      =1  #define INTERRUPT_Timer_1_Overflow 3
  75      =1  #define INTERRUPT_Timer_2_Overflow 5
  76      =1  
  77      =1  // Additional interrupts (used in shared-clock schedulers)
  78      =1  #define INTERRUPT_EXTERNAL_0 0
  79      =1  #define INTERRUPT_EXTERNAL_1 2
  80      =1  #define INTERRUPT_UART_Rx_Tx 4
  81      =1  #define INTERRUPT_CAN_c515c 17
  82      =1  
  83      =1  //------------------------------------------------------------------
  84      =1  // Error codes 
  85      =1  // - see Chapter 14. 
  86      =1  //------------------------------------------------------------------
  87      =1  
  88      =1  #define ERROR_SCH_TOO_MANY_TASKS (1)
  89      =1  #define ERROR_SCH_CANNOT_DELETE_TASK (2)
  90      =1  
  91      =1  #define ERROR_SCH_WAITING_FOR_SLAVE_TO_ACK (3)
  92      =1  #define ERROR_SCH_WAITING_FOR_START_COMMAND_FROM_MASTER (3)
  93      =1  
  94      =1  #define ERROR_SCH_ONE_OR_MORE_SLAVES_DID_NOT_START (4)
  95      =1  #define ERROR_SCH_LOST_SLAVE (5)
  96      =1  
  97      =1  #define ERROR_SCH_CAN_BUS_ERROR (6)
  98      =1  
  99      =1  #define ERROR_I2C_WRITE_BYTE (10)
 100      =1  #define ERROR_I2C_READ_BYTE (11)
 101      =1  #define ERROR_I2C_WRITE_BYTE_AT24C64 (12)
 102      =1  #define ERROR_I2C_READ_BYTE_AT24C64 (13)
 103      =1  #define ERROR_I2C_DS1621 (14)
 104      =1  
 105      =1  #define ERROR_USART_TI (21)
 106      =1  #define ERROR_USART_WRITE_CHAR (22)
 107      =1  
 108      =1  #define ERROR_SPI_EXCHANGE_BYTES_TIMEOUT (31)
 109      =1  #define ERROR_SPI_X25_TIMEOUT (32)
 110      =1  #define ERROR_SPI_MAX1110_TIMEOUT (33)
 111      =1  
 112      =1  #define ERROR_ADC_MAX150_TIMEOUT (44)
 113      =1  
 114      =1  #endif
 115      =1  
 116      =1  /*------------------------------------------------------------------*-
 117      =1    ---- END OF FILE -------------------------------------------------
 118      =1  -*------------------------------------------------------------------*/
  25          
  26          // ------ Private constants ----------------------------------------
  27           
  28          // Timer preload values for use in simple (hardware) delays
  29          // - Timers are 16-bit, manual reload ('one shot').
  30          //
  31          // NOTE: These values are portable but timings are *approximate*
  32          //       and *must* be checked by hand if accurate timing is required.
  33          //
  34          // Define Timer 0 / Timer 1 reload values for ~1 msec delay
  35          // NOTE: Adjustment made to allow for function call overheard etc.
  36          #define PRELOAD01  (65536 - (tWord)(OSC_FREQ / (OSC_PER_INST * 1063)))    
  37          #define PRELOAD01H (PRELOAD01 / 256)
  38          #define PRELOAD01L (PRELOAD01 % 256)
  39          
  40          /*------------------------------------------------------------------*-
C51 COMPILER V7.06   DELAY_T0                                                              12/25/2007 19:33:30 PAGE 7   

  41          
  42            Hardware_Delay_T0()
  43          
  44            Function to generate N millisecond delay (approx). 
  45          
  46            Uses Timer 0 (easily adapted to Timer 1).
  47          
  48          -*------------------------------------------------------------------*/
  49          void Hardware_Delay_T0(const tWord N)   
  50             {
  51   1         tWord ms;
  52   1         
  53   1         // Configure Timer 0 as a 16-bit timer 
  54   1         TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
  55   1         TMOD |= 0x01; // Set required T0 bits (T1 left unchanged) 
  56   1      
  57   1         ET0 = 0;  // No interupts
  58   1      
  59   1         // Delay value is *approximately* 1 ms per loop   
  60   1         for (ms = 0; ms < N; ms++)
  61   1            {                 
  62   2            TH0 = PRELOAD01H;  
  63   2            TL0 = PRELOAD01L;   
  64   2      
  65   2            TF0 = 0;          // clear overflow flag
  66   2            TR0 = 1;          // start timer 0
  67   2      
  68   2            while (TF0 == 0); // Loop until Timer 0 overflows (TF0 == 1)
  69   2      
  70   2            TR0 = 0;          // Stop Timer 0
  71   2            }
  72   1         }        
  73          
  74          /*------------------------------------------------------------------*-
  75            ---- END OF FILE -------------------------------------------------
  76          -*------------------------------------------------------------------*/
C51 COMPILER V7.06   DELAY_T0                                                              12/25/2007 19:33:30 PAGE 8   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _Hardware_Delay_T0 (BEGIN)
                                           ; SOURCE LINE # 49
;---- Variable 'N' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 54
0000 5389F0            ANL     TMOD,#0F0H
                                           ; SOURCE LINE # 55
0003 438901            ORL     TMOD,#01H
                                           ; SOURCE LINE # 57
0006 C2A9              CLR     ET0
                                           ; SOURCE LINE # 60
;---- Variable 'ms' assigned to Register 'R4/R5' ----
0008 E4                CLR     A
0009 FD                MOV     R5,A
000A FC                MOV     R4,A
000B         ?C0001:
000B C3                CLR     C
000C ED                MOV     A,R5
000D 9F                SUBB    A,R7
000E EC                MOV     A,R4
000F 9E                SUBB    A,R6
0010 5016              JNC     ?C0006
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 62
0012 758CF9            MOV     TH0,#0F9H
                                           ; SOURCE LINE # 63
0015 758AE1            MOV     TL0,#0E1H
                                           ; SOURCE LINE # 65
0018 C28D              CLR     TF0
                                           ; SOURCE LINE # 66
001A D28C              SETB    TR0
001C         ?C0004:
                                           ; SOURCE LINE # 68
001C 308DFD            JNB     TF0,?C0004
001F         ?C0005:
                                           ; SOURCE LINE # 70
001F C28C              CLR     TR0
                                           ; SOURCE LINE # 71
0021 0D                INC     R5
0022 BD0001            CJNE    R5,#00H,?C0007
0025 0C                INC     R4
0026         ?C0007:
0026 80E3              SJMP    ?C0001
                                           ; SOURCE LINE # 72
0028         ?C0006:
0028 22                RET     
             ; FUNCTION _Hardware_Delay_T0 (END)

C51 COMPILER V7.06   DELAY_T0                                                              12/25/2007 19:33:30 PAGE 9   

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
tByte. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
IEN0 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IEN1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
tWord. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
ADCON0 . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D8H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
_Hardware_Delay_T0 . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  N. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  ms . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
IRCON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     41    ----
   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 + -