gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 radix DEC 00002 LIST P=18F2520 ; change also: Configure->Select Device from MPLAB 00003 ; For 2455, 2550, 4455, and 4550: 4 MHz quartz / 1 * 24 / 4 = 24 MHz 003D0900 00004 xtal EQU 4000000 ; you may want to change: _XT_OSC_1H _HS_OSC_1H _HSPLL_OSC_1H 00004B00 00005 baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200 00006 ; The above 3 lines can be changed and built a bootloader for the desired frequency (and PIC type) 0000 00007 #define DO_CONFIG 0 ; Allow programming of the configuration bytes 00008 00009 ;******************************************************************** 00010 ; Tiny Bootloader 18F series Size=100words 00011 ; claudiu.chiculita@ugal.ro 00012 ; http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm 00013 ; Modified by Nam Nguyen-Quang for testing different PIC18Fs with tinybldWin.exe v1.9 00014 ; namqn@yahoo.com 00015 ;******************************************************************** 00016 00017 ; This source file is for PIC18F2420, 2520, 4420, 4520, 2455, 2550, 4455, and 4550 00018 00019 ; Copy these include files to your project directory (i.e. they are in the same 00020 ; directory with your .asm source file), if necessary 00021 00022 #include "icdpictypes.inc" ; Takes care of: #include "p18fxxx.inc", max_flash, IdTypePIC 00001 ;IdTypePIC 00002 ;bits 7 6 5 4 3 2 1 0 00003 ;meaning: type16/18/ds | model_nr 00004 ; 00005 ; 00006 ;If you want to work with another model that is not on the list 00007 ;find one model that is similar to yours and has THE SAME amount 00008 ;of flash and replace its "IFDEF __XXXXXX" and 00009 ;"#include "ZZZZZZZZZ.inc"", but the ID must remain. 00010 ;Each IdTypePIC has one corespondent in the PC application, 00011 ;if you add new ones they will not be recognized. 00012 00000000 00013 IdTypePIC SET 0 00014 00015 IFDEF __16F876A 00016 #include "p16f876a.inc" 00017 IdTypePIC = 0x31 00018 #define max_flash 0x2000 00019 ENDIF 00020 IFDEF __16F877A 00021 #include "p16f877a.inc" 00022 IdTypePIC = 0x31 00023 #define max_flash 0x2000 00024 ENDIF 00025 00026 IFDEF __16F873A 00027 #include "p16f873a.inc" 00028 IdTypePIC = 0x32 00029 #define max_flash 0x1000 00030 ENDIF 00031 IFDEF __16F874A 00032 #include "p16f874a.inc" gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00033 IdTypePIC = 0x32 00034 #define max_flash 0x1000 00035 ENDIF 00036 00037 IFDEF __16F87 00038 #include "p16f87.inc" 00039 IdTypePIC = 0x33 00040 #define max_flash 0x1000 00041 ENDIF 00042 IFDEF __16F88 00043 #include "p16f88.inc" 00044 IdTypePIC = 0x33 00045 #define max_flash 0x1000 00046 ENDIF 00047 00048 IFDEF __16F886 00049 #include "p16f886.inc" 00050 IdTypePIC = 0x36 00051 #define max_flash 0x2000 00052 ENDIF 00053 00054 IFDEF __16F887 00055 #include "p16f887.inc" 00056 IdTypePIC = 0x36 00057 #define max_flash 0x2000 00058 ENDIF 00059 00060 00061 ;---------- 18F ------------- 00062 00063 ; 28/40pin 00064 IFDEF __18F252 00065 #include "p18f252.inc" 00066 IdTypePIC = 0x41 00067 #define max_flash 0x8000 00068 ENDIF 00069 IFDEF __18F452 00070 #include "p18f452.inc" 00071 IdTypePIC = 0x41 00072 #define max_flash 0x8000 00073 ENDIF 00074 IFDEF __18F242 00075 #include "p18f242.inc" 00076 IdTypePIC = 0x42 00077 #define max_flash 0x4000 00078 ENDIF 00079 IFDEF __18F442 00080 #include "p18f442.inc" 00081 IdTypePIC = 0x42 00082 #define max_flash 0x4000 00083 ENDIF 00084 00085 00086 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00087 IFDEF __18F2520 00088 #include "p18f2520.inc" 00001 LIST 00002 00003 ;========================================================================== 00004 ; $Id: p18f2520.inc,v 1.4 2006/08/19 02:39:38 craigfranklin Exp $ 00005 ; MPASM PIC18F2520 processor include 00006 ; 00007 ; (c) Copyright 1999-2005 Microchip Technology, All rights reserved 00008 ;========================================================================== 00009 01219 LIST 00000041 00089 IdTypePIC = 0x41 0000 00090 #define max_flash 0x8000 00091 ENDIF 00092 IFDEF __18F4520 00093 #include "p18f4520.inc" 00094 IdTypePIC = 0x41 00095 #define max_flash 0x8000 00096 ENDIF 00097 IFDEF __18F2420 00098 #include "p18f2420.inc" 00099 IdTypePIC = 0x42 00100 #define max_flash 0x4000 00101 ENDIF 00102 IFDEF __18F4420 00103 #include "p18f4420.inc" 00104 IdTypePIC = 0x42 00105 #define max_flash 0x4000 00106 ENDIF 00107 IFDEF __18F4431 00108 #include "p18f4431.inc" 00109 IdTypePIC = 0x42 00110 #define max_flash 0x4000 00111 ENDIF 00112 00113 ; 28/40pin can2.0 00114 IFDEF __18F258 00115 #include 00116 IdTypePIC = 0x43 00117 #define max_flash 0x8000 00118 ENDIF 00119 IFDEF __18F2580 00120 #include 00121 IdTypePIC = 0x43 00122 #define max_flash 0x8000 00123 ENDIF 00124 IFDEF __18F458 00125 #include 00126 IdTypePIC = 0x43 00127 #define max_flash 0x8000 00128 ENDIF 00129 IFDEF __18F4580 00130 #include gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00131 IdTypePIC = 0x43 00132 #define max_flash 0x8000 00133 ENDIF 00134 IFDEF __18F248 00135 #include 00136 IdTypePIC = 0x44 00137 #define max_flash 0x4000 00138 ENDIF 00139 IFDEF __18F2480 00140 #include 00141 IdTypePIC = 0x44 00142 #define max_flash 0x4000 00143 ENDIF 00144 IFDEF __18F448 00145 #include 00146 IdTypePIC = 0x44 00147 #define max_flash 0x4000 00148 ENDIF 00149 IFDEF __18F4480 00150 #include 00151 IdTypePIC = 0x44 00152 #define max_flash 0x4000 00153 ENDIF 00154 00155 00156 ; 18/28pin 6pwm (some:I2C/SPI) 00157 IFDEF __18F1320 00158 #include 00159 IdTypePIC = 0x45 00160 #define max_flash 0x2000 00161 ENDIF 00162 IFDEF __18F2320 00163 #include 00164 IdTypePIC = 0x45 00165 #define max_flash 0x2000 00166 ENDIF 00167 IFDEF __18F2331 00168 #include 00169 IdTypePIC = 0x45 00170 #define max_flash 0x2000 00171 ENDIF 00172 IFDEF __18F1220 00173 #include 00174 IdTypePIC = 0x46 00175 #define max_flash 0x1000 00176 ENDIF 00177 IFDEF __18F2220 00178 #include 00179 IdTypePIC = 0x46 00180 #define max_flash 0x1000 00181 ENDIF 00182 00183 00184 ; 40pin 6pwm gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00185 IFDEF __18F4320 00186 #include 00187 IdTypePIC = 0x47 00188 #define max_flash 0x2000 00189 ENDIF 00190 IFDEF __18F4331 00191 #include 00192 IdTypePIC = 0x47 00193 #define max_flash 0x2000 00194 ENDIF 00195 00196 IFDEF __18F4220 00197 #include 00198 IdTypePIC = 0x48 00199 #define max_flash 0x1000 00200 ENDIF 00201 00202 00203 ; 64/80pin TQFP 2usart 00204 IFDEF __18F6720 00205 #include 00206 IdTypePIC = 0x4A 00207 #define max_flash 0x20000 00208 ENDIF 00209 IFDEF __18F8720 00210 #include 00211 IdTypePIC = 0x4A 00212 #define max_flash 0x20000 00213 ENDIF 00214 IFDEF __18F6620 00215 #include 00216 IdTypePIC = 0x4B 00217 #define max_flash 0x10000 00218 ENDIF 00219 IFDEF __18F8620 00220 #include 00221 IdTypePIC = 0x4B 00222 #define max_flash 0x10000 00223 ENDIF 00224 IFDEF __18F6520 00225 #include 00226 IdTypePIC = 0x4C 00227 #define max_flash 0x8000 00228 ENDIF 00229 IFDEF __18F8520 00230 #include 00231 IdTypePIC = 0x4C 00232 #define max_flash 0x8000 00233 ENDIF 00234 IFDEF __18F8680 00235 #include 00236 IdTypePIC = 0x4D 00237 #define max_flash 0x10000 00238 ENDIF gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00239 00240 00241 ;PIC18F 2525/2620/4525/4620 EA-USART, nanoWatt, intOSC 00242 00243 IFDEF __18F2525 00244 #include "p18f2525.inc" 00245 IdTypePIC = 0x4E 00246 #define max_flash 0xC000 00247 ENDIF 00248 IFDEF __18F2585 00249 #include "p18f2585.inc" 00250 IdTypePIC = 0x4E 00251 #define max_flash 0xC000 00252 ENDIF 00253 IFDEF __18F4525 00254 #include "p18f4525.inc" 00255 IdTypePIC = 0x4E 00256 #define max_flash 0xC000 00257 ENDIF 00258 IFDEF __18F4585 00259 #include "p18f4585.inc" 00260 IdTypePIC = 0x4E 00261 #define max_flash 0xC000 00262 ENDIF 00263 IFDEF __18F2620 00264 #include "p18f2620.inc" 00265 IdTypePIC = 0x4F 00266 #define max_flash 0x10000 00267 ENDIF 00268 IFDEF __18F2680 00269 #include "p18f2680.inc" 00270 IdTypePIC = 0x4F 00271 #define max_flash 0x10000 00272 ENDIF 00273 IFDEF __18F4620 00274 #include "p18f4620.inc" 00275 IdTypePIC = 0x4F 00276 #define max_flash 0x10000 00277 ENDIF 00278 IFDEF __18F4680 00279 #include "p18f4680.inc" 00280 IdTypePIC = 0x4F 00281 #define max_flash 0x10000 00282 ENDIF 00283 00284 ;---------------- USB ------------------------------ 00285 00286 IFDEF __18F2550 00287 #include "p18f2550.inc" 00288 IdTypePIC = 0x55 00289 #define max_flash 0x8000 00290 ENDIF 00291 IFDEF __18F4550 00292 #include "p18f4550.inc" gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00293 IdTypePIC = 0x55 00294 #define max_flash 0x8000 00295 ENDIF 00296 IFDEF __18F2455 00297 #include "p18f2455.inc" 00298 IdTypePIC = 0x56 00299 #define max_flash 0x6000 00300 ENDIF 00301 IFDEF __18F4455 00302 #include "p18f4455.inc" 00303 IdTypePIC = 0x56 00304 #define max_flash 0x6000 00305 ENDIF 00306 IFDEF __18F4685 00307 #include "p18f4685.inc" 00308 IdTypePIC = 0x57 00309 #define max_flash 0x18000 00310 ENDIF 00311 00312 if IdTypePIC==0 00313 error "Pic not yet implemeted" 00314 endif 00315 00316 00317 00318 IFDEF __18F2685 00319 #include 00320 IdTypePIC = 0x57 00321 #define max_flash 0x18000 ; 18000 00322 ENDIF 00023 #include "spbrgselect.inc" ; RoundResult and baud_rate 00000000 00001 RoundResult SET 0 ; Rounding function. RoundResult = Round(aa/bb) 00002 Round macro aa,bb 00003 LOCAL rr = aa/bb 00004 LOCAL d1 = aa - rr*bb 00005 LOCAL d2 = (rr+1)*bb - aa 00006 RoundResult = rr 00007 if d1 >= d2 00008 RoundResult++ 00009 endif 00010 endm 00011 00000000 00012 AbsResult SET 0 00013 Abs macro nr 00014 if nr>=0 00015 AbsResult = nr 00016 else 00017 AbsResult = -nr 00018 endif 00019 endm 00020 00021 Round xtal,(16*baud) M LOCAL rr = aa/bb M LOCAL d1 = aa - rr*bb gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE M LOCAL d2 = (rr+1)*bb - aa 0000000D M RoundResult = rr M if d1 >= d2 M RoundResult++ M endif 0000000C 00022 spbrg_value EQU RoundResult-1 00023 00024 Round xtal,(16*(spbrg_value+1)) M LOCAL rr = aa/bb M LOCAL d1 = aa - rr*bb M LOCAL d2 = (rr+1)*bb - aa 00004B1E M RoundResult = rr M if d1 >= d2 00004B1F M RoundResult++ M endif 00004B1F 00025 baud_real EQU RoundResult 00026 Abs(baud_real-baud) M if nr>=0 0000001F M AbsResult = nr M else M AbsResult = -nr M endif 00000000 00027 errpercent EQU AbsResult*100/baud 00024 0000 00025 #define first_address max_flash-200 ;100 words 00026 00027 ; For different PICs, uncomment the appropriate lines of CONFIG directives 00028 ; as indicated, and comment out all the other lines, if necessary 00029 ; For example, the following configuration is for PIC18F4550, with 4 MHz crystal 00030 ; You could find the symbol names for the chip in its include file 00031 ; (in the Microchip\MPASM Suite directory) 00032 00033 00034 ;----- CONFIG1L Options ----- 00035 ; For 18F2455, 2550, 4455, and 4550 00036 ; CONFIG PLLDIV = 1, CPUDIV = OSC3_PLL4, USBDIV = 2 00037 00038 00039 ;----- CONFIG1H Options ----- 00040 ; For 18F2455, 2550, 4455, and 4550 00041 ; CONFIG FOSC = HSPLL_HS, FCMEM = OFF, IESO = OFF 00042 00043 ; For 18F2420, 2520, 4420, and 4520 00044 ; CONFIG OSC = HS, FCMEN = OFF, IESO = OFF 00045 ; CONFIG OSC = INTIO67, FCMEN = OFF, IESO = OFF ; Use internal oscilator, xtal = 8000000 00046 00047 00048 ;----- CONFIG2L Options ----- 00049 ; For 18F2455, 2550, 4455, and 4550 00050 ; CONFIG PWRT = ON, BOR = OFF, BORV = 21, VREGEN = OFF 00051 00052 ; For 18F2420, and 4420 00053 ; CONFIG PWRT = ON, BOREN = ON, BORV = 27 00054 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00055 ; For 18F2520, and 4520 00056 ; CONFIG PWRT = OFF, BOREN = OFF, BORV = 28 00057 00058 00059 ;----- CONFIG2H Options ----- 00060 ; For all of the chips associated with this source file 00061 ; CONFIG WDT = OFF, WDTPS = 512 00062 00063 00064 ;----- CONFIG3H Options ----- 00065 ; For 18F2455, 2550, 4455, and 4550 00066 ; CONFIG MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF 00067 00068 ; For 18F2420, and 4420 00069 ; CONFIG MCLRE = ON, PBADEN = OFF, CCP2MX = PORTC 00070 00071 ; For 18F2520, and 4520 00072 ; CONFIG MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = PORTC 00073 00074 ;----- CONFIG4L Options ----- 00075 ; For 18F2455, 2550, 4455, and 4550 00076 ; CONFIG STVREN = ON, LVP = OFF, ICPRT = OFF, DEBUG = OFF, XINST = OFF 00077 00078 ; For 18F2420, and 4420 00079 ; CONFIG STVREN = ON, LVP = OFF, ENHCPU = OFF, DEBUG = OFF 00080 00081 ; For 18F2520, and 4520 00082 ; CONFIG STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF 00083 300000 F2FF 00084 __config 0x300001, 0xf2 00085 __config 0x300002, 0xf9 300002 F2F9 00086 __config 0x300003, 0xf2 300004 FDFF 00087 __config 0x300005, 0xfd 300006 FFBB 00088 __config 0x300006, 0xbb 00089 __config 0x300008, 0xff 300008 FFFF 00090 __config 0x300009, 0xff 00091 __config 0x30000a, 0xff 30000A FFFF 00092 __config 0x30000b, 0xff 00093 __config 0x30000c, 0xff 30000C FFFF 00094 __config 0x30000d, 0xff 00095 00096 ;----------------------------- PROGRAM --------------------------------- 00097 cblock 0 00098 crc 00099 i 00100 cnt1 00101 cnt2 00102 cnt3 00103 counter_hi 00104 counter_lo 00105 flag 00106 endc 00107 cblock 10 00108 buffer:64 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00109 dummy4crc 00110 endc 00111 00112 SendL macro car 00113 movlw car 00114 movwf TXREG 00115 endm 00116 00117 ;0000000000000000000000000 RESET 00000000000000000000000000 00118 0000 00119 ORG 0x0000 0000 EFA0 F03F 00120 GOTO IntrareBootloader 00121 00122 ;view with TabSize=4 00123 ;&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&& 00124 ;---------------------- Bootloader ---------------------- 00125 ;PC_flash: C1h U H L x ... <64 bytes> ... crc 00126 ;PC_eeprom: C1h 40h EEADR EEDATA 0 crc 00127 ;PC_cfg C1h U OR 80h H L 1 byte crc 00128 ;PIC_response: type `K` 00129 7F38 00130 ORG first_address ;space to deposit first 4 instr. of user prog. 7F38 0000 00131 nop 7F3A 0000 00132 nop 7F3C 0000 00133 nop 7F3E 0000 00134 nop 7F40 00135 org first_address+8 7F40 00136 IntrareBootloader 00137 ;init IntOSC, added by Nam Nguyen-Quang 7F40 0E62 00138 movlw 0x62 7F42 6ED3 00139 movwf OSCCON 00140 ; the above 2 lines should be commented out for designs not using the internal oscilator 00141 ; or for the chips without the internal oscilator 00142 ;init serial port 7F44 0E24 00143 movlw b'00100100' 7F46 6EAC 00144 movwf TXSTA 7F48 0E0C 00145 movlw spbrg_value 7F4A 6EAF 00146 movwf SPBRG 7F4C 0E90 00147 movlw b'10010000' 7F4E 6EAB 00148 movwf RCSTA 00149 00150 ; SendL 'R' 00151 ;wait for computer 7F50 D846 00152 rcall Receive 7F52 08C1 00153 sublw 0xC1 ;Expect C1h 00154 7F54 E153 00155 bnz way_to_exit 00156 SendL IdTypePIC ;send PIC type 7F56 0E41 M movlw car 7F58 6EAD M movwf TXREG 7F5A 00157 MainLoop 00158 SendL 'K' ; "-Everything OK, ready and waiting." 7F5A 0E4B M movlw car 7F5C 6EAD M movwf TXREG gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 7F5E 00159 mainl 7F5E 6A00 00160 clrf crc 7F60 D83E 00161 rcall Receive ;Upper 7F62 6EF8 00162 movwf TBLPTRU 7F64 6E07 00163 movwf flag ;(for EEPROM and CFG cases) 7F66 D83B 00164 rcall Receive ;Hi 7F68 6EF7 00165 movwf TBLPTRH 7F6A 6EA9 00166 movwf EEADR ;(for EEPROM case) 7F6C D838 00167 rcall Receive ;Lo 7F6E 6EF6 00168 movwf TBLPTRL 7F70 6EA8 00169 movwf EEDATA ;(for EEPROM case) 00170 7F72 D835 00171 rcall Receive ;count 7F74 6E01 00172 movwf i Message [305] : Using default destination of 1 (file). 7F76 2A01 00173 incf i 7F78 EE00 F009 00174 lfsr FSR0, (buffer-1) 7F7C 00175 rcvoct ;read 64+1 bytes 7F7C 6EF5 00176 movwf TABLAT ;prepare for cfg; => store byte before crc 7F7E D82F 00177 rcall Receive 7F80 6EEC 00178 movwf PREINC0 Message [305] : Using default destination of 1 (file). 7F82 2E01 00179 decfsz i 7F84 D7FB 00180 bra rcvoct 00181 7F86 6600 00182 tstfsz crc ;check crc 7F88 D01F 00183 bra ziieroare 7F8A AC07 00184 btfss flag,6 ;is EEPROM data? 7F8C D003 00185 bra noeeprom 7F8E 0E04 00186 movlw b'00000100' ;Setup eeprom 7F90 D81E 00187 rcall Write 7F92 D018 00188 bra waitwre 7F94 00189 noeeprom 7F94 AE07 00190 btfss flag,7 ;is CFG data? 7F96 D004 00191 bra noconfig 00192 #if DO_CONFIG 00193 tblwt* ;write TABLAT(byte before crc) to TBLPTR*** 00194 movlw b'11000100' ;Setup cfg 00195 rcall Write 00196 bra waitwre 00197 #else 7F98 0000 00198 nop 7F9A 0000 00199 nop 7F9C 0000 00200 nop 7F9E D7DD 00201 bra MainLoop 00202 #endif 7FA0 00203 noconfig 00204 ;write 7FA0 00205 eraseloop 7FA0 0E94 00206 movlw b'10010100' ; Setup erase 7FA2 D815 00207 rcall Write 7FA4 000A 00208 TBLRD*- ; point to adr-1 00209 7FA6 00210 writebigloop gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 7FA6 0E02 00211 movlw 2 ; 2groups 7FA8 6E05 00212 movwf counter_hi 7FAA EE00 F00A 00213 lfsr FSR0,buffer 7FAE 00214 writesloop 7FAE 0E20 00215 movlw 32 ; 32bytes = 16instr 7FB0 6E06 00216 movwf counter_lo 7FB2 00217 writebyte 7FB2 50EE 00218 movf POSTINC0,w ; put 1 byte 7FB4 6EF5 00219 movwf TABLAT 7FB6 000F 00220 tblwt+* Message [305] : Using default destination of 1 (file). 7FB8 2E06 00221 decfsz counter_lo 7FBA D7FB 00222 bra writebyte 00223 7FBC 0E84 00224 movlw b'10000100' ; Setup writes 7FBE D807 00225 rcall Write Message [305] : Using default destination of 1 (file). 7FC0 2E05 00226 decfsz counter_hi 7FC2 D7F5 00227 bra writesloop 7FC4 00228 waitwre 00229 ;btfsc EECON1,WR ;for eeprom writes (wait to finish write) 00230 ;bra waitwre ;no need: round trip time with PC bigger than 4ms 00231 7FC4 94A6 00232 bcf EECON1,WREN ;disable writes 7FC6 D7C9 00233 bra MainLoop 00234 7FC8 00235 ziieroare ;CRC failed 00236 SendL 'N' 7FC8 0E4E M movlw car 7FCA 6EAD M movwf TXREG 7FCC D7C8 00237 bra mainl 00238 00239 ;******** procedures ****************** 00240 7FCE 00241 Write 7FCE 6EA6 00242 movwf EECON1 7FD0 0E55 00243 movlw 0x55 7FD2 6EA7 00244 movwf EECON2 7FD4 0EAA 00245 movlw 0xAA 7FD6 6EA7 00246 movwf EECON2 7FD8 82A6 00247 bsf EECON1,WR ;WRITE 7FDA 0000 00248 nop 00249 ;nop 7FDC 0012 00250 return 00251 00252 7FDE 00253 Receive 7FDE 0E03 00254 movlw xtal/2000000+1 ; for 20MHz => 11 => 1second delay 00255 ; for 18F2xxx chips, this should be xtal/1000000+1 7FE0 6E02 00256 movwf cnt1 7FE2 00257 rpt2 7FE2 6A03 00258 clrf cnt2 7FE4 00259 rpt3 7FE4 6A04 00260 clrf cnt3 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 7FE6 00261 rptc 7FE6 AA9E 00262 btfss PIR1,RCIF ;test RX 7FE8 D003 00263 bra notrcv 7FEA 50AE 00264 movf RCREG,w ;return read data in W 7FEC 2600 00265 addwf crc,f ;compute crc 7FEE 0012 00266 return 7FF0 00267 notrcv Message [305] : Using default destination of 1 (file). 7FF0 2E04 00268 decfsz cnt3 7FF2 D7F9 00269 bra rptc Message [305] : Using default destination of 1 (file). 7FF4 2E03 00270 decfsz cnt2 7FF6 D7F6 00271 bra rpt3 Message [305] : Using default destination of 1 (file). 7FF8 2E02 00272 decfsz cnt1 7FFA D7F3 00273 bra rpt2 00274 ;timeout: 7FFC 00275 way_to_exit 7FFC 9EAB 00276 bcf RCSTA, SPEN ; deactivate UART 7FFE D79C 00277 bra first_address 00278 ;************************************************************* 00279 ; After reset 00280 ; Do not expect the memory to be zero, 00281 ; Do not expect registers to be initialised like in catalog. 00282 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 14 SYMBOL TABLE LABEL VALUE A 00000000 ABDEN 00000000 ABDOVF 00000007 ACCESS 00000000 ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ACQT0 00000003 ACQT1 00000004 ACQT2 00000005 ADCON0 00000FC2 ADCON1 00000FC1 ADCON2 00000FC0 ADCS0 00000000 ADCS1 00000001 ADCS2 00000002 ADDEN 00000003 ADEN 00000003 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADIP 00000006 ADON 00000000 ADRES 00000FC3 ADRESH 00000FC4 ADRESL 00000FC3 AN0 00000000 AN1 00000001 AN10 00000001 AN11 00000004 AN12 00000000 AN2 00000002 AN3 00000003 AN4 00000005 AN8 00000002 AN9 00000003 AbsResult 0000001F BANKED 00000001 BAUDCON 00000FB8 BAUDCTL 00000FB8 BCLIE 00000003 BCLIF 00000003 BCLIP 00000003 BF 00000000 BGST 00000005 BOR 00000000 BRG16 00000003 BRGH 00000002 BSR 00000FE0 C 00000000 C1INV 00000004 C1OUT 00000006 C2INV 00000005 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE C2OUT 00000007 CCP1 00000002 CCP1CON 00000FBD CCP1IE 00000002 CCP1IF 00000002 CCP1IP 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCP2CON 00000FBA CCP2IE 00000000 CCP2IF 00000000 CCP2IP 00000000 CCP2M0 00000000 CCP2M1 00000001 CCP2M2 00000002 CCP2M3 00000003 CCP2X 00000005 CCP2Y 00000004 CCP2_PORTB 00000003 CCP2_PORTC 00000001 CCPR1 00000FBE CCPR1H 00000FBF CCPR1L 00000FBE CCPR2 00000FBB CCPR2H 00000FBC CCPR2L 00000FBB CFGS 00000006 CHS0 00000002 CHS1 00000003 CHS2 00000004 CHS3 00000005 CIS 00000003 CK 00000006 CKE 00000006 CKP 00000004 CLKI 00000007 CLKO 00000006 CM0 00000000 CM1 00000001 CM2 00000002 CMCON 00000FB4 CMIE 00000006 CMIF 00000006 CMIP 00000006 CREN 00000004 CSRC 00000007 CVR0 00000000 CVR1 00000001 CVR2 00000002 CVR3 00000003 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE CVRCON 00000FB5 CVREF 00000002 CVREN 00000007 CVROE 00000006 CVRR 00000005 CVRSS 00000004 D 00000005 DC 00000001 DC1B0 00000004 DC1B1 00000005 DC2B0 00000004 DC2B1 00000005 DONE 00000001 D_A 00000005 ECCP1AS 00000FB6 ECCPAS0 00000004 ECCPAS1 00000005 ECCPAS2 00000006 ECCPASE 00000007 EEADR 00000FA9 EECON1 00000FA6 EECON2 00000FA7 EEDATA 00000FA8 EEIE 00000004 EEIF 00000004 EEIP 00000004 EEPGD 00000007 FAST 00000001 FERR 00000002 FLTS 00000002 FREE 00000004 FSR0 00000000 FSR0H 00000FEA FSR0L 00000FE9 FSR1 00000001 FSR1H 00000FE2 FSR1L 00000FE1 FSR2 00000002 FSR2H 00000FDA FSR2L 00000FD9 GCEN 00000007 GIE 00000007 GIEH 00000007 GIEL 00000006 GO 00000001 GO_DONE 00000001 HLVDCON 00000FD2 HLVDEN 00000004 HLVDIE 00000002 HLVDIF 00000002 HLVDIP 00000002 HLVDL0 00000000 HLVDL1 00000001 HLVDL2 00000002 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE HLVDL3 00000003 IDLEN 00000007 INDF0 00000FEF INDF1 00000FE7 INDF2 00000FDF INT0 00000000 INT0E 00000004 INT0F 00000001 INT0IE 00000004 INT0IF 00000001 INT1 00000001 INT1E 00000003 INT1F 00000000 INT1IE 00000003 INT1IF 00000000 INT1IP 00000006 INT1P 00000006 INT2 00000002 INT2E 00000004 INT2F 00000001 INT2IE 00000004 INT2IF 00000001 INT2IP 00000007 INT2P 00000007 INTCON 00000FF2 INTCON2 00000FF1 INTCON3 00000FF0 INTEDG0 00000006 INTEDG1 00000005 INTEDG2 00000004 INTSRC 00000007 IOFS 00000002 IPEN 00000007 IPR1 00000F9F IPR2 00000FA2 IRCF0 00000004 IRCF1 00000005 IRCF2 00000006 IRVST 00000005 IVRST 00000005 IdTypePIC 00000041 IntrareBootloader 00007F40 KBI0 00000004 KBI1 00000005 KBI2 00000006 KBI3 00000007 LATA 00000F89 LATA0 00000000 LATA1 00000001 LATA2 00000002 LATA3 00000003 LATA4 00000004 LATA5 00000005 LATA6 00000006 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE LATA7 00000007 LATB 00000F8A LATB0 00000000 LATB1 00000001 LATB2 00000002 LATB3 00000003 LATB4 00000004 LATB5 00000005 LATB6 00000006 LATB7 00000007 LATC 00000F8B LATC0 00000000 LATC1 00000001 LATC2 00000002 LATC3 00000003 LATC4 00000004 LATC5 00000005 LATC6 00000006 LATC7 00000007 LVDCON 00000FD2 LVDEN 00000004 LVDIE 00000002 LVDIF 00000002 LVDIN 00000005 LVDIP 00000002 LVDL0 00000000 LVDL1 00000001 LVDL2 00000002 LVDL3 00000003 LVV0 00000000 LVV1 00000001 LVV2 00000002 LVV3 00000003 MCLR 00000003 MainLoop 00007F5A N 00000004 NOT_A 00000005 NOT_ADDRESS 00000005 NOT_BOR 00000000 NOT_DONE 00000001 NOT_MCLR 00000003 NOT_PD 00000002 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RI 00000004 NOT_SS 00000005 NOT_T1SYNC 00000002 NOT_T3SYNC 00000002 NOT_TO 00000003 NOT_W 00000002 NOT_WRITE 00000002 OERR 00000001 OSC1 00000007 OSC2 00000006 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE OSCCON 00000FD3 OSCFIE 00000007 OSCFIF 00000007 OSCFIP 00000007 OSCTUNE 00000F9B OSTS 00000003 OV 00000003 P 00000004 PC 00000FF9 PCFG0 00000000 PCFG1 00000001 PCFG2 00000002 PCFG3 00000003 PCL 00000FF9 PCLATH 00000FFA PCLATU 00000FFB PD 00000002 PEIE 00000006 PEN 00000002 PGC 00000006 PGD 00000007 PGM 00000005 PIE1 00000F9D PIE2 00000FA0 PIR1 00000F9E PIR2 00000FA1 PLLEN 00000006 PLUSW0 00000FEB PLUSW1 00000FE3 PLUSW2 00000FDB POR 00000001 PORTA 00000F80 PORTB 00000F81 PORTC 00000F82 PORTE 00000F84 POSTDEC0 00000FED POSTDEC1 00000FE5 POSTDEC2 00000FDD POSTINC0 00000FEE POSTINC1 00000FE6 POSTINC2 00000FDE PR2 00000FCB PREINC0 00000FEC PREINC1 00000FE4 PREINC2 00000FDC PROD 00000FF3 PRODH 00000FF4 PRODL 00000FF3 PRSEN 00000007 PSA 00000003 PSSAC0 00000002 PSSAC1 00000003 PWM1CON 00000FB7 R 00000002 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE RA0 00000000 RA1 00000001 RA2 00000002 RA3 00000003 RA4 00000004 RA5 00000005 RA6 00000006 RA7 00000007 RB0 00000000 RB1 00000001 RB2 00000002 RB3 00000003 RB4 00000004 RB5 00000005 RB6 00000006 RB7 00000007 RBIE 00000003 RBIF 00000000 RBIP 00000000 RBPU 00000007 RC0 00000000 RC1 00000001 RC2 00000002 RC3 00000003 RC4 00000004 RC5 00000005 RC6 00000006 RC7 00000007 RCEN 00000003 RCIDL 00000006 RCIE 00000005 RCIF 00000005 RCIP 00000005 RCMT 00000006 RCON 00000FD0 RCREG 00000FAE RCSTA 00000FAB RD 00000000 RD16 00000007 RE3 00000003 RI 00000004 RSEN 00000001 RX 00000007 RX9 00000006 RX9D 00000000 R_W 00000002 Receive 00007FDE RoundResult 00004B1F S 00000003 SBOREN 00000006 SCK 00000003 SCKP 00000004 SCL 00000003 SCS0 00000000 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE SCS1 00000001 SDA 00000004 SDI 00000004 SDO 00000005 SEN 00000000 SENDB 00000003 SMP 00000007 SP0 00000000 SP1 00000001 SP2 00000002 SP3 00000003 SP4 00000004 SPBRG 00000FAF SPBRGH 00000FB0 SPEN 00000007 SREN 00000005 SS 00000005 SSPADD 00000FC8 SSPBUF 00000FC9 SSPCON1 00000FC6 SSPCON2 00000FC5 SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPIP 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPOV 00000006 SSPSTAT 00000FC7 STATUS 00000FD8 STKFUL 00000007 STKOVF 00000007 STKPTR 00000FFC STKUNF 00000006 SWDTE 00000000 SWDTEN 00000000 SYNC 00000004 T08BIT 00000006 T0CKI 00000004 T0CON 00000FD5 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0PS0 00000000 T0PS1 00000001 T0PS2 00000002 T0SE 00000004 T13CKI 00000000 T1CKI 00000000 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000FCD gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE T1OSCEN 00000003 T1OSI 00000001 T1OSO 00000000 T1RUN 00000006 T1SYNC 00000002 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000FCA T2OUTPS0 00000003 T2OUTPS1 00000004 T2OUTPS2 00000005 T2OUTPS3 00000006 T3CCP1 00000003 T3CCP2 00000006 T3CKPS0 00000004 T3CKPS1 00000005 T3CON 00000FB1 T3SYNC 00000002 TABLAT 00000FF5 TBLPTR 00000FF6 TBLPTRH 00000FF7 TBLPTRL 00000FF6 TBLPTRU 00000FF8 TMR0H 00000FD7 TMR0IE 00000005 TMR0IF 00000002 TMR0IP 00000002 TMR0L 00000FD6 TMR0ON 00000007 TMR1CS 00000001 TMR1H 00000FCF TMR1IE 00000000 TMR1IF 00000000 TMR1IP 00000000 TMR1L 00000FCE TMR1ON 00000000 TMR2 00000FCC TMR2IE 00000001 TMR2IF 00000001 TMR2IP 00000001 TMR2ON 00000002 TMR3CS 00000001 TMR3H 00000FB3 TMR3IE 00000001 TMR3IF 00000001 TMR3IP 00000001 TMR3L 00000FB2 TMR3ON 00000000 TO 00000003 TOS 00000FFD TOSH 00000FFE TOSL 00000FFD TOSU 00000FFF TRISA 00000F92 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE TRISA0 00000000 TRISA1 00000001 TRISA2 00000002 TRISA3 00000003 TRISA4 00000004 TRISA5 00000005 TRISA6 00000006 TRISA7 00000007 TRISB 00000F93 TRISB0 00000000 TRISB1 00000001 TRISB2 00000002 TRISB3 00000003 TRISB4 00000004 TRISB5 00000005 TRISB6 00000006 TRISB7 00000007 TRISC 00000F94 TRISC0 00000000 TRISC1 00000001 TRISC2 00000002 TRISC3 00000003 TRISC4 00000004 TRISC5 00000005 TRISC6 00000006 TRISC7 00000007 TRMT 00000001 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 TX 00000006 TX9 00000006 TX9D 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXIP 00000004 TXREG 00000FAD TXSTA 00000FAC UA 00000001 VCFG0 00000004 VCFG1 00000005 VDIRMAG 00000007 VPP 00000003 VREFN 00000002 VREFP 00000003 W 00000000 WCOL 00000007 WDTCON 00000FD1 WR 00000001 WREG 00000FE8 WREN 00000002 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE WRERR 00000003 WUE 00000001 Write 00007FCE Z 00000002 _BOREN_NOSLP_2L 000000FD _BOREN_OFF_2L 000000F9 _BOREN_ON_2L 000000FB _BOREN_SBORDIS_2L 000000FF _BORV_0_2L 000000E7 _BORV_1_2L 000000EF _BORV_2_2L 000000F7 _BORV_3_2L 000000FF _CCP2MX_PORTBE_3H 000000FE _CCP2MX_PORTC_3H 000000FF _CONFIG1H 00300001 _CONFIG2H 00300003 _CONFIG2L 00300002 _CONFIG3H 00300005 _CONFIG4L 00300006 _CONFIG5H 00300009 _CONFIG5L 00300008 _CONFIG6H 0030000B _CONFIG6L 0030000A _CONFIG7H 0030000D _CONFIG7L 0030000C _CP0_OFF_5L 000000FF _CP0_ON_5L 000000FE _CP1_OFF_5L 000000FF _CP1_ON_5L 000000FD _CP2_OFF_5L 000000FF _CP2_ON_5L 000000FB _CP3_OFF_5L 000000FF _CP3_ON_5L 000000F7 _CPB_OFF_5H 000000FF _CPB_ON_5H 000000BF _CPD_OFF_5H 000000FF _CPD_ON_5H 0000007F _DEBUG_OFF_4L 000000FF _DEBUG_ON_4L 0000007F _DEVID1 003FFFFE _DEVID2 003FFFFF _EBTR0_OFF_7L 000000FF _EBTR0_ON_7L 000000FE _EBTR1_OFF_7L 000000FF _EBTR1_ON_7L 000000FD _EBTR2_OFF_7L 000000FF _EBTR2_ON_7L 000000FB _EBTR3_OFF_7L 000000FF _EBTR3_ON_7L 000000F7 _EBTRB_OFF_7H 000000FF _EBTRB_ON_7H 000000BF _FCMEN_OFF_1H 000000BF _FCMEN_ON_1H 000000FF _IDLOC0 00200000 gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE _IDLOC1 00200001 _IDLOC2 00200002 _IDLOC3 00200003 _IDLOC4 00200004 _IDLOC5 00200005 _IDLOC6 00200006 _IDLOC7 00200007 _IESO_OFF_1H 0000007F _IESO_ON_1H 000000FF _LPT1OSC_OFF_3H 000000FB _LPT1OSC_ON_3H 000000FF _LVP_OFF_4L 000000FB _LVP_ON_4L 000000FF _MCLRE_OFF_3H 0000007F _MCLRE_ON_3H 000000FF _OSC_ECIO6_1H 000000F5 _OSC_EC_1H 000000F4 _OSC_HSPLL_1H 000000F6 _OSC_HS_1H 000000F2 _OSC_INTIO67_1H 000000F8 _OSC_INTIO7_1H 000000F9 _OSC_LP_1H 000000F0 _OSC_RCIO6_1H 000000F7 _OSC_RC_1H 000000F3 _OSC_XT_1H 000000F1 _PBADEN_OFF_3H 000000FD _PBADEN_ON_3H 000000FF _PWRT_OFF_2L 000000FF _PWRT_ON_2L 000000FE _STVREN_OFF_4L 000000FE _STVREN_ON_4L 000000FF _WDTPS_1024_2H 000000F5 _WDTPS_128_2H 000000EF _WDTPS_16384_2H 000000FD _WDTPS_16_2H 000000E9 _WDTPS_1_2H 000000E1 _WDTPS_2048_2H 000000F7 _WDTPS_256_2H 000000F1 _WDTPS_2_2H 000000E3 _WDTPS_32768_2H 000000FF _WDTPS_32_2H 000000EB _WDTPS_4096_2H 000000F9 _WDTPS_4_2H 000000E5 _WDTPS_512_2H 000000F3 _WDTPS_64_2H 000000ED _WDTPS_8192_2H 000000FB _WDTPS_8_2H 000000E7 _WDT_OFF_2H 000000FE _WDT_ON_2H 000000FF _WRT0_OFF_6L 000000FF _WRT0_ON_6L 000000FE _WRT1_OFF_6L 000000FF _WRT1_ON_6L 000000FD _WRT2_OFF_6L 000000FF gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE _WRT2_ON_6L 000000FB _WRT3_OFF_6L 000000FF _WRT3_ON_6L 000000F7 _WRTB_OFF_6H 000000FF _WRTB_ON_6H 000000BF _WRTC_OFF_6H 000000FF _WRTC_ON_6H 000000DF _WRTD_OFF_6H 000000FF _WRTD_ON_6H 0000007F _XINST_OFF_4L 000000BF _XINST_ON_4L 000000FF __18F2520 00000001 baud 00004B00 baud_real 00004B1F buffer 0000000A cnt1 00000002 cnt2 00000003 cnt3 00000004 counter_hi 00000005 counter_lo 00000006 crc 00000000 dummy4crc 0000004A eraseloop 00007FA0 errpercent 00000000 flag 00000007 i 00000001 mainl 00007F5E noconfig 00007FA0 noeeprom 00007F94 notrcv 00007FF0 rcvoct 00007F7C rpt2 00007FE2 rpt3 00007FE4 rptc 00007FE6 spbrg_value 0000000C waitwre 00007FC4 way_to_exit 00007FFC writebigloop 00007FA6 writebyte 00007FB2 writesloop 00007FAE xtal 003D0900 ziieroare 00007FC8 DDRA TRISA DDRB TRISB DDRC TRISC DDRD TRISD DDRE TRISE DO_CONFIG 0 first_address max_flash-200 max_flash 0x8000 MEMORY USAGE MAP ('X' = Used, '-' = Unused) gpasm-0.13.5 beta picBootLoader.asm9-15-2008 22:18:42 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000000 : XXXX------------ ---------------- ---------------- ---------------- 00007f00 : ---------------- ---------------- ---------------- --------XXXXXXXX 00007f40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00007f80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00007fc0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00300000 : XXXXXXXXXXXXXX-- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 109 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 7 reported, 0 suppressed