d26c7dcc31c704081bee6e00a6945ec9d68c7b5a.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. A51 MACRO ASSEMBLER STARTUP 09/30/2018 11:45:28 PAGE 1
  2. MACRO ASSEMBLER A51 V8.02b
  3. OBJECT MODULE PLACED IN .\Output\STARTUP.obj
  4. ASSEMBLER INVOKED BY: D:\Keil_v5\C51\BIN\A51.EXE ..\..\Code\Startup\STARTUP.A51 SET(LARGE) DEBUG PRINT(.\Output\LST\STAR
  5. TUP.lst) OBJECT(.\Output\STARTUP.obj) EP
  6. LOC OBJ LINE SOURCE
  7. 1 $nomod51
  8. 2 ;------------------------------------------------------------------------------
  9. 3 ; This file is part of the C51 Compiler package
  10. 4 ; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
  11. 5 ;------------------------------------------------------------------------------
  12. 6 ; STARTUP.A51: This code is executed after processor reset.
  13. 7 ;
  14. 8 ; To translate this file use A51 with the following invocation:
  15. 9 ;
  16. 10 ; A51 STARTUP.A51
  17. 11 ;
  18. 12 ; To link the modified STARTUP.OBJ file to your application use the following
  19. 13 ; BL51 invocation:
  20. 14 ;
  21. 15 ; BL51 <your object file list>, STARTUP.OBJ <controls>
  22. 16 ;
  23. 17 ;------------------------------------------------------------------------------
  24. 18 ;
  25. 19 ; User-defined Power-On Initialization of Memory
  26. 20 ;
  27. 21 ; With the following EQU statements the initialization of memory
  28. 22 ; at processor reset can be defined:
  29. 23 ;
  30. 24 ; ; the absolute start-address of IDATA memory is always 0
  31. 0080 25 IDATALEN EQU 80H ; the length of IDATA memory in bytes.
  32. 26 ;
  33. 0000 27 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
  34. 02FF 28 XDATALEN EQU 2FFH ; the length of XDATA memory in bytes.
  35. 29 ;
  36. 0000 30 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
  37. 0000 31 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
  38. 32 ;
  39. 33 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
  40. 34 ; 8051 CPU. At minimum the memory space occupied from the C51
  41. 35 ; run-time routines must be set to zero.
  42. 36 ;------------------------------------------------------------------------------
  43. 37 ;
  44. 38 ; Reentrant Stack Initilization
  45. 39 ;
  46. 40 ; The following EQU statements define the stack pointer for reentrant
  47. 41 ; functions and initialized it:
  48. 42 ;
  49. 43 ; Stack Space for reentrant functions in the SMALL model.
  50. 0000 44 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
  51. 0100 45 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
  52. 46 ;
  53. 47 ; Stack Space for reentrant functions in the LARGE model.
  54. 0000 48 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
  55. 0000 49 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
  56. 50 ;
  57. 51 ; Stack Space for reentrant functions in the COMPACT model.
  58. 0000 52 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
  59. 0000 53 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
  60. 54 ;
  61. 55 ;------------------------------------------------------------------------------
  62. 56 ;
  63. 57 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
  64. A51 MACRO ASSEMBLER STARTUP 09/30/2018 11:45:28 PAGE 2
  65. 58 ;
  66. 59 ; The following EQU statements define the xdata page used for pdata
  67. 60 ; variables. The EQU PPAGE must conform with the PPAGE control used
  68. 61 ; in the linker invocation.
  69. 62 ;
  70. 0000 63 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
  71. 64 ;
  72. 0000 65 PPAGE EQU 0 ; define PPAGE number.
  73. 66 ;
  74. 00A0 67 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
  75. 68 ; (most 8051 variants use P2 as uppermost address byte)
  76. 69 ;
  77. 70 ;------------------------------------------------------------------------------
  78. 71
  79. 72 ; Standard SFR Symbols
  80. 00E0 73 ACC DATA 0E0H
  81. 00F0 74 B DATA 0F0H
  82. 0081 75 SP DATA 81H
  83. 0082 76 DPL DATA 82H
  84. 0083 77 DPH DATA 83H
  85. 78
  86. 79
  87. 80
  88. 81 NAME ?C_STARTUP
  89. 82
  90. 83
  91. 84 ?C_C51STARTUP SEGMENT CODE
  92. 85 ?STACK SEGMENT IDATA
  93. 86
  94. ---- 87 RSEG ?STACK
  95. 0000 88 DS 1
  96. 89
  97. 90 EXTRN CODE (?C_START)
  98. 91 PUBLIC ?C_STARTUP
  99. 92
  100. ---- 93 CSEG AT 0
  101. 0000 020000 F 94 ?C_STARTUP: LJMP STARTUP1
  102. 95
  103. ---- 96 RSEG ?C_C51STARTUP
  104. 97
  105. 0000 98 STARTUP1:
  106. 99 ;Disable POR
  107. 0000 75C7AA 100 MOV 0C7H,#0AAH
  108. 0003 75C755 101 MOV 0C7H,#55H
  109. 0006 75FD5A 102 MOV 0FDH,#5AH
  110. 103
  111. 0009 75C7AA 104 MOV 0C7H,#0AAH
  112. 000C 75C755 105 MOV 0C7H,#55H
  113. 000F 75FDA5 106 MOV 0FDH,#0A5H
  114. 107
  115. 108 IF IDATALEN <> 0
  116. 0012 787F 109 MOV R0,#IDATALEN - 1
  117. 0014 E4 110 CLR A
  118. 0015 F6 111 IDATALOOP: MOV @R0,A
  119. 0016 D8FD 112 DJNZ R0,IDATALOOP
  120. 113 ENDIF
  121. 114
  122. 115 IF XDATALEN <> 0
  123. 0018 900000 116 MOV DPTR,#XDATASTART
  124. 001B 7FFF 117 MOV R7,#LOW (XDATALEN)
  125. 118 IF (LOW (XDATALEN)) <> 0
  126. 001D 7E03 119 MOV R6,#(HIGH (XDATALEN)) +1
  127. 120 ELSE
  128. MOV R6,#HIGH (XDATALEN)
  129. ENDIF
  130. 001F E4 123 CLR A
  131. A51 MACRO ASSEMBLER STARTUP 09/30/2018 11:45:28 PAGE 3
  132. 0020 F0 124 XDATALOOP: MOVX @DPTR,A
  133. 0021 A3 125 INC DPTR
  134. 0022 DFFC 126 DJNZ R7,XDATALOOP
  135. 0024 DEFA 127 DJNZ R6,XDATALOOP
  136. 128 ENDIF
  137. 129
  138. 130 IF PPAGEENABLE <> 0
  139. MOV PPAGE_SFR,#PPAGE
  140. ENDIF
  141. 133
  142. 134 IF PDATALEN <> 0
  143. MOV R0,#LOW (PDATASTART)
  144. MOV R7,#LOW (PDATALEN)
  145. CLR A
  146. PDATALOOP: MOVX @R0,A
  147. INC R0
  148. DJNZ R7,PDATALOOP
  149. ENDIF
  150. 142
  151. 143 IF IBPSTACK <> 0
  152. EXTRN DATA (?C_IBP)
  153. MOV ?C_IBP,#LOW IBPSTACKTOP
  154. ENDIF
  155. 148
  156. 149 IF XBPSTACK <> 0
  157. EXTRN DATA (?C_XBP)
  158. MOV ?C_XBP,#HIGH XBPSTACKTOP
  159. MOV ?C_XBP+1,#LOW XBPSTACKTOP
  160. ENDIF
  161. 155
  162. 156 IF PBPSTACK <> 0
  163. EXTRN DATA (?C_PBP)
  164. MOV ?C_PBP,#LOW PBPSTACKTOP
  165. ENDIF
  166. 160
  167. 0026 758100 F 161 MOV SP,#?STACK-1
  168. 162 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
  169. 163 ; EXTRN CODE (?B_SWITCH0)
  170. 164 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
  171. 0029 020000 F 165 LJMP ?C_START
  172. 166
  173. 167 END
  174. A51 MACRO ASSEMBLER STARTUP 09/30/2018 11:45:28 PAGE 4
  175. SYMBOL TABLE LISTING
  176. ------ ----- -------
  177. N A M E T Y P E V A L U E ATTRIBUTES
  178. ?C_C51STARTUP. . . C SEG 002CH REL=UNIT
  179. ?C_START . . . . . C ADDR ----- EXT
  180. ?C_STARTUP . . . . C ADDR 0000H A
  181. ?STACK . . . . . . I SEG 0001H REL=UNIT
  182. ACC. . . . . . . . D ADDR 00E0H A
  183. B. . . . . . . . . D ADDR 00F0H A
  184. DPH. . . . . . . . D ADDR 0083H A
  185. DPL. . . . . . . . D ADDR 0082H A
  186. IBPSTACK . . . . . N NUMB 0000H A
  187. IBPSTACKTOP. . . . N NUMB 0100H A
  188. IDATALEN . . . . . N NUMB 0080H A
  189. IDATALOOP. . . . . C ADDR 0015H R SEG=?C_C51STARTUP
  190. PBPSTACK . . . . . N NUMB 0000H A
  191. PBPSTACKTOP. . . . N NUMB 0000H A
  192. PDATALEN . . . . . N NUMB 0000H A
  193. PDATASTART . . . . N NUMB 0000H A
  194. PPAGE. . . . . . . N NUMB 0000H A
  195. PPAGEENABLE. . . . N NUMB 0000H A
  196. PPAGE_SFR. . . . . D ADDR 00A0H A
  197. SP . . . . . . . . D ADDR 0081H A
  198. STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
  199. XBPSTACK . . . . . N NUMB 0000H A
  200. XBPSTACKTOP. . . . N NUMB 0000H A
  201. XDATALEN . . . . . N NUMB 02FFH A
  202. XDATALOOP. . . . . C ADDR 0020H R SEG=?C_C51STARTUP
  203. XDATASTART . . . . N NUMB 0000H A
  204. REGISTER BANK(S) USED: 0
  205. ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)