MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;03 mars rajout mode compilation AVEC/SANS SHIFT pour avoir Heure 00002 ;et temp sur 16 cars (voir ligne 191) 00003 ;-------- edition sur terminal -------- 00004 ; HAPR_876_ICSP.asm Q=8MHz 00005 ;PIC16F876 avec bootloader 00006 ;ADC 12bits MAX186, mesure Temperature filtree 00007 ;version 070303 : 32car Defilants PAULFJUJO 00008 ; 3/03/07 19H03M35S 00009 ;--------------- 00010 ;02 mars 07 00011 ;modif filtrage mesure sur 64 valeurs , bug sur bank car apres affichage bcd retour bank0 00012 ;25 fev 07 00013 ; modif affectations E/S pour rajouter Max186 ADC 12 bits 00014 ;========================== 00015 ;HAPR_876_ICSP.asm Q=8MHz 00016 ;PIC16F876 avec bootloader 00017 ;ADC 12bits MAX186 00018 ;ver 070225 PAULFJUJO 00019 ;ADC MAX186 = 011-159 :02975 00020 ;ADC MAX186 = 011-157 :02973 00021 ;========================= 00022 ;18/02/07 separ‚ pin test hardware et pin MAJ RTC 00023 ; ATTENTION si tension Pile=0V pas possible d'initialiser le RTC 00024 ; il faut Vpile > 2,5V 00025 ; 05/02/07 suppression du 0 dizaine d'heure et jour horloge et mesure Temper 00026 ;04/02/07 00027 ;HARP_876_ICSP_8.asm 00028 ;Executing: "C:\MPLAB722\MPASM Suite\MPASMWIN.EXE" /q /p16F876 "HAPR_876_ICSP_8.asm" /l"HAPR_876_ICSP_8. lst" 00029 ;/e"HAPR_876_ICSP_8.err" 00030 ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 626 : Crossing page boundary -- ensure page bits a re set. 00031 ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 639 : Crossing page boundary -- ensure page bits a re set. 00032 ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 649 : Crossing page boundary -- ensure page bits a re set. 00033 ;Warning[202] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 1030 : Argument out of range. Least significant b its used. 00034 ;Loaded C:\MPLAB722\_16F876\HAPR_876_ICSP_8.COD. 00035 ;BUILD SUCCEEDED: Sun Feb 04 11:55:13 2007 00036 ;message obtenu sur terminal au debut du programme : 00037 ; HAPR_ICSP_8.asm Q=8MHz 00038 ; PIC16F876 avec bootloader 00039 ; ver 070203 PAULFJUJO 00040 ; 04/02/07 11H53M36S 00041 ;============ 00042 ; corrige bug Renseigne_Time pointait sur Buffer_MAJ au lieu de Buffer_Texte 00043 ; attention buffer_Texte+10 => offset +16!! ne pas oublier le point -> Buffer_Texte+.10 00044 ;HARP_876_ICSP_7.asm partie I2C debug‚e : 00045 ; bug routine I2C confusion entre ACK et M_ACK 00046 ; I2C g‚r‚ 100% software 00047 ;03/02/07 00048 ;HAPR_876_ICSP_6.asm MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00049 ; bug : interference entre IT Rb0 acquisition car et rangement dans buffer Texte 00050 ; et traitement Saisie_Caracteres pour mise … l'heure horloge DS1307 via Buffer MAJ 00051 ; modif pour ne garder que l'acquisition char en interrupt 00052 ;et traitement separ‚s dans Waitsynchro et Saisie2car 00053 ; pin26=RB7 -- vert ---5 de DS1307 SDA 00054 ; pin25=RB6 -- jaune---6 de DS1307 SCL 00055 ;======================================= 00056 ; HARP_ICSP_5.asm 28/01/07 avec DS1307 00057 ;Program Memory Words Used: 1914 00058 ;Program Memory Words Free: 6278 00059 ; bug sur horloge.. OK au 1er passage puis BAD ??? 00060 ;------------------------------ 00061 ; HARP_ICSP_4.asm 27/01/07 version OK avec traitement PCLATH 00062 ; tables caractere en fond de memoire, avant le bootloader zone B00... 00063 ; MAIS avec DS1307 non activ‚ 00064 ;------------------------------ 00065 ;http://z.oumnad.123.fr/Microcontroleurs/PIC16F876.pdf 00066 ;HAPR_876_ICSP_3.asm 07/01/07 test BAD .. 00067 ;============== 00068 ;.HAPR_ICSP_3.asm Q=8MHz. 00069 ;PIC16F876 . 00070 ;PaulFjujo 070110 00071 ;.1 00072 ;.2 00073 ;.3 00074 ;.********* 00075 ;============== 00076 ; deplacement des tables caractere en fond de memoire, avant le bootloader 00077 ; rajout gestion DS1307 00078 ; pin28=RB7 -- vert ---5 de DS1307 SDA 00079 ; pin27=RB6 -- jaune---6 de DS1307 SCL 00080 ;============================================== 00081 ;HAPR_876_ICSP_2.asm 30/12/06 test OK 00082 ;modif pour choix Msg1 avec temperature OU msg2 modifiable par pin RB2 00083 ;meme apres passage dans boucle principale (plus besoin de reset!) 00084 ;rajout compilation conditionnlle BUILD_SOFT_WITH_8CAR ou 16 CAR 00085 ;rajout hardware: inter 2x N.C. pour passage mode pin RC6 RC7 en ICSP ou normal sur les Leds 00086 ; RB3 rest inaccessible car reste en mode LVP 00087 ;HAPR_876_ICSP_1.asm 29/12/06 00088 ; donc essai usage port C pour les 8 leds, mais condamne les specificit‚s USART,I2C..... 00089 ; et passage lecture RS232 sur Rb0 en interrupt 00090 ; et oblide de defaire les 2 fils de programmation! 00091 ;------------- BUG ? -> non, mais 00092 ;If low-voltage programming mode is not used, the LVP 00093 ;bit can be programmed to a '0' and RB3/PGM becomes 00094 ;a digital I/O pin. However, the LVP bit may only be programmed 00095 ;when programming is entered with VIHH on MCLR. 00096 ;The LVP bit can only be charged when using high voltage on MCLR. 00097 ; essai HAPR_876_ICSP_0.asm OK mais pas d'alumage led sur RB3 ! 00098 ; PB led Portb,3 ne s'active pas malgre LVP_OFF ...sinon il faut abandonner le mode basse tension 00099 ; 00100 ; 29/12/2006 16F876 avec bootloader install‚ , programmation ICSP via 2 fils RC7 Pin 18 et RC6 pin 17 00101 ; usage de ICSP bootloader inclus … partir de 1F00 ..a ..1FFF MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00102 ; bootldr_876_ok_061224.asm 00103 ; programmation par liaison serie IN CIRCUIT 00104 ; pin17=RC6=Tx -- Blanc/vert ---- 3 de DS275 00105 ; pin18=RC7=Rx ----- Vert ------- 1 de DS275 00106 ; liaison RS232 00107 ; pin21=RB0 <- blanc...3 de DS275 5 <- 2 RS232 Tx DB9M clavier 00108 ; pin22=RB1 -> vert ...1 de DS275 7 -> 3 Rs232 Rx DB9M ecran 00109 ; ne pas toucher … la zone 0x70 ..7B inclus 00110 ; donc 0x7C, 7D 7E 7F dispo 00111 ; version anterieure avec 16F88! 00112 ;============================================= 00113 ;03/11/06 LM335Z 2,93V 19,1øC 600 pts 00114 ;necessite une amplification analogique de 5; 00115 ;Vs=Ve*5 Ve deg points 00116 ;0,175 2,535 -20 36 -20.92 00117 ;1,175 2,735 0 241 -0,44 00118 ;2,175 2,935 20 445 20,04 00119 ;3,175 3,135 40 650 40,52 00120 ;4,175 3,335 60 855 61,00 00121 00122 #include <../_16F876/P16F876.inc> 00001 LIST 00002 ; P16F876.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00396 LIST 00123 list p=PIC16F876,c=132,n=60,st=ON,mm=ON,t=ON,x=ON,r=hex 00124 list 00125 00126 EXPAND 00127 00128 ERRORLEVEL -302 00129 00130 ;*************************************** 00131 ; ASSIGNATIONS SYSTEME * 00132 ;*************************************** 00133 ; REGISTRE OPTION_REG (configuration) 00134 ; ----------------------------------- 00135 ;OPTIONVAL EQUB'00000000' 00136 ; RBPU b7 : 1= R‚sistance rappel +5V hors service 00137 ; INTEDG b6 : 1= Interrupt sur flanc montant de RB0 00138 ; 0= Interrupt sur flanc descend. de RB0 00139 ; TOCS b5 : 1= source clock = transition sur RA4 00140 ; TOSE b4 : 1= S‚lection flanc montant RA4(si B5=1) 00141 ; 0= S‚lection flanc descendant RA4 00142 ; PSA b3 : 1= Assignation pr‚diviseur sur Watchdog 00143 ; 0= Assignation pr‚diviseur sur Tmr0 00144 ; PS2/PS0 b2/b0 : valeur du pr‚diviseur 00145 ; 000 = 1/1 (watchdog) ou 1/2 (tmr0) 00146 ; 001 = 1/2 1/4 00147 ; 010 = 1/4 1/8 00148 ; 011 = 1/8 1/16 00149 ; 100 = 1/16 1/32 00150 ; 101 = 1/32 1/64 00151 ; 110 = 1/64 1/128 00152 ; 111 = 1/128 1/256 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00153 ; REGISTRE INTCON (contr"le interruptions standard) 00154 ; ------------------------------------------------- 00155 ; INTCONVAL EQU B'00000000' 00156 ; GIE b7 : masque autorisation g‚n‚rale interrupt 00157 ; PEIE b6 : masque autorisation g‚n‚rale p‚riph‚riques 00158 ; T0IE b5 : masque interruption tmr0 00159 ; INTE b4 : masque interruption RB0/Int 00160 ; RBIE b3 : masque interruption RB4/RB7 00161 ; T0IF b2 : flag Tmr0 00162 ; INTF b1 : flag RB0/Int 00163 ; RBIF b0 : flag interruption RB4/RB7 00164 ; REGISTRE PIE1 (controle les interruptions p‚riph‚riques) 00165 ; ---------------------------------------------------- 00166 ; PIE1VAL EQU B'00000000' 00167 ; PSPIE b7 : Toujours 0 sur PIC 16F786 00168 ; ADIE b6 : masque interrupt convertisseur A/D 00169 ; RCIE b5 : masque interrupt r‚ception USART 00170 ; TXIE b4 : masque interrupt transmission USART 00171 ; SSPIE b3 : masque interrupt port s‚rie synchrone 00172 ; CCP1IE b2 : masque interrupt CCP1 00173 ; TMR2IE b1 : masque interrupt TMR2 = PR2 00174 ; TMR1IE b0 : masque interrupt d‚bordement tmr1 00175 ; REGISTRE PIE2 (contr"le interruptions particuliŠres) 00176 ; ---------------------------------------------------- 00177 ; PIE2VAL EQU B'00000000' 00178 ; UNUSED b7 : inutilis‚ = 0 00179 ; RESERVED b6 : r‚serv‚ = 0 00180 ; UNUSED b5 : inutilis‚ = 0 00181 ; EEIE b4 : masque interrupt ‚criture EEPROM 00182 ; BCLIE b3 : masque interrupt collision bus 00183 ; UNUSED b2 : inutilis‚ = 0 00184 ; UNUSED b1 : inutilis‚ = 0 00185 ; CCP2IE b0 : masque interrupt CCP2 00186 00187 2007 3DB2 00188 __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_ON & _BODEN_OFF & _PWRTE_ON 00189 00190 ;#define DEBUG 00191 ;#define BUILD_SOFT_WITH_8CAR 00192 ;#define TRACE 00193 ;#define TESTSAISIE 00194 #define BUID_WITH_SHIFT 00195 00196 00197 ;---------------------------------------------- 00198 ;DECLARATION VARIABLE 00199 ;---------------------------------------------- 00200 CBLOCK 0x020 ; debut de la zone variables 00201 00000020 00202 Buffer_Texte :.32 ; reservation de 32 octets (car) 00000040 00203 SEC 00000041 00204 MIN 00000042 00205 HEURE 00000043 00206 JourSem MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000044 00207 Jour 00000045 00208 Mois 00000046 00209 Annee 00000047 00210 CtrlReg 00000048 00211 varun ; numero de CAR 00000049 00212 Ncol ; numero de caractere pendant l'affichage 0000004A 00213 Curseur ; curseur d'ecriture (la ou le texte sera modifier) 0000004B 00214 _Index_T ; Numero de car … afficher 0000004C 00215 _Index_N ; index Now colonne en cours 0000004D 00216 _Index_M ; adresse en cours dans Matrice des caracteres 0x200 … 0x4FF 0000004E 00217 _Index_C ; numero de Colonne … afficher 0000004F 00218 _Offset_C ; offset dans le caractere 00000050 00219 _RsCount 00000051 00220 _RsByte 00000052 00221 _Cpt1 00000053 00222 _Temp1 00000054 00223 _Temp2 00000055 00224 cmpt1 ; compteur 00225 ; ---- 00000056 00226 Conf 00000057 00227 ADDR 00000058 00228 DEV_DS1307 ; adresse DS1307 RTC 00000059 00229 DEV_1624 ; Adresse DS1624 mesure T° 0000005A 00230 BitsTaches 0000005B 00231 STR_INDEX 0000005C 00232 _N 0000005D 00233 _N0 0000005E 00234 _N1 0000005F 00235 O_BYTE 00000060 00236 I_BYTE 00000061 00237 TC_HI 00000062 00238 TC_LO 00000063 00239 Drapeaux 00240 ; Drapeaux de 8 bits … usage multiple 00241 ;7 signe 1=negatif 00242 ;6 elligible =1 si un car dispo sinon sinon =0 00243 ;5 00244 ;4 00245 ;3 Affichage mesure filtree au 1/100 de degres 00246 ;2 Traitement mesure Filtree T Exter 1=fait 0=en cours 00247 ;1 00248 ;0 1=message 1 avec temper 1=message 2 modificable SANS mesure de temperature 00249 ENDC 00000063 00250 LastBank0 EQU Drapeaux 00251 IF ( LastBank0 >= 0x70 ) 00252 ERROR "Attention debordement zone RAM bank0" 00253 ENDIF 00000040 00254 Buffer_MAJ EQU SEC 00255 ; ---------------- 00256 CBLOCK 0x7C 00257 ;Attention 0x70 ... 0x7B used by bootloader 0000007C 00258 STATUS_TEMP 0000007D 00259 W_TEMP 0000007E 00260 PCLATH_TEMP MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00261 ENDC 0000007E 00262 LastCDA equ PCLATH_TEMP 00263 IF ( LastCDA >= 0x7F ) 00264 ERROR "Attention debordement zone RAM Bootloader en bank0" 00265 ENDIF 00266 ;----------------- 00267 cblock 0xA0 ; en bank1 000000A0 00268 Cpt10 00269 ; Bcd 000000A1 00270 Mcount 000000A2 00271 btmp 000000A3 00272 btmp1 000000A4 00273 dixmil 000000A5 00274 mille 000000A6 00275 cent 000000A7 00276 dix 000000A8 00277 un 00278 ; variables 16 bits 000000A9 00279 SommeTamb :1 000000AA 00280 Tamb_F :2 ; Tamb 000000AC 00281 STamb_F :2 000000AE 00282 valx :2 000000B0 00283 val1 :2 000000B2 00284 val2 :2 000000B4 00285 val3 :2 000000B6 00286 reste :2 000000B8 00287 result :2 000000BA 00288 count1 ;delay routines 000000BB 00289 count2 ;delay routines 000000BC 00290 count3 ;delay routines 000000BD 00291 Nb_1 ; compteur bit pour Max186 00292 endc 00293 ;---------------------- 00294 cblock 0x110 ; 96 bytes en bank2 00000110 00295 DATA_EE_DATA 00296 endc 00297 ;---------------------- 00298 cblock 0x190 ; 96 bytes en bank3 00000190 00299 dummy99 00300 endc 00301 00302 ;------- Hardware ------------ 00303 ; PIC16F876 en DIP28 narrow Q=8MHz 00304 ;-----------HARDWARE ---------------------------------------- 00305 ; PIC16F876 DS1624 DS1307 00306 ; PORTB,7 (pin 28) --- output-->SDA (pin 1) ---- SDA (pin 5)----- I2C Devices..2.7K pullup 00307 ; PORTB,6 (pin 27) <--in/out---> SCL (pin 2) ---- SCL (pin 6)---To Other ....2.7K pullup 00308 ; PORTB 5 entree <----------------- test hardware si =0 00309 ; PORTB 4 entree <----------------- choix message 00310 ; PORTB,3 xxxx reserved xxxxx 00311 ; PORTB,2 entree pour MAJ RTC si =0 00312 ;liaison RS232 19200 bauds 00313 ; PORTB,1 -> vert ...1 de DS275 7 -> 3 Rs232 Rx DB9M ecran 00314 ; PORTB,0 <- blanc...3 de DS275 5 <- 2 RS232 Tx DB9M clavier MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00315 ;--- 00316 ; PORTA,5 (pin 7)---------> SCLK 19 Max186 00317 ; PORTA,4 (pin 6) ---------> DIN 17 Max186 00318 ; PORTA,3 (pin 5) ---------> CS 18 Max186 00319 ; PORTA,2 (pin 4) <--------- DOUT 15 Max186 ADC 12 bits 8CH 00320 ; PORTA,1 (pin 3) <----------------- Transistor 2N2222 <- capteur de proximite top synchro 00321 ; PORTA,0 (pin 2) <----------------- Entree ANALOGIQUE (mes de temperature) 00322 ; PORTC ->(pin 11..18)--------------> ULN2803----> 8x 150 ohms ----> 8 leds rouge diam 1,8mm 00323 ; DS275 8 et 2 au VCC et 4=Gnd 00324 ; "Voice Coil" Disque dur actionne/synchronise par oscilateur NE555, 00325 ; R ajustable domaine de frequence :10 … 20Hz 00326 ;---- Definitions --------- 00327 #define OSC_FREQ 8000000 00328 #define Port_8_Leds PORTC ;pin 11.14, 15..18 00329 ;----- 00330 #define I2C_SDA PORTB,7 ;RB7 (pin 28) ---> output-->SDA 00331 #define I2C_SCL PORTB,6 ;RB6 (pin 27) <--in/out---> SCL 00332 #define inp_Test_Hard PORTB,5 ;RB5 (pin 26) <--- input =0 pour Test Hardware 00333 #define PinChoixMsg PORTB,4 ;RB4 (pin 25) <--- input pour Choix de message 00334 #define Rb3notavailable PORTB,3 00335 #define inp_MAJ_RTC PORTB,2 ;RB2 (pin 23) <--- input =0 pour MAJ RTC 00336 #define Rs_Tx PORTB,1 ;RB1 (pin 22) ----> Output -- Pin 3 DS275 7 >---Rx RS232 pin2 DB9F 00337 #define Rs_Rx PORTB,0 ;RB0 (pin 21) <---- Input -- Pin 1 DS275 5 <-- Tx RS232 pin3 DB9F 00338 ;--------- 00339 #define SCLK_Max PORTA,5 ;pin7 ---> 19 SCLK Max186 00340 #define DIN_Max PORTA,4 ;pin6 ---> 17 DIN Max186 00341 #define CS_Max PORTA,3 ;pin5 ---> 18 CS Max186 00342 #define LectBit_Max PORTA,2 ;pin4 <--- 15 DOUT Max186 00343 #define Top_Synchro PORTA,1 ;pin3 <--- <- capteur de proximite 00344 #define Analog0 PORTA,0 ;pin2 <-*-* analogue 00345 ;----- 00346 #define Quartz 8000000 ;8MHZ 00347 #define RETENUE Drapeaux,7 00348 #define ELLIGIBLE Drapeaux,6 00349 #define Drp_MSGx Drapeaux,0 00350 0009 00351 CONSTANT TABUL =.9 ; caractere ascii tabulation 00352 ;---------------------------- 00353 ;demarage apres reset 00354 ;---------------------------- 0000 00355 org 0x000 ; Adresse de depart apres reset 0000 0000 00356 nop ; ICSP 0001 0000 00357 nop ; ICSP 0002 281F 00358 goto start 00359 ;---------------------------- 00360 ;interruption 00361 ;---------------------------- 0004 00362 org 0x04 0004 00FD 00363 MOVWF W_TEMP ;Copy W to TEMP register 0005 0E03 00364 SWAPF STATUS, W ;Swap status to be saved into W 00365 0006 0183 00366 CLRF STATUS ;bank 0, regardless of current bank, Clears IRP,RP1,RP0 0007 00FC 00367 MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register 0008 080A 00368 MOVF PCLATH, W ;Only required if using page 1 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0009 00FE 00369 MOVWF PCLATH_TEMP ;Save PCLATH into W 000A 018A 00370 CLRF PCLATH ;Page zero, regardless of current page 00371 ; est-ce une interrupt sur RB0 ? receive RS232 000B 1A0B 00372 btfsc INTCON,INTE ; tester si interrupt Rb0 autorisee 000C 1C8B 00373 btfss INTCON,INTF ; oui, tester si Flag Rb0 arme 000D 2813 00374 goto timer_int ; NON 000E 00375 Rb0_int 000E 120B 00376 bcf INTCON,INTE ; raz autorise int RB0 000F 228B 00377 call Read_RS ; lecture caractere 0010 108B 00378 bcf INTCON,INTF ; en sortie de traitement interrupt Rb0 devalid‚e! 0011 1763 00379 bsf ELLIGIBLE ; arme drapeau signalant la capture d'un car 0012 2818 00380 goto Fin_it 0013 00381 timer_int 0013 1A8B 00382 btfsc INTCON,TMR0IE ; tester si interrupt timer autorisee 0014 1D0B 00383 btfss INTCON,TMR0IF ; oui, tester si Flag interrupt arme 0015 2818 00384 goto Fin_it ; non test suivant 0016 128B 00385 bcf INTCON,TMR0IE ; tester si interrupt timer autorisee 0017 110B 00386 bcf INTCON,TMR0IF ; RAZ flag interrupt 00387 00388 ; et on en fait quoi ? 00389 ; rien pour l'instant 00390 ;*************************** 0018 00391 Fin_it 00392 0018 087E 00393 MOVF PCLATH_TEMP, W ;Restore PCLATH 0019 008A 00394 MOVWF PCLATH ;Move W into PCLATH 001A 0E7C 00395 SWAPF STATUS_TEMP, W ;Swap STATUS_TEMP register into W 00396 ;(sets bank to original state) 001B 0083 00397 MOVWF STATUS ;Move W into STATUS register 001C 0EFD 00398 SWAPF W_TEMP, F ;Swap W_TEMP 001D 0E7D 00399 SWAPF W_TEMP, W ;Swap W_TEMP into W 001E 0009 00400 retfie ;on rentre 00401 00402 ;---------------------- 00403 ; boucle principale 00404 ;---------------------- 001F 00405 start 00406 ;init ports 001F 0000 00407 nop 0020 0186 00408 clrf PORTB 0021 0185 00409 clrf PORTA 0022 0187 00410 clrf PORTC 00411 bank1 0023 1683 M bsf STATUS,RP0 0024 1303 M bcf STATUS,RP1 0025 3007 00412 movlw b'00000111' ;en sorties sauf RA0,RA1,RA2 en entrees 0026 0085 00413 movwf PORTA 0027 3035 00414 movlw b'00110101' ;en sorties sauf RB0,RB2,RB4,R5 0028 0086 00415 movwf PORTB 0029 3000 00416 movlw 0x00 ;tout le port C en sorties 002A 0087 00417 movwf PORTC 00418 00419 ; definition voie digital ou analogique avec ADCON1 REGISTER (ADDRESS 9Fh) 00420 ;bit 7 ADFM: A/D Result Format Select bit 1 = Right justified. MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00421 ;bit 6-4 Unimplemented: Read as '0' 00422 ;bit PCFG3:PCFG0 AN4/RA5 AN3/RA3 AN2/RA2 AN1/RA1 AN0/RA0 VREF+ VREF CHAN/Refs 00423 ; 0 1 0 1 D VREF+ D A A RA3 VSS 2/1 00424 ; 1 1 1 0 D D D D A VDD VSS 1/0 002B 308E 00425 movlw b'10001110' ;right justified,ref=+5V 0V sur voie analogique AN0 pint Ra0 002C 009F 00426 movwf ADCON1 00427 ; usage timer0 en comptage, interruption des le 1er front descendant sur RA4 00428 ; Prescaler assign‚ … WDT pour avoir un prescaler de 1:1 00429 ; increment on falling edge ; 00430 ; Source clock = entree RA4 00431 ; Interrupt edge bit 00432 ; movlw b'01111000' ; 00433 ; movwf OPTION_REG 002D 018C 00434 clrf PIE1 ; disables all interrupts 002E 0181 00435 clrf OPTION_REG 002F 1781 00436 bsf OPTION_REG,7 ;=1 disable pull_up 0030 1301 00437 bcf OPTION_REG,6 ;INTEDG =0 int sur front descendant RB0 00438 bank0 0031 1283 M bcf STATUS,RP0 0032 1303 M bcf STATUS,RP1 0033 1086 00439 Bcf Rs_Tx ; niveau logique 0 00440 ; definition voie analogique 00441 ;bit 7-6: ADCS1:ADCS0: A/D Conversion Clock Select bits 10 = FOSC/32 00442 ;bit 5-3: CHS2:CHS0: Analog Channel Select bits 000 = channel 0, (RA2/AN2) RA0,1,2,3,5 00443 ;bit 2: GO/DONE: A/D Conversion Status bit,If ADON = 1 1=in progress 0=Done 00444 ;bit 1: Unimplemented: Read as '0' 00445 ;bit 0: ADON: A/D On bit 1 = A/D converter module is operating 0034 3081 00446 movlw b'10000001' ;clock/32 Channel=0 ADON=1 0035 009F 00447 movwf ADCON0 0036 018B 00448 clrf INTCON 0037 01E3 00449 clrf Drapeaux 0038 01DA 00450 clrf BitsTaches 0039 0187 00451 clrf Port_8_Leds 003A 01D1 00452 clrf _RsByte 003B 01CC 00453 clrf _Index_N ; Now 003C 01CB 00454 clrf _Index_T ; zone de texte 32 car defilant 003D 01CD 00455 clrf _Index_M ; zone Matrice des caracteres 003E 01CE 00456 clrf _Index_C ; numero de CAR courant de la zone affichage 003F 01C9 00457 clrf Ncol 00458 bank1 0040 1683 M bsf STATUS,RP0 0041 1303 M bcf STATUS,RP1 0042 01A9 00459 clrf SommeTamb 0043 01AC 00460 clrf STamb_F 0044 01AD 00461 clrf STamb_F+1 00462 bank0 0045 1283 M bcf STATUS,RP0 0046 1303 M bcf STATUS,RP1 0047 00463 Presentation 0047 22B0 00464 CALL Rs_CrLf 0048 01D2 00465 clrf _Cpt1 0049 0852 00466 movf _Cpt1,w 004A 22B5 00467 call Msg_Eeprom 00468 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00469 ; switch … 1 pour mise … jour Horloge RTC 00470 ; et test Hardware des circuits leds 00471 004B 1906 00472 btfsc inp_MAJ_RTC 004C 2850 00473 goto Pres0 00474 00475 ; mise … l'heure par defaut (pour debuuging) 00476 ; MOVLW 0x00 ;00 S 00477 ; MOVWF SEC 00478 ; movlW 0X30 ;30 M 00479 ; movWF MIN 00480 ; MOVLW 0x20 ; 20 H 00481 ; MOVWF HEURE 00482 ; MOVLW 0x02 ;day mardi 00483 ; MOVWF JourSem 00484 ; MOVLW 0x28 ;date 28 00485 ; MOVWF Jour 00486 ; MOVLW 0x01 ;Mois 01 00487 ; MOVWF Mois 00488 ; MOVLW 0x07 ; ANNEE=07 00489 ; MOVWF Annee 00490 ; MOVLW B'10010000' ;Registre de controle SQWE=1 RS0=RS1=0 sortie 1Hz 00491 ; MOVWF CtrlReg 00492 ; CALL Rs_CrLf 00493 ; call Affiche_Time 00494 ; CALL Rs_CrLf 00495 ; call Init_RTC ; la Led sur RTC DS1307 doit clignoter a 1HZ! 00496 00497 ; mise … jour Horloge RTC 004D 22B0 00498 CALL Rs_CrLf 004E 2383 00499 call MAJ_DS1307 004F 22B0 00500 CALL Rs_CrLf 00501 0050 00502 Pres0 0050 1A86 00503 btfsc inp_Test_Hard 0051 287D 00504 goto Pres1 00505 00506 ; call Rs_CrLf 00507 ; movlw EE4-EE0 00508 ; MOVWF _Cpt1 00509 ; call Msg_Eeprom 00510 ; call LectMax186 00511 0052 00512 Test1 ; 8 lignes horizontales de bas en haut 0052 01D0 00513 clrf _RsCount 0053 00514 Test_8leds 0053 0187 00515 clrf Port_8_Leds 0054 2258 00516 call WSync 0055 0850 00517 movf _RsCount,w ;1 0056 0087 00518 movwf Port_8_Leds ;rangee allum‚e pendant 0057 221D 00519 call delay_25mS ;40 msecondes 0058 2214 00520 call delay_10mS 0059 220B 00521 call delay_5mS 005A 0AD0 00522 incf _RsCount,f MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 005B 1D03 00523 BTFSS STATUS, Z 005C 2853 00524 goto Test_8leds 005D 0187 00525 clrf Port_8_Leds 00526 00527 005E 00528 Test2 00529 ;Test Hardware, allumage successif des 8 Leds sur 4 balayages 00530 ; si ChoixMsg=1 , on doit voir 4 segments sur la largeur evoluant de bas en haut 00531 ;pour Tracage 005E 300A 00532 movlw .10 005F 00D0 00533 movwf _RsCount 0060 00534 Test_Hardware 0060 3000 00535 movlw 0x00 0061 00D2 00536 movwf _Cpt1 0062 1403 00537 bsf STATUS,C 0063 00538 TH_1 0063 2258 00539 call WSync 0064 0852 00540 movf _Cpt1,w ;1 0065 0087 00541 movwf Port_8_Leds 0066 220B 00542 call delay_5mS 0067 0187 00543 clrf Port_8_Leds 0068 220B 00544 call delay_5mS 0069 0852 00545 movf _Cpt1,w ;2 006A 0087 00546 movwf Port_8_Leds 006B 220B 00547 call delay_5mS 006C 0187 00548 clrf Port_8_Leds 006D 220B 00549 call delay_5mS 006E 0852 00550 movf _Cpt1,w ;3 006F 0087 00551 movwf Port_8_Leds 0070 220B 00552 call delay_5mS 0071 0187 00553 clrf Port_8_Leds 0072 220B 00554 call delay_5mS 0073 0852 00555 movf _Cpt1,w ;4 0074 0087 00556 movwf Port_8_Leds 0075 220B 00557 call delay_5mS 0076 0187 00558 clrf Port_8_Leds 0077 0DD2 00559 rlf _Cpt1,f 0078 1C03 00560 BTFSS STATUS, C 0079 2863 00561 goto TH_1 007A 03D0 00562 decf _RsCount,f 007B 1D03 00563 BTFSS STATUS, Z 007C 2860 00564 goto Test_Hardware 00565 007D 00566 Pres1 00567 007D 2533 00568 call Lecture_DS1307 ;lecture heure 007E 23F7 00569 call Affiche_Time 007F 22B0 00570 CALL Rs_CrLf 0080 2241 00571 call delay_1S 00572 00573 ;init zone text RAM … partir de Msg en eeprom 0081 1063 00574 bcf Drp_MSGx 0082 2161 00575 call Choix_Message 0083 22B0 00576 CALL Rs_CrLf MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00577 0084 00578 RAZ_Index 0084 018A 00579 clrf PCLATH ; page 0 0085 01D5 00580 clrf cmpt1 0086 01CB 00581 clrf _Index_T ; pointe sur debut de zone texte affichage 0087 01CE 00582 clrf _Index_C ; CAR= 0 0088 01CD 00583 clrf _Index_M ; adresse Matrice= 0 0089 01CC 00584 clrf _Index_N ; colonne Now 008A 01C9 00585 clrf Ncol 008B 01E3 00586 clrf Drapeaux 00587 00588 00589 ; ************ main boucle ****************** 008C 00590 boucle ; affichage en boucle des 32 caracteres 008C 1A06 00591 btfsc PinChoixMsg ; test entree Choix de message ? largeur affichage 16car 008D 288F 00592 goto to_2 ; RA3=1 texte de 32car , modifiable par RS232 008E 2893 00593 goto to_1 ; RA3=0 texte avec Horodatage et Mesure Temper 008F 00594 to_2 008F 1863 00595 btfsc Drp_MSGx ; change de message que si on change de mode 0090 2896 00596 goto _No_Change ; affichage mesure ou affichage message 00597 ; bsf Drp_MSGx 0091 2161 00598 call Choix_Message 0092 2896 00599 goto _No_Change 0093 00600 to_1 0093 1C63 00601 btfss Drp_MSGx 0094 2896 00602 goto _No_Change 00603 ; bcf Drp_MSGx 0095 2161 00604 call Choix_Message 0096 00605 _No_Change 00606 ; btfsc PinChoixMsg 00607 ; goto Sans_Mesure ; pas de mesure de temperature ni horodatage affich‚s 00608 ; bsf ADCON0,ADON ; set Analog Converter ON 00609 ; bsf ADCON0,GO_DONE ; set GO on start conversion 00610 ;Sans_Mesure 00611 ; 00612 ; attente top synchro 0096 2253 00613 call WaitSynchro ; capteur de proximite entre en RA0 0097 1A06 00614 btfsc PinChoixMsg ; avec ou SANS acquisition mesure 0098 28C3 00615 goto Next_Colonne ; car saisie de caracteres 00616 00617 ;version mesure de temp LM335 avec ADC12 bits Max186 0099 1163 00618 bcf Drapeaux,2 009A 210B 00619 call LectMax186 00620 ; bsf Drapeaux,5 ; pour affichage 5 digits RS232 00621 bank1 009B 1683 M bsf STATUS,RP0 009C 1303 M bcf STATUS,RP1 009D 300A 00622 movlw High(.2730) ;0x09 offset 0øC= 2730mV 009E 00B2 00623 movwf val2 ; (msb ) 009F 30AA 00624 movlw Low(.2730) ;0x1A 00A0 00B3 00625 movwf val2+1 ; (lsb) 00A1 21AE 00626 call sub16 ; val1=val1-val2 00627 ;Filtrage Arithmetique 00A2 082C 00628 movf STamb_F,W MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00A3 00B2 00629 movwf val2 00A4 082D 00630 movf STamb_F+1,W 00A5 00B3 00631 movwf val2+1 00A6 21A5 00632 call add16 00A7 0830 00633 movf val1,W 00A8 00AC 00634 movwf STamb_F 00A9 0831 00635 movf val1+1,W 00AA 00AD 00636 movwf STamb_F+1 00AB 0AA9 00637 incf SommeTamb,f 00AC 303C 00638 movlw .60 00AD 0629 00639 xorwf SommeTamb,w 00AE 1D03 00640 btfss STATUS,Z 00641 ; btfss SommeTamb,6 ; =64 00AF 28C1 00642 goto MesNonFiltree ; filtrage non ateint 00643 00644 ; call Divise4 ; divise par 64 00645 ; call Divise4 00646 ; call Divise4 00647 00B0 01B2 00648 clrf val2 00B1 3006 00649 movlw .6 00B2 00B3 00650 movwf val2+1 00B3 2184 00651 call div16 00B4 0830 00652 movf val1,W 00B5 00AA 00653 movwf Tamb_F 00B6 0831 00654 movf val1+1,W 00B7 00AB 00655 movwf Tamb_F+1 00B8 22E0 00656 call bcd_temp 00657 bank1 00B9 1683 M bsf STATUS,RP0 00BA 1303 M bcf STATUS,RP1 00BB 01A9 00658 clrf SommeTamb 00BC 01AC 00659 clrf STamb_F 00BD 01AD 00660 clrf STamb_F+1 00661 bank0 00BE 1283 M bcf STATUS,RP0 00BF 1303 M bcf STATUS,RP1 00C0 1563 00662 bsf Drapeaux,2 00663 00C1 00664 MesNonFiltree 00665 bank0 00C1 1283 M bcf STATUS,RP0 00C2 1303 M bcf STATUS,RP1 00666 ;-- affichage de 16 carateres, 128 colonnes --- 00C3 00667 Next_Colonne 00C3 1003 00668 bcf STATUS,C 00C4 084C 00669 movf _Index_N,W ; 0 … 127 colonne … afficher 00C5 074E 00670 addwf _Index_C,w ; index col dans message de 32car 00C6 00D5 00671 movwf cmpt1 00C7 3907 00672 andlw 0x07 ; 00C8 00CF 00673 movwf _Offset_C ; 0 … 7 00C9 1003 00674 bcf STATUS,C 00CA 0CD5 00675 rrf cmpt1,f ; decalage … droite= /2 00CB 1003 00676 bcf STATUS,C MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00CC 0CD5 00677 rrf cmpt1,f ; decalage … droie= /2 00CD 1003 00678 bcf STATUS,C 00CE 0CD5 00679 rrf cmpt1,f ; cmpt1 =resultat division par 8 => Caractere affich‚ 00CF 0855 00680 movf cmpt1,w ; index de car … afficher 00681 ; recupere le CAR … afficher dans le buffer Texte 00D0 3E20 00682 addlw Buffer_Texte ; rajoute offset du buffer Texte 00D1 0084 00683 movwf FSR ; on va chercher le caractere 00D2 0800 00684 movf INDF, w ; w a la valeur du caractère courant 'u'=117 00D3 3EE0 00685 addlw 0xE0 ; soustrait origine de 32 (add-32) ESPACE 117-32=85-> 55h 00D4 00C8 00686 movwf varun ; varun et W contiennent l'index du caractere 00D5 00CD 00687 movwf _Index_M 00688 ; offset dans table 00D6 307C 00689 movlw .124 00D7 024D 00690 subwf _Index_M,w 00D8 1C03 00691 btfss STATUS,C 00D9 28DC 00692 goto Autorise 00DA 3000 00693 movlw 0 00DB 28FB 00694 goto Suiv_1 00DC 00695 Autorise 00DC 303E 00696 movlw .62 00DD 024D 00697 subwf _Index_M,w 00DE 1C03 00698 btfss STATUS,C 00DF 28E8 00699 goto not_in_table4 00E0 00CD 00700 movwf _Index_M 00E1 21B7 00701 call Mulx8 00702 ;@ 23/01/07 00E2 300D 00703 movlw HIGH(Char_tbl4) ; attention aux franchissements de page car > 1K 00E3 008A 00704 movwf PCLATH 00E4 084D 00705 movf _Index_M,w Message[306]: Crossing page boundary -- ensure page bits are set. 00E5 2500 00706 call Char_tbl4 00E6 018A 00707 clrf PCLATH 00E7 28FB 00708 goto Suiv_1 00E8 00709 not_in_table4 00E8 301F 00710 movlw .31 00E9 024D 00711 subwf _Index_M,w 00EA 1C03 00712 btfss STATUS,C 00EB 28F4 00713 goto not_in_table3 00EC 00CD 00714 movwf _Index_M 00ED 21B7 00715 call Mulx8 00EE 300C 00716 movlw HIGH(Char_tbl3) 00EF 008A 00717 movwf PCLATH 00F0 084D 00718 movf _Index_M,w Message[306]: Crossing page boundary -- ensure page bits are set. 00F1 2400 00719 call Char_tbl3 00F2 018A 00720 clrf PCLATH 00F3 28FB 00721 goto Suiv_1 00F4 00722 not_in_table3 00F4 21B7 00723 call Mulx8 00F5 00CD 00724 movwf _Index_M 00F6 300B 00725 movlw HIGH(Char_tbl2) 00F7 008A 00726 movwf PCLATH 00F8 084D 00727 movf _Index_M,w Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00F9 2300 00728 call Char_tbl2 00FA 018A 00729 clrf PCLATH 00FB 00730 Suiv_1 00FB 0087 00731 movwf Port_8_Leds ; sur le port B 00FC 21E7 00732 call delay_200uS ; appeler la tempo de temp d'affichage 00733 ; call delay_25uS 00734 IFDEF BUILD_SOFT_WITH_8CAR 00735 call delay_200uS 00736 ENDIF 00FD 0ACC 00737 incf _Index_N,f ; incremente Nø de colonne en cours 00FE 0AC9 00738 incf Ncol,f 00FF 1DC9 00739 btfss Ncol,3 ;apres 8eme colonne ,rajout inter-caractere 0100 2905 00740 goto Suiv_2 0101 01C9 00741 clrf Ncol 0102 0187 00742 CLRF Port_8_Leds 0103 21F0 00743 call delay_300uS ; intercaractere 0104 21D5 00744 call delay_25uS 00745 IFDEF BUILD_SOFT_WITH_8CAR 00746 call delay_200uS 00747 ENDIF 0105 00748 Suiv_2 00749 IFDEF BUILD_SOFT_WITH_8CAR ; compilation conditionnelle 00750 ;-- affichage de 8 carateres, 64 pixels ---- 00751 btfss _Index_N,6 ;=64 soit 8 car x 8? 00752 ELSE 00753 ;-- affichage de 16 carateres, 128 pixels ---- 0105 1FCC 00754 btfss _Index_N,7 ;=128 soit 16 car x 8? 00755 ENDIF 0106 28C3 00756 goto Next_Colonne 00757 0107 01CC 00758 clrf _Index_N 0108 0187 00759 CLRF Port_8_Leds 00760 IFDEF BUID_WITH_SHIFT 0109 0ACE 00761 incf _Index_C,f ; shift à chaque scan ,colonne 0 … 255 00762 ENDIF 010A 288C 00763 goto boucle 00764 ;***************************************************** 00765 ; subroutines 00766 ;***************************************************** 010B 00767 LectMax186 00768 ; external clock timming mode 00769 ;19-0123; Rev. 4; 8/96 00770 ;SCLK_Max PORTA,5 ;pin7 ---> 19 SCLK Max186 00771 ;DIN_Max PORTA,4 ;pin6 ---> 17 DIN Max186 00772 ;CS_Max PORTA,3 ;pin5 ---> 18 CS Max186 00773 ;LectBit_Max PORTA,2 ;pin4 <--- 15 DOUT Max186 00774 ; resultat dans val3 00775 bank0 010B 1283 M bcf STATUS,RP0 010C 1303 M bcf STATUS,RP1 010D 1205 00776 bcf DIN_Max 010E 1285 00777 bcf SCLK_Max 010F 1185 00778 bcf CS_Max 0110 243C 00779 call I2C_DELAY MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0111 0000 00780 nop 0112 1605 00781 bsf DIN_Max ;Start 0113 2158 00782 call Send_Clock_to_Max 0114 1205 00783 bcf DIN_Max ;SEL2= 0 0115 2158 00784 call Send_Clock_to_Max 0116 1205 00785 bcf DIN_Max ;SEL1= 0 0117 2158 00786 call Send_Clock_to_Max 0118 1205 00787 bcf DIN_Max ;SEL0= 0 0119 2158 00788 call Send_Clock_to_Max 011A 1605 00789 bsf DIN_Max ;UNI= 1 011B 2158 00790 call Send_Clock_to_Max 011C 1605 00791 bsf DIN_Max ;SCL= 1 011D 2158 00792 call Send_Clock_to_Max 011E 1605 00793 bsf DIN_Max ;PD1= 1 011F 2158 00794 call Send_Clock_to_Max 0120 1605 00795 bsf DIN_Max ;PD0= 1 0121 2158 00796 call Send_Clock_to_Max 0122 1205 00797 bcf DIN_Max 0123 243C 00798 call I2C_DELAY 00799 bank1 0124 1683 M bsf STATUS,RP0 0125 1303 M bcf STATUS,RP1 0126 01B0 00800 clrf val1 0127 3004 00801 movlw .4 0128 00BD 00802 movwf Nb_1 0129 00803 Max1 00804 bank0 0129 1283 M bcf STATUS,RP0 012A 1303 M bcf STATUS,RP1 012B 2158 00805 call Send_Clock_to_Max 012C 1003 00806 bcf STATUS,C 012D 292E 00807 goto $+1 012E 1905 00808 btfsc LectBit_Max 012F 1403 00809 bsf STATUS,C 00810 bank1 0130 1683 M bsf STATUS,RP0 0131 1303 M bcf STATUS,RP1 0132 0DB0 00811 rlf val1,f 0133 0BBD 00812 decfsz Nb_1,f 0134 2929 00813 goto Max1 00814 0135 01B1 00815 clrf val1+1 0136 3008 00816 movlw .8 0137 00BD 00817 movwf Nb_1 0138 00818 Max2 00819 bank0 0138 1283 M bcf STATUS,RP0 0139 1303 M bcf STATUS,RP1 013A 2158 00820 call Send_Clock_to_Max 013B 1003 00821 bcf STATUS,C 013C 293D 00822 goto $+1 013D 1905 00823 btfsc LectBit_Max 013E 1403 00824 bsf STATUS,C 00825 bank1 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 013F 1683 M bsf STATUS,RP0 0140 1303 M bcf STATUS,RP1 0141 0DB1 00826 rlf val1+1,f 0142 0BBD 00827 decfsz Nb_1,f 0143 2938 00828 goto Max2 00829 ; vider le buffer du Max 0144 3004 00830 movlw .4 0145 00BD 00831 movwf Nb_1 0146 00832 Max3 00833 bank0 0146 1283 M bcf STATUS,RP0 0147 1303 M bcf STATUS,RP1 0148 2158 00834 call Send_Clock_to_Max 0149 294A 00835 goto $+1 014A 294B 00836 goto $+1 00837 bank1 014B 1683 M bsf STATUS,RP0 014C 1303 M bcf STATUS,RP1 014D 0BBD 00838 decfsz Nb_1,f 014E 2946 00839 goto Max3 00840 bank0 014F 1283 M bcf STATUS,RP0 0150 1303 M bcf STATUS,RP1 0151 1205 00841 bcf DIN_Max 0152 1285 00842 bcf SCLK_Max 0153 1585 00843 bsf CS_Max 0154 243C 00844 call I2C_DELAY 00845 bank0 0155 1283 M bcf STATUS,RP0 0156 1303 M bcf STATUS,RP1 0157 0008 00846 return 00847 0158 00848 Send_Clock_to_Max 0158 1685 00849 bsf SCLK_Max 0159 0000 00850 nop 015A 0000 00851 nop 015B 0000 00852 nop 015C 1285 00853 bcf SCLK_Max 015D 0000 00854 nop 015E 0000 00855 nop 015F 0000 00856 nop 0160 0008 00857 return 00858 ;----------------- 0161 00859 Choix_Message 0161 1A06 00860 btfsc PinChoixMsg 0162 2966 00861 goto St0 0163 3093 00862 movlw EE1-EE0 ;si Rb2=0 =>mesure de temperature 0164 1063 00863 bcf Drp_MSGx 0165 2968 00864 goto St1 0166 30B3 00865 St0 movlw EE2-EE0 ;si RB2=1 affiche PAULFJUJO ,message modifiable au clavier PC 0167 1463 00866 bsf Drp_MSGx 0168 00D2 00867 St1 movwf _Cpt1 0169 00868 St2 0169 0852 00869 movf _Cpt1,w MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 016A 22BE 00870 call Read_EE 016B 00D1 00871 movwf _RsByte 016C 3020 00872 movlw Buffer_Texte ;= 0x20 on pointe en debut de texte 016D 0749 00873 addwf Ncol,w ; + offset de rangement du caractere 016E 0084 00874 movwf FSR 016F 0851 00875 movf _RsByte,w ; recupere car lu en eeprom 0170 39FF 00876 ANDLW 0x0FF ; si zero ,dernier car 0171 1903 00877 BTFSC STATUS, Z 0172 0008 00878 return 0173 0080 00879 movwf INDF ; le range dans zone text 0174 0AC9 00880 incf Ncol,f 0175 0AD2 00881 incf _Cpt1,f 0176 1EC9 00882 btfss Ncol,5 ; 32 car ? 0177 2969 00883 goto St2 0178 0008 00884 return 00885 ;-------------------- 00886 Divise4 bank1 ; mot val1= mot val1/4 0179 1683 M bsf STATUS,RP0 017A 1303 M bcf STATUS,RP1 017B 1003 00887 bcf STATUS,C ; carry=0 017C 0CB0 00888 rrf val1,F 017D 0CB1 00889 rrf val1+1,F ; division par 2 mot de 16bits 00890 Divise2 bank1 017E 1683 M bsf STATUS,RP0 017F 1303 M bcf STATUS,RP1 0180 1003 00891 bcf STATUS,C 0181 0CB0 00892 rrf val1,F 0182 0CB1 00893 rrf val1+1,F ; division par 2 mot de 16bits 0183 0008 00894 return 00895 ;------------- 00896 div16 bank1 0184 1683 M bsf STATUS,RP0 0185 1303 M bcf STATUS,RP1 0186 01B6 00897 clrf reste ; division 16 bits 0187 01B7 00898 clrf reste+1 ; val1 = val1 / val2 ( reste ) 0188 3010 00899 movlw .16 0189 00A1 00900 movwf Mcount 018A 00901 div161 018A 0DB1 00902 rlf val1+1,f 018B 0DB0 00903 rlf val1,f 018C 0DB7 00904 rlf reste+1,f 018D 0DB6 00905 rlf reste,f 018E 0832 00906 movf val2,w 018F 0236 00907 subwf reste,W 0190 1D03 00908 btfss STATUS,Z 0191 2994 00909 goto div162 0192 0833 00910 movf val2+1,W 0193 0237 00911 subwf reste+1,W 0194 00912 div162 0194 1C03 00913 btfss STATUS,C 0195 299C 00914 goto div163 0196 0833 00915 movf val2+1,W 0197 02B7 00916 subwf reste+1,f 0198 0832 00917 movf val2,W MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0199 1C03 00918 btfss STATUS,C 019A 0FB2 00919 incfsz val2,f 019B 02B6 00920 subwf reste,f 019C 00921 div163 019C 0DB9 00922 rlf result+1,f 019D 0DB8 00923 rlf result,f 019E 0BA1 00924 DECFSZ Mcount,f 019F 298A 00925 goto div161 01A0 0838 00926 fin16 movf result,w 01A1 00B0 00927 movwf val1 01A2 0839 00928 movf result+1,w 01A3 00B1 00929 movwf val1+1 01A4 0008 00930 return 00931 ;----------------------- 00932 add16 bank1 01A5 1683 M bsf STATUS,RP0 01A6 1303 M bcf STATUS,RP1 01A7 0832 00933 movf val2,w ; addition 16 bits 01A8 07B0 00934 addwf val1,f ; val1 = val1 + val2 01A9 0833 00935 movf val2+1,w 01AA 07B1 00936 addwf val1+1,f 01AB 1803 00937 btfsc STATUS, C 01AC 0AB0 00938 incf val1,f 01AD 0008 00939 return 00940 ;-------------------------- 00941 sub16 bank1 01AE 1683 M bsf STATUS,RP0 01AF 1303 M bcf STATUS,RP1 01B0 0833 00942 movf val2+1,W ; source 01B1 02B1 00943 subwf val1+1,F ; dest 01B2 0832 00944 movf val2,W 01B3 1C03 00945 btfss STATUS,C 01B4 0F32 00946 incfsz val2,W 01B5 02B0 00947 subwf val1,F ;dest = dest - source, WITH VALID CARRY 01B6 0008 00948 return 00949 ;----------------------- 01B7 00950 Mulx8 00951 bank0 01B7 1283 M bcf STATUS,RP0 01B8 1303 M bcf STATUS,RP1 00952 ; index matrice = rang car * 8 + decalage dans le caractere 01B9 1003 00953 bcf STATUS,C 01BA 0DCD 00954 rlf _Index_M,f 01BB 1003 00955 bcf STATUS,C 01BC 0DCD 00956 rlf _Index_M,f 01BD 1003 00957 bcf STATUS,C 01BE 0DCD 00958 rlf _Index_M,f 01BF 084D 00959 movf _Index_M,w 01C0 074F 00960 addwf _Offset_C,w 01C1 00CD 00961 movwf _Index_M 01C2 0008 00962 return 00963 ;------------------------ 01C3 00964 delay_RS 00965 bank1 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01C3 1683 M bsf STATUS,RP0 01C4 1303 M bcf STATUS,RP1 01C5 301F 00966 MOVLW .31 ; pour 19200bds 01C6 00BA 00967 MOVWF count1 ; 01C7 0BBA 00968 DECFSZ count1,F ; 1 cycle si pas de saut 01C8 29C7 00969 GOTO $-1 ; 2cycles 00970 bank0 01C9 1283 M bcf STATUS,RP0 01CA 1303 M bcf STATUS,RP1 01CB 0008 00971 Return 01CC 00972 delay_Half_RS 00973 bank1 01CC 1683 M bsf STATUS,RP0 01CD 1303 M bcf STATUS,RP1 01CE 300F 00974 MOVLW .15 ; pour 19200 bauds 01CF 00BA 00975 MOVWF count1 ; 01D0 0BBA 00976 DECFSZ count1,F 01D1 29D0 00977 GOTO $-1 00978 bank0 01D2 1283 M bcf STATUS,RP0 01D3 1303 M bcf STATUS,RP1 01D4 0008 00979 Return 01D5 00980 delay_25uS 00981 bank1 01D5 1683 M bsf STATUS,RP0 01D6 1303 M bcf STATUS,RP1 01D7 3001 00982 movlw 0x01 01D8 00BA 00983 movwf count1 01D9 3001 00984 movlw 0x01 01DA 00BB 00985 movwf count2 01DB 300A 00986 movlw .10 01DC 00BC 00987 movwf count3 01DD 2A4A 00988 goto delay1 01DE 00989 delay_100uS 00990 bank1 01DE 1683 M bsf STATUS,RP0 01DF 1303 M bcf STATUS,RP1 01E0 3001 00991 movlw 0x01 01E1 00BA 00992 movwf count1 01E2 3001 00993 movlw 0x01 01E3 00BB 00994 movwf count2 01E4 3028 00995 movlw .40 01E5 00BC 00996 movwf count3 01E6 2A4A 00997 goto delay1 01E7 00998 delay_200uS 00999 bank1 01E7 1683 M bsf STATUS,RP0 01E8 1303 M bcf STATUS,RP1 01E9 3001 01000 movlw 0x01 01EA 00BA 01001 movwf count1 01EB 3001 01002 movlw 0x01 01EC 00BB 01003 movwf count2 01ED 3050 01004 movlw .80 01EE 00BC 01005 movwf count3 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01EF 2A4A 01006 goto delay1 01F0 01007 delay_300uS 01008 bank1 01F0 1683 M bsf STATUS,RP0 01F1 1303 M bcf STATUS,RP1 01F2 3001 01009 movlw 0x01 01F3 00BA 01010 movwf count1 01F4 3001 01011 movlw 0x01 01F5 00BB 01012 movwf count2 01F6 3078 01013 movlw .120 01F7 00BC 01014 movwf count3 01F8 2A4A 01015 goto delay1 01F9 01016 delay_500uS 01017 bank1 01F9 1683 M bsf STATUS,RP0 01FA 1303 M bcf STATUS,RP1 01FB 3001 01018 movlw 0x01 01FC 00BA 01019 movwf count1 01FD 3001 01020 movlw .1 01FE 00BB 01021 movwf count2 01FF 30C8 01022 movlw .200 0200 00BC 01023 movwf count3 0201 2A4A 01024 goto delay1 0202 01025 delay_1mS 01026 bank1 0202 1683 M bsf STATUS,RP0 0203 1303 M bcf STATUS,RP1 0204 3001 01027 movlw 0x01 0205 00BA 01028 movwf count1 0206 3002 01029 movlw .2 0207 00BB 01030 movwf count2 0208 3090 01031 movlw .144 0209 00BC 01032 movwf count3 020A 2A4A 01033 goto delay1 020B 01034 delay_5mS 01035 bank1 020B 1683 M bsf STATUS,RP0 020C 1303 M bcf STATUS,RP1 020D 3001 01036 movlw 0x01 020E 00BA 01037 movwf count1 020F 3008 01038 movlw .8 0210 00BB 01039 movwf count2 0211 30CD 01040 movlw .205 0212 00BC 01041 movwf count3 0213 2A4A 01042 goto delay1 01043 0214 01044 delay_10mS 01045 bank1 0214 1683 M bsf STATUS,RP0 0215 1303 M bcf STATUS,RP1 0216 3001 01046 movlw 0x01 0217 00BA 01047 movwf count1 0218 3010 01048 movlw .16 0219 00BB 01049 movwf count2 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 021A 309A 01050 movlw .154 021B 00BC 01051 movwf count3 021C 2A4A 01052 goto delay1 021D 01053 delay_25mS 01054 bank1 021D 1683 M bsf STATUS,RP0 021E 1303 M bcf STATUS,RP1 021F 3001 01055 movlw 0x01 ;24,36mS /4Mhz 0220 00BA 01056 movwf count1 ;25,4mS /32Mhz 0221 3028 01057 movlw .40 0222 00BB 01058 movwf count2 0223 3001 01059 movlw .1 0224 00BC 01060 movwf count3 0225 2A4A 01061 goto delay1 0226 01062 delay_100mS 01063 bank1 0226 1683 M bsf STATUS,RP0 0227 1303 M bcf STATUS,RP1 0228 3001 01064 movlw 1 0229 00BA 01065 movwf count1 022A 309D 01066 movlw .157 022B 00BB 01067 movwf count2 022C 3002 01068 movlw .2 022D 00BC 01069 movwf count3 022E 2A4A 01070 goto delay1 022F 01071 delay_250mS 01072 bank1 022F 1683 M bsf STATUS,RP0 0230 1303 M bcf STATUS,RP1 0231 3001 01073 movlw 1 0232 00BA 01074 movwf count1 0233 30C4 01075 movlw .196 0234 00BB 01076 movwf count2 0235 3002 01077 movlw .2 0236 00BC 01078 movwf count3 0237 2A4A 01079 goto delay1 0238 01080 delay_500mS 01081 bank1 0238 1683 M bsf STATUS,RP0 0239 1303 M bcf STATUS,RP1 023A 3004 01082 movlw .4 023B 00BA 01083 movwf count1 023C 300E 01084 movlw .14 023D 00BB 01085 movwf count2 023E 3037 01086 movlw .55 023F 00BC 01087 movwf count3 0240 2A4A 01088 goto delay1 0241 01089 delay_1S 01090 bank1 0241 1683 M bsf STATUS,RP0 0242 1303 M bcf STATUS,RP1 0243 3007 01091 movlw .7 0244 00BA 01092 movwf count1 0245 301B 01093 movlw .27 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0246 00BB 01094 movwf count2 0247 3070 01095 movlw .112 0248 00BC 01096 movwf count3 0249 2A4A 01097 goto delay1 024A 01098 delay1 024A 0BBC 01099 decfsz count3,f 024B 2A4A 01100 goto $-1 024C 0BBB 01101 decfsz count2,f 024D 2A4A 01102 goto $-3 024E 0BBA 01103 decfsz count1,f 024F 2A4A 01104 goto $-5 01105 bank0 0250 1283 M bcf STATUS,RP0 0251 1303 M bcf STATUS,RP1 0252 0008 01106 return 01107 ;---------------------------------- 0253 01108 WaitSynchro 0253 1A06 01109 btfsc PinChoixMsg ; choix message defilant ou Date Heure Temp 0254 2A58 01110 goto WSync 0255 2533 01111 call Lecture_DS1307 ;lecture date heure 0256 2459 01112 call Renseigne_Time ; MAJ du buffer d'affichage 0257 2A5C 01113 goto W0 0258 01114 WSync 01115 bank0 0258 1283 M bcf STATUS,RP0 0259 1303 M bcf STATUS,RP1 025A 178B 01116 bsf INTCON,GIE ; Autorise IT 025B 160B 01117 bsf INTCON,INTE ;Autorise interrupt RB0 025C 01118 W0 01119 ; Test capteur de proximite (invers‚)-> entre sur PortA,0 025C 01120 W1: 025C 1885 01121 btfsc Top_Synchro ; etat 1 = dans la zone d'affichage 025D 2A5C 01122 goto W1 ; etat 0 = dans la zone morte gauche 025E 1C85 01123 W2 btfss Top_Synchro ; attente front montant ,donc mouvement de gauche vers droite 025F 2A5E 01124 goto W2 ; on affiche rien dans le sens droite gauche 0260 1E06 01125 btfss PinChoixMsg ; car on a besoin de ce temps pour faire autre chose! 0261 2A88 01126 goto W4 ; pas de test caract si affichage Date Heure Temperature 01127 01128 ; on est ici dans le mode affichage texte defilant 0262 120B 01129 bcf INTCON,INTE ; interdit interrupt RB0 0263 138B 01130 bcf INTCON,GIE ; Interdit IT 0264 1F63 01131 btfss ELLIGIBLE ; 1 car captur‚ par interruption est disponible ? 0265 2A86 01132 goto W3 ; sinon , la suite 01133 0266 3026 01134 movlw '&' ; est-ce une demande de modification message 0267 0651 01135 xorwf _RsByte,w 0268 1D03 01136 btfss STATUS,Z 0269 2A88 01137 goto W4 01138 ;mise … jour du message de 32 car 026A 01DE 01139 clrf _N1 ; Index de rangement 2 car -> 1 emplacement 026B 01140 Modif_Encore 026B 01D1 01141 clrf _RsByte 026C 178B 01142 bsf INTCON,GIE 026D 160B 01143 bsf INTCON,INTE ;Autorise interrupt RB0 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01144 ;attente saisi caractere au clavier 026E 01145 Modif_1 026E 1F63 01146 btfss ELLIGIBLE 026F 2A6E 01147 goto Modif_1 0270 1363 01148 bcf ELLIGIBLE 0271 138B 01149 bcf INTCON,GIE 0272 120B 01150 bcf INTCON,INTE ;interdit interrupt RB0 0273 0851 01151 movf _RsByte,W ;echo 0274 2298 01152 call Rs_Putchar 0275 301B 01153 movlw .27 ;esc (abandon) 0276 0651 01154 xorwf _RsByte,w 0277 1903 01155 btfsc STATUS,Z 0278 2A85 01156 goto Modif_OK 0279 300D 01157 movlw .13 ;CR (fin) 027A 0651 01158 xorwf _RsByte,w 027B 1903 01159 btfsc STATUS,Z 027C 2A85 01160 goto Modif_OK 027D 085E 01161 movf _N1,w 027E 3E20 01162 ADDLW Buffer_Texte ; offset table 027F 0084 01163 movwf FSR 0280 0851 01164 movf _RsByte,w 0281 0080 01165 movwf INDF ; sauvegarde W -> @FSR() 0282 0ADE 01166 incf _N1,f 0283 1EDE 01167 btfss _N1,5 0284 2A6B 01168 goto Modif_Encore 0285 01169 Modif_OK 0285 01D1 01170 clrf _RsByte 0286 01171 W3 0286 138B 01172 bcf INTCON,GIE ; Interdit IT 0287 120B 01173 bcf INTCON,INTE ; interdit interrupt RB0 0288 21E7 01174 W4 call delay_200uS ; on s'ecarte un peu du bord 0289 1363 01175 bcf ELLIGIBLE ; raz drapeau capture 028A 0008 01176 return 01177 ;-------------------------------------- 028B 01178 Read_RS 028B 01D1 01179 Clrf _RsByte 028C 3008 01180 Movlw H'08' ;byte 8 bit 028D 00D0 01181 Movwf _RsCount 028E 21C3 01182 Rx1 call delay_RS ;bit de start 028F 1003 01183 Bcf STATUS,C ;Carry=0 0290 1806 01184 Btfsc Rs_Rx ;lit et test l'entree RB0 0291 1403 01185 Bsf STATUS,C ;Rx =1, saute si Rx =0 0292 0CD1 01186 rrf _RsByte,f 0293 0BD0 01187 Decfsz _RsCount,f 0294 2A8E 01188 Goto Rx1 0295 21C3 01189 call delay_RS ;bit de stop 0296 21C3 01190 call delay_RS ;bit de stop 0297 0008 01191 return 01192 ;----------------- 0298 01193 Rs_Putchar 01194 bank0 0298 1283 M bcf STATUS,RP0 0299 1303 M bcf STATUS,RP1 029A 00D3 01195 movwf _Temp1 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 029B 3008 01196 Movlw H'08' ;correspond a un byte de 8 bits 029C 00D0 01197 Movwf _RsCount ;place dans RsCount 029D 1086 01198 Bcf Rs_Tx ;bit start a 0 029E 21C3 01199 Call delay_RS ;wait valeur 1bit 4800 Bauds 029F 0CD3 01200 Rrf _Temp1,F ;shift droite dans carry 02A0 1803 01201 Btfsc STATUS,C ;si carry 0 alors saute 02A1 2AA4 01202 Goto $+3 ;carry =1 02A2 1086 01203 Bcf Rs_Tx ;Tx dans PORTX =0 01204 01205 02A3 2AA5 01206 Goto $+2 02A4 1486 01207 Bsf Rs_Tx ;Tx dans PORTx =1 02A5 21C3 01208 Call delay_RS 02A6 0BD0 01209 Decfsz _RsCount,F ;RsCount =RsCount -1 02A7 2A9F 01210 Goto $-8 02A8 1486 01211 Bsf Rs_Tx ;bit de stop 02A9 21C3 01212 Call delay_RS ;byte envoye 02AA 21C3 01213 Call delay_RS ;byte envoye 02AB 0008 01214 return 01215 ;------------- 01216 ;pour tracage 02AC 01217 PasseParLa 02AC 00D1 01218 movwf _RsByte 02AD 2298 01219 call Rs_Putchar ; ECHO sur ecran TERMINAL Rs232 02AE 22B0 01220 call Rs_CrLf 02AF 0008 01221 return 01222 ;--------------- 02B0 01223 Rs_CrLf 02B0 300D 01224 movlw .13 02B1 2298 01225 call Rs_Putchar 02B2 300A 01226 movlw .10 02B3 2298 01227 call Rs_Putchar 02B4 0008 01228 return 01229 ;=========================== 02B5 01230 Msg_Eeprom 02B5 0852 01231 movf _Cpt1,w 02B6 22BE 01232 call Read_EE 02B7 0AD2 01233 incf _Cpt1,f 02B8 39FF 01234 ANDLW 0x0FF 02B9 1903 01235 BTFSC STATUS, Z 02BA 0008 01236 Return 02BB 2298 01237 call Rs_Putchar 02BC 2AB5 01238 goto Msg_Eeprom 02BD 0008 01239 return 01240 ;------- 01241 ; subroutine to read EEPROM memory 01242 02BE 01243 Read_EE ; 16F876 01244 bank2 02BE 1283 M bcf STATUS,RP0 02BF 1703 M bsf STATUS,RP1 02C0 008D 01245 MOVWF EEADR ;Data Memory Address to read 01246 bank3 02C1 1683 M bsf STATUS,RP0 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02C2 1703 M bsf STATUS,RP1 02C3 138C 01247 BCF EECON1, EEPGD ;Point to DATA memory 02C4 140C 01248 BSF EECON1, RD ;EEPROM Read 01249 bank2 02C5 1283 M bcf STATUS,RP0 02C6 1703 M bsf STATUS,RP1 02C7 080C 01250 MOVF EEDATA, W ;W = EEDATA 01251 bank0 02C8 1283 M bcf STATUS,RP0 02C9 1303 M bcf STATUS,RP1 02CA 0008 01252 return 01253 02CB 01254 EEWRITE ; 16F876 01255 ;W contient l'adresse 01256 bank2 02CB 1283 M bcf STATUS,RP0 02CC 1703 M bsf STATUS,RP1 02CD 008D 01257 MOVWF EEADR ; Data Memory Address to write Warning[202]: Argument out of range. Least significant bits used. 02CE 3010 01258 MOVLW DATA_EE_DATA ; 02CF 008C 01259 MOVWF EEDATA ; Data Memory Value to write 01260 bank3 02D0 1683 M bsf STATUS,RP0 02D1 1703 M bsf STATUS,RP1 02D2 138B 01261 BCF INTCON, GIE ; Disable Interrupts 02D3 138C 01262 BCF EECON1, EEPGD ; Point to DATA memory 02D4 150C 01263 BSF EECON1, WREN ; Enable writes 02D5 3055 01264 MOVLW 0x55 ;Required 02D6 008D 01265 MOVWF EECON2 ; Write 55h Sequence 02D7 30AA 01266 MOVLW 0xAA ; 02D8 008D 01267 MOVWF EECON2 ; Write AAh 02D9 148C 01268 BSF EECON1, WR ; Set WR bit to begin write 02DA 178B 01269 BSF INTCON, GIE ; Enable Interrupts 02DB 0063 01270 SLEEP ; Wait for interrupt to signal write complete 02DC 110C 01271 BCF EECON1, WREN ; Disable writes 01272 bank0 02DD 1283 M bcf STATUS,RP0 02DE 1303 M bcf STATUS,RP1 02DF 0008 01273 return 01274 ;--------------------- 01275 ; conv mot 16bits --> en XX.XXøC 25.42øC 02E0 01276 bcd_temp 01277 bank1 02E0 1683 M bsf STATUS,RP0 02E1 1303 M bcf STATUS,RP1 02E2 0830 01278 movf val1,W 02E3 00AE 01279 movwf valx 02E4 0831 01280 movf val1+1,W 02E5 00AF 01281 movwf valx+1 02E6 0E2E 01282 swapf valx,W 02E7 38F0 01283 iorlw 0xf0 02E8 00A5 01284 movwf mille 02E9 07A5 01285 addwf mille,F 02EA 3EE2 01286 addlw 0xE2 ; 226 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02EB 00A6 01287 movwf cent 02EC 3E32 01288 addlw 0x32 ;50 02ED 00A8 01289 movwf un 02EE 082E 01290 movf valx,W 02EF 390F 01291 andlw 0x0F 02F0 07A6 01292 addwf cent,F 02F1 07A6 01293 addwf cent,F 02F2 07A8 01294 addwf un,F 02F3 3EE9 01295 addlw 0xE9 ;233 02F4 00A7 01296 movwf dix 02F5 07A7 01297 addwf dix,F 02F6 07A7 01298 addwf dix,F 02F7 0E2F 01299 swapf valx+1,W ;<- modif 20mars03 was val1 02F8 390F 01300 andlw 0x0F 02F9 07A7 01301 addwf dix,F 02FA 07A8 01302 addwf un,F 02FB 0DA7 01303 rlf dix,F 02FC 0DA8 01304 rlf un,F 02FD 09A8 01305 comf un,F 02FE 0DA8 01306 rlf un,F 02FF 082F 01307 movf valx+1,W 0300 390F 01308 andlw 0x0F 0301 07A8 01309 addwf un,F 0302 0DA5 01310 rlf mille,F 0303 3007 01311 movlw 0x07 0304 00A4 01312 movwf dixmil 0305 300A 01313 movlw 0x0A 0306 01314 Lb1: 0306 07A8 01315 addwf un,F 0307 03A7 01316 decf dix,F 0308 1C03 01317 btfss STATUS,C 0309 2B06 01318 goto Lb1 030A 01319 Lb2: 030A 07A7 01320 addwf dix,F 030B 03A6 01321 decf cent,F 030C 1C03 01322 btfss STATUS,C 030D 2B0A 01323 goto Lb2 030E 01324 Lb3: 030E 07A6 01325 addwf cent,F 030F 03A5 01326 decf mille,F 0310 1C03 01327 btfss STATUS,C 0311 2B0E 01328 goto Lb3 0312 01329 Lb4: 0312 07A5 01330 addwf mille,F 0313 03A4 01331 decf dixmil,F 0314 1C03 01332 btfss STATUS,C 0315 2B12 01333 goto Lb4 01334 01335 bank0 0316 1283 M bcf STATUS,RP0 0317 1303 M bcf STATUS,RP1 0318 1AE3 01336 btfsc Drapeaux,5 ; si drapeau.5=1 affichage sur 5 digits 0319 2B3D 01337 goto Bcd_5digits 01338 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01339 ; bank1 01340 ; movf dixmil,w 01341 ; addlw '0' 01342 ; bank0 01343 ; movwf Buffer_Texte+.26 01344 bank1 031A 1683 M bsf STATUS,RP0 031B 1303 M bcf STATUS,RP1 031C 0825 01345 movf mille,w 031D 1D03 01346 btfss STATUS,Z ; si digit=0 remplace par Blanc 031E 2B21 01347 goto Lb5 031F 3020 01348 movlw ' ' 0320 2B22 01349 goto Lb6 0321 01350 Lb5 0321 3E30 01351 addlw '0' 0322 01352 Lb6 01353 bank0 0322 1283 M bcf STATUS,RP0 0323 1303 M bcf STATUS,RP1 01354 IFDEF BUID_WITH_SHIFT 0324 00BA 01355 movwf Buffer_Texte+.26 01356 ELSE 01357 movwf Buffer_Texte+.11 01358 ENDIF 01359 bank1 0325 1683 M bsf STATUS,RP0 0326 1303 M bcf STATUS,RP1 0327 0826 01360 movf cent,w 01361 ; btfss STATUS,Z 01362 ; goto Lb7 01363 ; movlw ' ' 01364 ; goto Lb8 0328 3E30 01365 Lb7 addlw '0' 01366 Lb8 bank0 0329 1283 M bcf STATUS,RP0 032A 1303 M bcf STATUS,RP1 01367 IFDEF BUID_WITH_SHIFT 032B 00BB 01368 movwf Buffer_Texte+.27 01369 ELSE 01370 movwf Buffer_Texte+.12 01371 ENDIF 01372 032C 302E 01373 movlw '.' 01374 IFDEF BUID_WITH_SHIFT 032D 00BC 01375 movwf Buffer_Texte+.28 01376 ELSE 01377 movwf Buffer_Texte+.13 01378 ENDIF 01379 01380 bank1 032E 1683 M bsf STATUS,RP0 032F 1303 M bcf STATUS,RP1 0330 0827 01381 movf dix,w 0331 3E30 01382 addlw '0' MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01383 bank0 0332 1283 M bcf STATUS,RP0 0333 1303 M bcf STATUS,RP1 01384 IFDEF BUID_WITH_SHIFT 0334 00BD 01385 movwf Buffer_Texte+.29 01386 ELSE 01387 movwf Buffer_Texte+.14 01388 ENDIF 01389 01390 bank1 0335 1683 M bsf STATUS,RP0 0336 1303 M bcf STATUS,RP1 0337 0828 01391 movf un,w 0338 3E30 01392 addlw '0' 01393 bank0 0339 1283 M bcf STATUS,RP0 033A 1303 M bcf STATUS,RP1 01394 IFDEF BUID_WITH_SHIFT 033B 00BE 01395 movwf Buffer_Texte+.30 01396 ELSE 01397 movwf Buffer_Texte+.15 01398 ENDIF 033C 2B58 01399 goto restitueVal1 01400 033D 01401 Bcd_5digits 01402 bank1 033D 1683 M bsf STATUS,RP0 033E 1303 M bcf STATUS,RP1 033F 0824 01403 movf dixmil,w 0340 3E30 01404 addlw '0' 0341 2298 01405 call Rs_Putchar 01406 bank1 0342 1683 M bsf STATUS,RP0 0343 1303 M bcf STATUS,RP1 0344 0825 01407 movf mille,w 0345 3E30 01408 addlw '0' 0346 2298 01409 call Rs_Putchar 01410 bank1 0347 1683 M bsf STATUS,RP0 0348 1303 M bcf STATUS,RP1 0349 0826 01411 movf cent,w 034A 3E30 01412 addlw '0' 034B 2298 01413 call Rs_Putchar 01414 bank1 034C 1683 M bsf STATUS,RP0 034D 1303 M bcf STATUS,RP1 034E 0827 01415 movf dix,w 034F 3E30 01416 addlw '0' 0350 2298 01417 call Rs_Putchar 01418 bank1 0351 1683 M bsf STATUS,RP0 0352 1303 M bcf STATUS,RP1 0353 0828 01419 movf un,w 0354 3E30 01420 addlw '0' MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0355 2298 01421 call Rs_Putchar 0356 3020 01422 movlw ' ' 0357 2298 01423 call Rs_Putchar 0358 01424 restitueVal1 01425 bank1 0358 1683 M bsf STATUS,RP0 0359 1303 M bcf STATUS,RP1 035A 082E 01426 movf valx,w 035B 00B0 01427 movwf val1 035C 082F 01428 movf valx+1,w 035D 00B1 01429 movwf val1+1 01430 bank0 035E 1283 M bcf STATUS,RP0 035F 1303 M bcf STATUS,RP1 0360 0008 01431 return 01432 ;----------------------------------- 0361 01433 bcd3 01434 bank1 0361 1683 M bsf STATUS,RP0 0362 1303 M bcf STATUS,RP1 0363 00A2 01435 movwf btmp ; affichage octet --> decimal 3 digits ( de 0 a 255 ) 0364 3030 01436 movlw '0' 0365 00A6 01437 movwf cent 0366 00A7 01438 movwf dix 0367 01439 bcd31 0367 3064 01440 movlw .100 0368 0222 01441 subwf btmp,w 0369 1C03 2B6E 01442 bnc bcd32 036B 00A2 01443 movwf btmp 036C 0AA6 01444 incf cent,f 036D 2B67 01445 goto bcd31 036E 01446 bcd32 036E 300A 01447 movlw .10 036F 0222 01448 subwf btmp,w 0370 1C03 2B75 01449 bnc bcd33 0372 00A2 01450 movwf btmp 0373 0AA7 01451 incf dix,f 0374 2B6E 01452 goto bcd32 0375 01453 bcd33 0375 3030 01454 movlw '0' 0376 0722 01455 addwf btmp,w 0377 00A8 01456 movwf un 0378 0826 01457 movf cent,w 0379 2298 01458 call Rs_Putchar 01459 bank1 037A 1683 M bsf STATUS,RP0 037B 1303 M bcf STATUS,RP1 037C 0827 01460 movf dix,w 037D 2298 01461 call Rs_Putchar 01462 bank1 037E 1683 M bsf STATUS,RP0 037F 1303 M bcf STATUS,RP1 0380 0828 01463 movf un,w 0381 2298 01464 call Rs_Putchar MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0382 0008 01465 return 01466 ;-------------------------- 01467 ; MAJ de l'horloge 01468 ;-------------------------- 0383 01469 MAJ_DS1307 0383 145A 01470 bsf BitsTaches,0 0384 22B0 01471 call Rs_CrLf 0385 30D3 01472 movlw EE3-EE0 0386 00D2 01473 MOVWF _Cpt1 0387 0852 01474 Actu1 movf _Cpt1,w 0388 22BE 01475 CALL Read_EE 0389 0AD2 01476 incf _Cpt1,f 038A 39FF 01477 ANDLW 0x0FF 038B 1903 01478 BTFSC STATUS,Z 038C 2B8F 01479 GOTO Actu2 038D 2298 01480 call Rs_Putchar 038E 2B87 01481 goto Actu1 01482 038F 12E3 01483 Actu2 bcf Drapeaux,5 0390 300D 01484 movlw .13 ; 13 a 0 AAMMJJWWHHMMSS 0391 239F 01485 call Saisie_Caracteres ; W contient N-1 caracters a saisir 01486 ;Abort si caractere ESC=27 -> W=0 0392 301B 01487 movlw .27 ; ESC=abort 0393 0651 01488 xorwf _RsByte,W 0394 1903 01489 btfsc STATUS,Z 0395 2B9D 01490 goto Abort_MAJ 01491 ; 14 car saisis 7 valeurs rangees 0396 250E 01492 call Init_RTC 0397 2533 01493 call Lecture_DS1307 0398 01D1 01494 clrf _RsByte 0399 22B0 01495 call Rs_CrLf 039A 23F7 01496 call Affiche_Time 039B 22B0 01497 call Rs_CrLf 039C 0008 01498 return 039D 01499 Abort_MAJ 039D 01DA 01500 clrf BitsTaches 039E 0008 01501 return 01502 01503 ;----------------------------------------------- 039F 01504 Saisie_Caracteres: 01505 ; 2 caracteres par octet => BCD format 00 a 99 01506 ; preciser la longueur du buffer a remplir dans W <= N-1 caracteres 01507 ; Buffer_MAJ = buffer de stockage en page 0 039F 00DE 01508 movwf _N1 ; Index de rangement 2 car -> 1 emplacement 03A0 128B 01509 bcf INTCON,T0IE ; interdit interrupt timer0 03A1 01510 Actualise 03A1 178B 01511 bsf INTCON,GIE 03A2 01D1 01512 clrf _RsByte 03A3 160B 01513 bsf INTCON,INTE ;Autorise interrupt RB0 01514 ;attente saisi caractere au clavier 03A4 1F63 01515 Actu3 btfss ELLIGIBLE 03A5 2BA4 01516 goto Actu3 03A6 1363 01517 bcf ELLIGIBLE 03A7 138B 01518 bcf INTCON,GIE MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03A8 120B 01519 bcf INTCON,INTE ;interdit interrupt RB0 03A9 0851 01520 movf _RsByte,W ;echo 03AA 2298 01521 call Rs_Putchar 03AB 301B 01522 movlw .27 ;esc (abandon) 03AC 0651 01523 xorwf _RsByte,w 03AD 1D03 01524 btfss STATUS,Z 03AE 2BB0 01525 goto Test_Back 03AF 0008 01526 return 03B0 3008 01527 Test_Back movlw .8 ;back space (<- correction) 03B1 0651 01528 xorwf _RsByte,w 03B2 1D03 01529 btfss STATUS,Z 03B3 2BBA 01530 goto Test_Tab 03B4 3040 01531 movlw Buffer_MAJ 03B5 025E 01532 subwf _N1,w 03B6 1803 01533 btfsc STATUS,C ; negatif ? 03B7 2BA1 01534 goto Actualise 03B8 0ADE 01535 incf _N1,f ;incremente indice 03B9 2BA1 01536 goto Actualise 03BA 01537 Test_Tab 03BA 3009 01538 movlw .9 ;tabulation (-> correction) 03BB 0651 01539 xorwf _RsByte,w 03BC 1D03 01540 btfss STATUS,Z 03BD 2BC3 01541 goto Test_Num 03BE 035E 01542 decf _N1,w 03BF 1803 01543 btfsc STATUS,C ; negatif ? 03C0 2BC3 01544 goto Test_Num 03C1 03DE 01545 decf _N1,f ;decremente indice 03C2 2BA1 01546 goto Actualise 03C3 01547 Test_Num 03C3 3030 01548 movlw '0' 03C4 0251 01549 subwf _RsByte,w 03C5 1803 01550 btfsc STATUS,C 03C6 2BC8 01551 goto SUP_0 03C7 2BA1 01552 goto Actualise 03C8 3039 01553 SUP_0 movlw '9' 03C9 0251 01554 subwf _RsByte,w 03CA 1C03 01555 btfsS STATUS,C 03CB 2BCF 01556 goto LESS_EQ_9 ; less <9 03CC 1903 01557 btfsC STATUS,Z 03CD 2BCF 01558 goto LESS_EQ_9 ;or egal =9 03CE 2BA1 01559 goto Actualise 03CF 01560 LESS_EQ_9 03CF 185E 01561 btfsc _N1,0 ;test bit 0 du compteur 03D0 2BD2 01562 goto HB 03D1 2BE3 01563 goto LB 03D2 3030 01564 HB MOVLW .48 03D3 0251 01565 subWF _RsByte,w 03D4 00D4 01566 movwf _Temp2 ;=x1 03D5 1003 01567 bcf STATUS,C 03D6 0DD4 01568 rlf _Temp2,f ;x2 03D7 0DD4 01569 rlf _Temp2,f ;x4 03D8 1AE3 01570 btfsc Drapeaux,5 ; si drapeau:5=1 *10 , sinon *16 03D9 2BDE 01571 goto HB1 03DA 1003 01572 bcf STATUS,C ; <- rajout 31/01/07 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03DB 0DD4 01573 rlf _Temp2,f ;x2 03DC 0DD4 01574 rlf _Temp2,f ;x4 03DD 2BE1 01575 goto HB2 03DE 0754 01576 HB1 addwf _Temp2,w ;x5 03DF 00D4 01577 movwf _Temp2 03E0 0DD4 01578 rlf _Temp2,f ;x10 03E1 03DE 01579 HB2 decf _N1,f 03E2 2BA1 01580 goto Actualise 01581 03E3 3030 01582 LB MOVLW .48 03E4 0251 01583 subWF _RsByte,w 03E5 390F 01584 AndLW 0x0F 01585 ; MSB + LSB 03E6 0754 01586 addwf _Temp2,W 03E7 00D1 01587 movwf _RsByte 01588 03E8 01589 Rangement ; dans buffer specifique Horodatage 03E8 1003 01590 bcf STATUS,C 03E9 0C5E 01591 rrf _N1,W ; Index/2= deplacement en octet 03EA 3E40 01592 ADDLW Buffer_MAJ ; offset table 03EB 0084 01593 movwf FSR 03EC 0851 01594 movf _RsByte,w 03ED 0080 01595 movwf INDF ; sauvegarde W -> @FSR() 03EE 085E 01596 movf _N1,w 03EF 1903 01597 btfsc STATUS,Z 03F0 2BF4 01598 goto OK_Saisie 03F1 03DE 01599 decf _N1,f 03F2 1D03 01600 btfss STATUS,Z 03F3 2BA1 01601 goto Actualise 03F4 01602 OK_Saisie 03F4 138B 01603 bcf INTCON,GIE 03F5 0851 01604 movf _RsByte,w 03F6 0008 01605 return 01606 ;------ 03F7 01607 Affiche_Time 03F7 0E44 01608 SWAPF Jour,W 03F8 390F 01609 ANDLW 0x0F 03F9 1D03 01610 btfss STATUS,Z ;@ 5/2/07 03FA 2BFD 01611 goto Aff_T1 ; remplace 0 par espace en tete de message 03FB 3020 01612 movlw ' ' 03FC 2BFE 01613 goto Aff_T2 03FD 01614 Aff_T1 03FD 3E30 01615 ADDLW 30H 03FE 01616 Aff_T2 03FE 2298 01617 CALL Rs_Putchar 03FF 0844 01618 MOVF Jour,W 0400 390F 01619 ANDLW 0FH 0401 3E30 01620 ADDLW 30H 0402 2298 01621 CALL Rs_Putchar 0403 302F 01622 MOVLW "/" 0404 2298 01623 CALL Rs_Putchar 0405 0E45 01624 SWAPF Mois,W 0406 390F 01625 ANDLW 0x0F 0407 3E30 01626 ADDLW 30H MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0408 2298 01627 CALL Rs_Putchar 0409 0845 01628 MOVF Mois,W 040A 390F 01629 ANDLW 0FH 040B 3E30 01630 ADDLW 30H 040C 2298 01631 CALL Rs_Putchar 040D 302F 01632 MOVLW "/" 040E 2298 01633 CALL Rs_Putchar 040F 0E46 01634 SWAPF Annee,W 0410 390F 01635 ANDLW 0x0F 0411 3E30 01636 ADDLW 30H 0412 2298 01637 CALL Rs_Putchar 0413 0846 01638 MOVF Annee,W 0414 390F 01639 ANDLW 0FH 0415 3E30 01640 ADDLW 30H 0416 2298 01641 CALL Rs_Putchar 0417 3020 01642 MOVLW " " 0418 2298 01643 CALL Rs_Putchar 0419 0E42 01644 SWAPF HEURE,W 041A 390F 01645 ANDLW 0x0F 041B 1D03 01646 btfss STATUS,Z ;@ 5/2/07 041C 2C1F 01647 goto Aff_T3 041D 3020 01648 movlw ' ' 041E 2C20 01649 goto Aff_T4 041F 01650 Aff_T3 041F 3E30 01651 ADDLW 30H 0420 01652 Aff_T4 0420 2298 01653 CALL Rs_Putchar 0421 0842 01654 MOVF HEURE,W 0422 390F 01655 ANDLW 0x0F 0423 3E30 01656 ADDLW 30H 0424 2298 01657 CALL Rs_Putchar 0425 3048 01658 MOVLW "H" 0426 2298 01659 CALL Rs_Putchar 0427 0E41 01660 SWAPF MIN,W 0428 390F 01661 ANDLW 0x0F 0429 3E30 01662 ADDLW 30H 042A 2298 01663 CALL Rs_Putchar 042B 0841 01664 MOVF MIN,W 042C 390F 01665 ANDLW 0FH 042D 3E30 01666 ADDLW 30H 042E 2298 01667 CALL Rs_Putchar 042F 304D 01668 MOVLW "M" 0430 2298 01669 CALL Rs_Putchar 01670 0431 0E40 01671 SWAPF SEC,W 0432 390F 01672 ANDLW 0x0F 0433 3E30 01673 ADDLW 30H 0434 2298 01674 CALL Rs_Putchar 0435 0840 01675 MOVF SEC,W 0436 390F 01676 ANDLW 0FH 0437 3E30 01677 ADDLW 30H 0438 2298 01678 CALL Rs_Putchar 0439 3053 01679 MOVLW "S" 043A 2298 01680 CALL Rs_Putchar MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 043B 0008 01681 return 01682 01683 ;-------------------------------------- 01684 ; The following routines are low level I2C routines applicable to most 01685 ; interfaces with I2C devices. 01686 ;------------------------------------------------------ 043C 01687 I2C_DELAY 043C 2C3D 01688 goto $+1 043D 2C3E 01689 goto $+1 043E 2C3F 01690 goto $+1 043F 2C40 01691 goto $+1 0440 2C41 01692 goto $+1 0441 2C42 01693 goto $+1 0442 2C43 01694 goto $+1 0443 2C44 01695 goto $+1 0444 2C45 01696 goto $+1 0445 2C46 01697 goto $+1 0446 2C47 01698 goto $+1 0447 2C48 01699 goto $+1 0448 2C49 01700 goto $+1 0449 2C4A 01701 goto $+1 044A 2C4B 01702 goto $+1 044B 2C4C 01703 goto $+1 044C 2C4D 01704 goto $+1 044D 2C4E 01705 goto $+1 044E 2C4F 01706 goto $+1 044F 2C50 01707 goto $+1 0450 2C51 01708 goto $+1 0451 2C52 01709 goto $+1 0452 2C53 01710 goto $+1 0453 2C54 01711 goto $+1 0454 2C55 01712 goto $+1 0455 2C56 01713 goto $+1 0456 2C57 01714 goto $+1 0457 2C58 01715 goto $+1 0458 0008 01716 return 01717 ;--------------- 01718 0459 01719 Renseigne_Time 01720 IFDEF BUID_WITH_SHIFT 0459 0E44 01721 SWAPF Jour,W 045A 390F 01722 ANDLW 0x0F 045B 1D03 01723 btfss STATUS,Z ;@ 5/2/07 045C 2C5F 01724 goto Rt_1 045D 3020 01725 movlw ' ' 045E 2C60 01726 goto Rt_2 045F 01727 Rt_1 045F 3E30 01728 ADDLW 30H 0460 01729 Rt_2 0460 00A1 01730 movwf Buffer_Texte+1 0461 0844 01731 MOVF Jour,W 0462 390F 01732 ANDLW 0FH 0463 3E30 01733 ADDLW 30H 0464 00A2 01734 movwf Buffer_Texte+2 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01735 0465 0E45 01736 SWAPF Mois,W 0466 390F 01737 ANDLW 0x0F 0467 3E30 01738 ADDLW 30H 0468 00A4 01739 movwf Buffer_Texte+4 0469 0845 01740 MOVF Mois,W 046A 390F 01741 ANDLW 0FH 046B 3E30 01742 ADDLW 30H 046C 00A5 01743 movwf Buffer_Texte+5 01744 046D 0E46 01745 SWAPF Annee,W 046E 390F 01746 ANDLW 0x0F 046F 3E30 01747 ADDLW 30H 0470 00A7 01748 movwf Buffer_Texte+7 0471 0846 01749 MOVF Annee,W 0472 390F 01750 ANDLW 0FH 0473 3E30 01751 ADDLW 30H 0474 00A8 01752 movwf Buffer_Texte+8 01753 01754 ENDIF 01755 0475 0E42 01756 SWAPF HEURE,W 0476 390F 01757 ANDLW 0x0F 0477 1D03 01758 btfss STATUS,Z ;@ 5/2/07 0478 2C7B 01759 goto Rt_3 0479 3020 01760 movlw ' ' 047A 2C7C 01761 goto Rt_4 047B 01762 Rt_3 047B 3E30 01763 ADDLW 30H 047C 01764 Rt_4 01765 IFDEF BUID_WITH_SHIFT 047C 00AA 01766 movwf Buffer_Texte+.10 01767 ELSE 01768 movwf Buffer_Texte+.0 01769 ENDIF 047D 0842 01770 MOVF HEURE,W 047E 390F 01771 ANDLW 0x0F 047F 3E30 01772 ADDLW 30H 01773 IFDEF BUID_WITH_SHIFT 0480 00AB 01774 movwf Buffer_Texte+.11 01775 ELSE 01776 movwf Buffer_Texte+.1 01777 ENDIF 01778 0481 0E41 01779 SWAPF MIN,W 0482 390F 01780 ANDLW 0x0F 0483 3E30 01781 ADDLW 30H 01782 IFDEF BUID_WITH_SHIFT 0484 00AD 01783 movwf Buffer_Texte+.13 01784 ELSE 01785 movwf Buffer_Texte+.3 01786 ENDIF 0485 0841 01787 MOVF MIN,W 0486 390F 01788 ANDLW 0FH MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0487 3E30 01789 ADDLW 30H 01790 IFDEF BUID_WITH_SHIFT 0488 00AE 01791 movwf Buffer_Texte+.14 01792 ELSE 01793 movwf Buffer_Texte+.4 01794 ENDIF 0489 0E40 01795 SWAPF SEC,W 048A 390F 01796 ANDLW 0x0F 048B 3E30 01797 ADDLW 30H 01798 IFDEF BUID_WITH_SHIFT 048C 00B0 01799 movwf Buffer_Texte+.16 01800 ELSE 01801 movwf Buffer_Texte+.6 01802 ENDIF 048D 0840 01803 MOVF SEC,W 048E 390F 01804 ANDLW 0FH 048F 3E30 01805 ADDLW 30H 01806 IFDEF BUID_WITH_SHIFT 0490 00B1 01807 movwf Buffer_Texte+.17 01808 ELSE 01809 movwf Buffer_Texte+.7 01810 ENDIF 0491 0008 01811 return 01812 ;------------------------ 01813 0492 01814 START: 01815 0492 1683 01816 bsf STATUS,RP0 0493 1386 01817 bcf I2C_SDA 0494 1283 01818 bcf STATUS,RP0 0495 1786 01819 bsf I2C_SDA 0496 1706 01820 bsf I2C_SCL ;I2C start: change of SDA 0497 243C 01821 call I2C_DELAY ;from 1 to 0 while SCL = 1 0498 1386 01822 bcf I2C_SDA 0499 243C 01823 call I2C_DELAY 049A 1306 01824 bcf I2C_SCL 049B 0008 01825 return 01826 01827 ;--------------------- 049C 01828 STOP: 01829 049C 1683 01830 bsf STATUS,RP0 049D 1386 01831 bcf I2C_SDA 049E 1283 01832 bcf STATUS,RP0 01833 049F 1386 01834 bcf I2C_SDA 04A0 1706 01835 bsf I2C_SCL ;I2C stop: change of SDA 04A1 243C 01836 call I2C_DELAY ;from 0 to 1 while SCL = 1 04A2 1786 01837 bsf I2C_SDA 04A3 0008 01838 return 01839 01840 ;--------------------- 04A4 01841 M_ACK: 01842 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04A4 1683 01843 bsf STATUS,RP0 04A5 1386 01844 bcf I2C_SDA 04A6 1283 01845 bcf STATUS,RP0 01846 04A7 1386 01847 bcf I2C_SDA ;I2C master acknowledge: 04A8 243C 01848 call I2C_DELAY ;SDA = 0 04A9 1706 01849 bsf I2C_SCL 04AA 243C 01850 call I2C_DELAY 04AB 1306 01851 bcf I2C_SCL 04AC 0008 01852 return 01853 01854 ;---------- 04AD 01855 NACK: 04AD 1683 01856 bsf STATUS,RP0 04AE 1386 01857 bcf I2C_SDA 04AF 1283 01858 bcf STATUS,RP0 04B0 1786 01859 bsf I2C_SDA ;I2C master non-acknowledge: 04B1 243C 01860 call I2C_DELAY ;SDA = 1 04B2 1706 01861 bsf I2C_SCL 04B3 243C 01862 call I2C_DELAY 04B4 1306 01863 bcf I2C_SCL 04B5 0008 01864 return 01865 01866 ;----------- 04B6 01867 ACK: 04B6 1683 01868 bsf STATUS,RP0 04B7 1786 01869 bsf I2C_SDA 04B8 1283 01870 bcf STATUS,RP0 04B9 243C 01871 call I2C_DELAY ;I2C device acknowledge: 04BA 1706 01872 bsf I2C_SCL ;SDA set 1 by master 04BB 243C 01873 call I2C_DELAY ;SDA = 1 if device doesn't ACK 04BC 1503 01874 bsf STATUS,Z ;SDA = 0 if devcie acknowledges 04BD 1B86 01875 btfsc I2C_SDA 04BE 1103 01876 bcf STATUS,Z ;STATUS,Z=1 if device acknowledges 04BF 1306 01877 bcf I2C_SCL ;STATUS,Z=0 if device doesn't ACK 04C0 0008 01878 return 01879 ;------------ 04C1 01880 CLOCK_PULSE: ; SCL momentarily to logic one 04C1 24D8 01881 CALL HIGH_SCL 04C2 243C 01882 call I2C_DELAY 04C3 24E1 01883 CALL LOW_SCL 04C4 243C 01884 call I2C_DELAY 04C5 0008 01885 RETURN 01886 ;------------ 04C6 01887 HIGH_SDA: ; high impedance by making SDA an input 04C6 1786 01888 BSF I2C_SDA 01889 bank1 04C7 1683 M bsf STATUS,RP0 04C8 1303 M bcf STATUS,RP1 04C9 0000 01890 nop 04CA 1786 01891 BSF I2C_SDA ; make SDA pin an input 01892 bank0 04CB 1283 M bcf STATUS,RP0 04CC 1303 M bcf STATUS,RP1 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04CD 243C 01893 call I2C_DELAY 04CE 0008 01894 RETURN 01895 ;------------ 04CF 01896 LOW_SDA: 01897 bank1 04CF 1683 M bsf STATUS,RP0 04D0 1303 M bcf STATUS,RP1 04D1 1386 01898 BCF I2C_SDA ; make SDA pin an output 01899 bank0 04D2 1283 M bcf STATUS,RP0 04D3 1303 M bcf STATUS,RP1 04D4 0000 01900 nop 04D5 1386 01901 BCF I2C_SDA 04D6 243C 01902 call I2C_DELAY 04D7 0008 01903 RETURN 01904 ;------------ 04D8 01905 HIGH_SCL: 04D8 1706 01906 BSF I2C_SCL 01907 bank1 04D9 1683 M bsf STATUS,RP0 04DA 1303 M bcf STATUS,RP1 04DB 0000 01908 nop 04DC 1706 01909 BSF I2C_SCL ; make SCL pin an input 01910 bank0 04DD 1283 M bcf STATUS,RP0 04DE 1303 M bcf STATUS,RP1 04DF 243C 01911 call I2C_DELAY 04E0 0008 01912 RETURN 01913 ;------------ 04E1 01914 LOW_SCL: 01915 bank1 04E1 1683 M bsf STATUS,RP0 04E2 1303 M bcf STATUS,RP1 04E3 1306 01916 BCF I2C_SCL ; make SCL pin an output 01917 bank0 04E4 1283 M bcf STATUS,RP0 04E5 1303 M bcf STATUS,RP1 04E6 1306 01918 BCF I2C_SCL 04E7 243C 01919 call I2C_DELAY 04E8 0008 01920 RETURN 01921 ;--------------------- 01922 ; The following routines are low level I2C routines applicable to most 01923 ; interfaces with I2C devices. 04E9 01924 IN_BYTE ; read byte on i2c bus 04E9 01E0 01925 CLRF I_BYTE 04EA 3008 01926 MOVLW .8 04EB 00DD 01927 MOVWF _N0 ; set index to 8 04EC 24C6 01928 CALL HIGH_SDA ; be sure SDA is configured as input 04ED 01929 IN_BIT 04ED 24D8 01930 CALL HIGH_SCL ; clock high 04EE 1F86 01931 BTFSS I2C_SDA ; test SDA bit 04EF 2CF1 01932 GOTO IN_ZERO 04F0 2CF4 01933 GOTO IN_ONE 04F1 01934 IN_ZERO MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04F1 1003 01935 BCF STATUS, C ; clear any carry 04F2 0DE0 01936 RLF I_BYTE, F ; i_byte = i_byte << 1 | 0 04F3 2CF8 01937 GOTO CONT_IN 04F4 01938 IN_ONE 04F4 1003 01939 BCF STATUS, C ; clear any carry 04F5 0DE0 01940 RLF I_BYTE, F 04F6 0AE0 01941 INCF I_BYTE, F ; i_byte = (i_byte << 1) | 1 04F7 2CF8 01942 GOTO CONT_IN 04F8 01943 CONT_IN 04F8 24E1 01944 CALL LOW_SCL ; bring clock low 04F9 0BDD 01945 DECFSZ _N0, F ; decrement index 04FA 2CED 01946 GOTO IN_BIT 04FB 0008 01947 RETURN 01948 ;------------- 04FC 01949 OUT_BYTE: ; send o_byte on I2C bus 04FC 00DF 01950 MOVWF O_BYTE 04FD 3008 01951 MOVLW .8 04FE 00DD 01952 MOVWF _N0 04FF 01953 OUT_BIT: 04FF 1003 01954 BCF STATUS,C ; clear carry 0500 0DDF 01955 RLF O_BYTE, F ; left shift, most sig bit is now in carry 0501 1C03 01956 BTFSS STATUS, C ; if one, send a one 0502 2D04 01957 GOTO OUT_ZERO 0503 2D08 01958 GOTO OUT_ONE 0504 01959 OUT_ZERO: 0504 24CF 01960 CALL LOW_SDA ; SDA at zero 0505 24C1 01961 CALL CLOCK_PULSE 0506 24C6 01962 CALL HIGH_SDA 0507 2D0B 01963 GOTO OUT_CONT 0508 01964 OUT_ONE: 0508 24C6 01965 CALL HIGH_SDA ; SDA at logic one 0509 24C1 01966 CALL CLOCK_PULSE 050A 2D0B 01967 GOTO OUT_CONT 050B 01968 OUT_CONT: 050B 0BDD 01969 DECFSZ _N0, F ; decrement index 050C 2CFF 01970 GOTO OUT_BIT 050D 0008 01971 RETURN 01972 ;--------------- 050E 01973 Init_RTC 050E 249C 01974 CALL STOP 050F 221D 01975 call delay_25mS 0510 2492 01976 CALL START 0511 30D0 01977 MOVLW 0xD0 ; B'11010000'=0xD0 = adresse device 0512 24FC 01978 CALL OUT_BYTE 0513 24B6 01979 CALL ACK 0514 01D7 01980 clrf ADDR 0515 0857 01981 MOVF ADDR, W ; addresse registre 0516 24FC 01982 CALL OUT_BYTE 0517 24B6 01983 CALL ACK 0518 0840 01984 MOVF SEC,W 0519 24FC 01985 CALL OUT_BYTE 051A 24B6 01986 CALL ACK 01987 ; a ce momment la led connectee sur pin7 doit osciller a 1HZ ! 051B 0841 01988 MOVf MIN,W MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 051C 24FC 01989 CALL OUT_BYTE 051D 24B6 01990 CALL ACK 051E 0842 01991 Movf HEURE,w 051F 24FC 01992 CALL OUT_BYTE 0520 24B6 01993 CALL ACK 0521 0843 01994 Movf JourSem,w ;Jour de la semaine=07 0522 24FC 01995 CALL OUT_BYTE 0523 24B6 01996 CALL ACK 0524 0844 01997 Movf Jour,w ;Jour du mois=02 0525 24FC 01998 CALL OUT_BYTE 0526 24B6 01999 CALL ACK 0527 0845 02000 MOVF Mois,W ;Mois= 12 0528 24FC 02001 CALL OUT_BYTE 0529 24B6 02002 CALL ACK 052A 0846 02003 MOVF Annee,W ;ANNEE=07 052B 24FC 02004 CALL OUT_BYTE 052C 24B6 02005 CALL ACK 052D 3090 02006 MOVLW B'10010000' ;Registre de controle SQWE=1 RS0=RS1=0 sortie 1Hz 052E 24FC 02007 CALL OUT_BYTE 052F 24AD 02008 CALL NACK 0530 249C 02009 call STOP 0531 2214 02010 call delay_10mS 0532 0008 02011 return 02012 ;----------------------------- 0533 02013 Lecture_DS1307 0533 249C 02014 Call STOP 0534 21D5 02015 call delay_25uS 0535 2492 02016 CALL START 0536 30D0 02017 MOVLW 0xD0 ; B'11010000' 0537 00D8 02018 MOVWF DEV_DS1307 ; @D0H adresse device 0538 24FC 02019 CALL OUT_BYTE 0539 24B6 02020 CALL ACK 053A 01D7 02021 clrf ADDR ; adresse 0 053B 0857 02022 MOVF ADDR, W ; send high byte of address 053C 24FC 02023 CALL OUT_BYTE 053D 24B6 02024 CALL ACK 053E 30D1 02025 MOVLW 0xD1 ; B'11010001' 053F 00D8 02026 MOVWF DEV_DS1307 ;Mode Lecture 0540 2492 02027 CALL START ;genere un start bit 0541 0858 02028 MOVF DEV_DS1307,W 0542 24FC 02029 CALL OUT_BYTE 0543 24AD 02030 CALL NACK 02031 ;-------- 0544 24E9 02032 CALL IN_BYTE 0545 24A4 02033 Call M_ACK 0546 0860 02034 MOVF I_BYTE,W 0547 00C0 02035 MOVWF SEC 0548 24E9 02036 CALL IN_BYTE 0549 24A4 02037 Call M_ACK 054A 0860 02038 MOVF I_BYTE,W 054B 00C1 02039 MOVWF MIN 054C 24E9 02040 CALL IN_BYTE 054D 24A4 02041 Call M_ACK 054E 0860 02042 MOVF I_BYTE,W MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 054F 00C2 02043 MOVWF HEURE 0550 24E9 02044 CALL IN_BYTE 0551 24A4 02045 Call M_ACK 0552 0860 02046 MOVF I_BYTE,W 0553 00C3 02047 MOVWF JourSem 0554 24E9 02048 CALL IN_BYTE 0555 24A4 02049 Call M_ACK 0556 0860 02050 MOVF I_BYTE,W 0557 00C4 02051 MOVWF Jour 0558 24E9 02052 CALL IN_BYTE 0559 24A4 02053 Call M_ACK 055A 0860 02054 MOVF I_BYTE,W 055B 00C5 02055 MOVWF Mois 055C 24E9 02056 CALL IN_BYTE 055D 24A4 02057 Call M_ACK 055E 0860 02058 MOVF I_BYTE,W 055F 00C6 02059 MOVWF Annee 02060 ; CALL IN_BYTE 02061 ; Call M_ACK 02062 ; MOVF I_BYTE,W 02063 ; MOVWF CtrlReg 02064 ; call M_ACK 0560 249C 02065 CALL STOP 0561 0008 02066 return 00000562 02067 fin_de_programme equ $ 02068 02069 02070 02071 ;--------------------------------- 02072 ;table de caractere 6x8 02073 ;--------------------------------- 0B00 02074 org 0xB00 0B00 02075 Char_tbl2 0B00 0782 02076 addwf PCL,f ; ajoute W a PCL pour aller lire au bon endroit 0B01 3400 3400 3400 02077 dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; 20 /32 3400 3400 3400 3400 3400 0B09 3400 3400 3400 02078 dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; ! 21 /33 3400 3400 3400 3400 3400 0B11 3400 3400 3400 02079 dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; " 22 /34 3400 3400 3400 3400 3400 0B19 3400 3400 3400 02080 dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; # 23 /35 3400 3400 3400 3400 3400 0B21 3400 3400 3400 02081 dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; $ 24 /36 3400 3400 3400 3400 3400 0B29 3400 3480 3460 02082 dt 0x00,0x80,0x60,0x10,0x00,0x00,0x01,0x00; % 25 /37 3410 3400 3400 3401 3400 0B31 3480 3480 3480 02083 dt 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00; & 26 /38 3480 3480 3480 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3480 3400 0B39 3400 3400 3400 02084 dt 0x00,0x00,0x00,0x00,0x00,0x07,0x05,0x07; new ø 39 3400 3400 3407 3405 3407 02085 ; dt 0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00; ' 27 /39 0B41 3418 3424 3442 02086 dt 0x18,0x24,0x42,0x81,0x00,0x00,0x00,0x00; ( 28 /40 3481 3400 3400 3400 3400 0B49 3400 3400 3400 02087 dt 0x00,0x00,0x00,0x81,0x42,0x24,0x18,0x00; ) 29 /41 3481 3442 3424 3418 3400 0B51 3421 3412 340C 02088 dt 0x21,0x12,0x0C,0x7F,0x0C,0x12,0x21,0x00; * 2A /42 347F 340C 3412 3421 3400 0B59 3408 3408 3408 02089 dt 0x08,0x08,0x08,0x7E,0x08,0x08,0x08,0x00; + 2B /43 347E 3408 3408 3408 3400 0B61 3400 3400 3400 02090 dt 0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00; , 2C /44 3480 3460 3400 3400 3400 0B69 3400 3410 3410 02091 dt 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00; - 2D /45 3410 3410 3410 3410 3400 02092 ; dt 0x00,0x00,0x00,0xC0,0x30,0x00,0x00,0x00; . 2E /46 0B71 3400 3400 34E0 02093 dt 0x00,0x00,0xE0,0xA0,0xE0,0x00,0x00,0x00; new . 46 34A0 34E0 3400 3400 3400 02094 ; dt 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00; . 2E /46 0B79 34C0 3440 3460 02095 dt 0xC0,0x40,0x60,0x30,0x1C,0x06,0x03,0x00; / 2F /47 3430 341C 3406 3403 3400 0B81 3400 343C 3452 02096 dt 0x00,0x3C,0x52,0x89,0x46,0x3C,0x00,0x00; 0 30 /48 3489 3446 343C 3400 3400 0B89 3400 3408 340E 02097 dt 0x00,0x08,0x0E,0xFF,0x00,0x00,0x00,0x00; 1 31 /49 34FF 3400 3400 3400 3400 0B91 34CC 34C6 34A3 02098 dt 0xCC,0xC6,0xA3,0xA1,0x93,0x96,0x8C,0x00; 2 32 /50 34A1 3493 3496 348C 3400 0B99 3400 3442 3481 02099 dt 0x00,0x42,0x81,0x91,0x91,0x91,0x7E,0x00; 3 33 /51 3491 3491 3491 347E 3400 0BA1 3418 3414 3412 02100 dt 0x18,0x14,0x12,0x11,0xFF,0x10,0x00,0x00; 4 34 /52 3411 34FF 3410 3400 3400 0BA9 344F 3489 3489 02101 dt 0x4F,0x89,0x89,0x89,0xC9,0x78,0x00,0x00; 5 35 /53 3489 34C9 3478 3400 3400 0BB1 347E 3491 3491 02102 dt 0x7E,0x91,0x91,0x91,0x91,0x91,0x72,0x00; 6 36 /54 3491 3491 3491 3472 3400 0BB9 3400 34C1 3461 02103 dt 0x00,0xC1,0x61,0x31,0x19,0x0D,0x07,0x00; 7 37 /55 3431 3419 340D MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3407 3400 0BC1 3476 3489 3489 02104 dt 0x76,0x89,0x89,0x89,0x89,0x89,0x76,0x00; 8 38 /56 3489 3489 3489 3476 3400 0BC9 344E 3491 3491 02105 dt 0x4E,0x91,0x91,0x91,0x91,0x91,0x7E,0x00; 9 39 /57 3491 3491 3491 347E 3400 02106 ; dt 0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x00; : 3A /58 0BD1 3400 3400 3400 02107 dt 0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00; new : 58 3428 3400 3400 3400 3400 02108 ; dt 0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00; : 3A /58 0BD9 3400 3400 3480 02109 dt 0x00,0x00,0x80,0x68,0x00,0x00,0x00,0x00; ; 3B /59 3468 3400 3400 3400 3400 0BE1 3410 3428 3444 02110 dt 0x10,0x28,0x44,0x82,0x00,0x00,0x00,0x00; < 3C /60 3482 3400 3400 3400 3400 02111 ; dt 0x00,0x28,0x28,0x28,0x28,0x28,0x00,0x00; = 3D /61 0BE9 3400 3400 3450 02112 dt 0x00,0x00,0x50,0x50,0x50,0x50,0x00,0x00; new = 61 3450 3450 3450 3400 3400 0BF1 3400 3400 3400 02113 dt 0x00,0x00,0x00,0x82,0x44,0x28,0x10,0x00; > 3E /62 3482 3444 3428 3410 3400 02114 02115 0BF9 02116 Char_tbl2end 02117 02118 0C00 02119 org 0xC00 0C00 02120 Char_tbl3 0C00 0782 02121 addwf PCL,f 0C01 3400 340C 3403 02122 dt 0x00,0x0C,0x03,0x01,0xA1,0x12,0x0C,0x00; ? 3F /63 3401 34A1 3412 340C 3400 0C09 34FF 3481 34BD 02123 dt 0xFF,0x81,0xBD,0xA5,0xA1,0xBF,0x00,0x00; @ 40 /64 34A5 34A1 34BF 3400 3400 0C11 34FF 3411 3411 02124 dt 0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00; A 41 /65 3411 3411 3411 34FF 3400 0C19 34FF 3489 3489 02125 dt 0xFF,0x89,0x89,0x89,0x89,0x8F,0xF8,0x00; B 42 /66 3489 3489 348F 34F8 3400 0C21 347E 3481 3481 02126 dt 0x7E,0x81,0x81,0x81,0x81,0x42,0x00,0x00; C 43 /67 3481 3481 3442 3400 3400 0C29 34FF 3481 3481 02127 dt 0xFF,0x81,0x81,0x81,0x42,0x3C,0x00,0x00; D 44 /68 3481 3442 343C 3400 3400 0C31 34FF 3489 3489 02128 dt 0xFF,0x89,0x89,0x89,0x81,0x80,0x00,0x00; E 45 /69 3489 3481 3480 3400 3400 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C39 34FF 3411 3411 02129 dt 0xFF,0x11,0x11,0x11,0x11,0x01,0x00,0x00; F 46 /70 3411 3411 3401 3400 3400 0C41 34FF 3481 34B1 02130 dt 0xFF,0x81,0xB1,0x91,0x91,0xF0,0x00,0x00; G 47 /71 3491 3491 34F0 3400 3400 0C49 34FF 3418 3418 02131 dt 0xFF,0x18,0x18,0x18,0x18,0xFF,0x00,0x00; H 48 /72 3418 3418 34FF 3400 3400 0C51 3400 3400 34FD 02132 dt 0x00,0x00,0xFD,0xFD,0x00,0x00,0x00,0x00; I 49 /73 34FD 3400 3400 3400 3400 0C59 3440 3480 3480 02133 dt 0x40,0x80,0x80,0x80,0x80,0x7F,0x00,0x00; J 4A /74 3480 3480 347F 3400 3400 0C61 34FF 3408 3408 02134 dt 0xFF,0x08,0x08,0x7C,0xC2,0x81,0x00,0x00; K 4B /75 347C 34C2 3481 3400 3400 0C69 34FF 3480 3480 02135 dt 0xFF,0x80,0x80,0x80,0x80,0x80,0x00,0x00; L 4C /76 3480 3480 3480 3400 3400 0C71 34FF 3402 3404 02136 dt 0xFF,0x02,0x04,0x08,0x04,0x02,0xFF,0x00; M 4D /77 3408 3404 3402 34FF 3400 0C79 34FF 3440 3438 02137 dt 0xFF,0x40,0x38,0x04,0x02,0xFF,0x00,0x00; N 4E /78 3404 3402 34FF 3400 3400 0C81 34FF 3481 3481 02138 dt 0xFF,0x81,0x81,0x81,0x81,0xFF,0x00,0x00; O 4F /79 3481 3481 34FF 3400 3400 0C89 34FF 3409 3409 02139 dt 0xFF,0x09,0x09,0x09,0x09,0x0F,0x00,0x00; P 50 /80 3409 3409 340F 3400 3400 0C91 343F 3421 3421 02140 dt 0x3F,0x21,0x21,0x21,0xE1,0xBF,0x00,0x00; Q 51 /81 3421 34E1 34BF 3400 3400 0C99 34FF 3409 3419 02141 dt 0xFF,0x09,0x19,0x39,0x6F,0xC0,0x80,0x00; R 52 /82 3439 346F 34C0 3480 3400 0CA1 344E 3491 3491 02142 dt 0x4E,0x91,0x91,0x91,0x91,0xE2,0x00,0x00; S 53 /83 3491 3491 34E2 3400 3400 0CA9 3401 3401 3401 02143 dt 0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x00; T 54 /84 34FF 3401 3401 3401 3400 0CB1 347F 3480 3480 02144 dt 0x7F,0x80,0x80,0x80,0x80,0x80,0x7F,0x00; U 55 /85 3480 3480 3480 347F 3400 0CB9 341F 3420 3440 02145 dt 0x1F,0x20,0x40,0x80,0x40,0x20,0x1F,0x00; V 56 /86 3480 3440 3420 341F 3400 0CC1 347F 3480 34C0 02146 dt 0x7F,0x80,0xC0,0x3F,0x40,0x80,0x7F,0x00; W 57 /87 343F 3440 3480 347F 3400 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0CC9 3481 3442 3424 02147 dt 0x81,0x42,0x24,0x18,0x24,0x42,0x81,0x00; X 58 /88 3418 3424 3442 3481 3400 0CD1 3401 3402 3404 02148 dt 0x01,0x02,0x04,0xF8,0x04,0x02,0x01,0x00; Y 59 /89 34F8 3404 3402 3401 3400 02149 0CD9 34C1 34A1 3491 02150 dt 0xC1,0xA1,0x91,0x89,0x85,0x83,0x00,0x00; Z 5A /90 3489 3485 3483 3400 3400 0CE1 34FF 3481 3481 02151 dt 0xFF,0x81,0x81,0x81,0x00,0x00,0x00,0x00; [ 5B /91 3481 3400 3400 3400 3400 0CE9 3401 3402 3404 02152 dt 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x00; \ 5C /92 3408 3410 3420 3440 3400 0CF1 3400 3400 3400 02153 dt 0x00,0x00,0x00,0x00,0x00,0x81,0x81,0xFF; ] 5D /93 3400 3400 3481 3481 34FF 02154 02155 0CF9 02156 Char_tbl3end 02157 0D00 02158 org 0xD00 0D00 02159 Char_tbl4 0D00 0782 02160 addwf PCL,f 0D01 3400 3404 3402 02161 dt 0x00,0x04,0x02,0x03,0x02,0x04,0x00,0x00; ^ 5E /94 3403 3402 3404 3400 3400 0D09 3400 3400 3440 02162 dt 0x00,0x00,0x40,0x40,0x40,0x40,0x00,0x00; _ 5F /95 3440 3440 3440 3400 3400 0D11 3400 3400 3400 02163 dt 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00; ` 60 /96 3401 3400 3400 3400 3400 0D19 3400 3478 3484 02164 dt 0x00,0x78,0x84,0x84,0xF8,0x80,0x80,0x00; a 61 /97 3484 34F8 3480 3480 3400 0D21 3400 34FF 3490 02165 dt 0x00,0xFF,0x90,0x90,0x90,0x60,0x00,0x00; b 62 /98 3490 3490 3460 3400 3400 0D29 3400 3470 3488 02166 dt 0x00,0x70,0x88,0x88,0x88,0x00,0x00,0x00; c 63 /99 3488 3488 3400 3400 3400 0D31 3400 3460 3490 02167 dt 0x00,0x60,0x90,0x90,0xFE,0x00,0x00,0x00; d 64 /100 3490 34FE 3400 3400 3400 0D39 3400 3478 34A4 02168 dt 0x00,0x78,0xA4,0xA4,0xB8,0x00,0x00,0x00; e 65 /101 34A4 34B8 3400 3400 3400 0D41 3400 34FC 3422 02169 dt 0x00,0xFC,0x22,0x22,0x22,0x00,0x00,0x00; f 66 /102 3422 3422 3400 3400 3400 0D49 3400 343C 34A4 02170 dt 0x00,0x3C,0xA4,0xA4,0xFC,0x00,0x00,0x00; g 67 /103 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 34A4 34FC 3400 3400 3400 0D51 3400 34FC 3420 02171 dt 0x00,0xFC,0x20,0x10,0xE0,0x00,0x00,0x00; h 68 /104 3410 34E0 3400 3400 3400 0D59 3400 3400 3400 02172 dt 0x00,0x00,0x00,0xE8,0x00,0x00,0x00,0x00; i 69 /105 34E8 3400 3400 3400 3400 0D61 3400 3440 3480 02173 dt 0x00,0x40,0x80,0x80,0x74,0x00,0x00,0x00; j 6A /106 3480 3474 3400 3400 3400 0D69 3400 34FC 3420 02174 dt 0x00,0xFC,0x20,0x58,0x80,0x00,0x00,0x00; k 6B /107 3458 3480 3400 3400 3400 0D71 3400 34FC 3480 02175 dt 0x00,0xFC,0x80,0x00,0x00,0x00,0x00,0x00; l 6C /108 3400 3400 3400 3400 3400 0D79 3400 34E0 3410 02176 dt 0x00,0xE0,0x10,0x60,0x10,0xE0,0x00,0x00; m 6D /109 3460 3410 34E0 3400 3400 0D81 3400 34E0 3410 02177 dt 0x00,0xE0,0x10,0x10,0x10,0xE0,0x00,0x00; n 6E /110 3410 3410 34E0 3400 3400 0D89 3400 34F0 3490 02178 dt 0x00,0xF0,0x90,0x90,0xF0,0x00,0x00,0x00; o 6F /111 3490 34F0 3400 3400 3400 0D91 3400 34F8 3428 02179 dt 0x00,0xF8,0x28,0x28,0x38,0x00,0x00,0x00; p 70 /112 3428 3438 3400 3400 3400 0D99 3400 3438 3428 02180 dt 0x00,0x38,0x28,0x28,0xF8,0x00,0x00,0x00; q 71 /113 3428 34F8 3400 3400 3400 0DA1 3400 34F8 3410 02181 dt 0x00,0xF8,0x10,0x08,0x30,0x00,0x00,0x00; r 72 /114 3408 3430 3400 3400 3400 0DA9 3400 3490 34A8 02182 dt 0x00,0x90,0xA8,0xA8,0x48,0x00,0x00,0x00; s 73 /115 34A8 3448 3400 3400 3400 0DB1 3400 34F8 34A0 02183 dt 0x00,0xF8,0xA0,0xA0,0x80,0x00,0x00,0x00; t 74 /116 34A0 3480 3400 3400 3400 0DB9 3400 34F0 3480 02184 dt 0x00,0xF0,0x80,0x80,0xF0,0x00,0x00,0x00; u 75 /117 3480 34F0 3400 3400 3400 0DC1 3400 3430 3440 02185 dt 0x00,0x30,0x40,0xC0,0x40,0x30,0x00,0x00; v 76 /118 34C0 3440 3430 3400 3400 0DC9 3460 3480 3480 02186 dt 0x60,0x80,0x80,0x60,0x80,0x80,0x60,0x00; w 77 /119 3460 3480 3480 3460 3400 0DD1 3400 3490 3460 02187 dt 0x00,0x90,0x60,0x60,0x90,0x00,0x00,0x00; x 78 /120 3460 3490 3400 3400 3400 0DD9 3400 3408 3490 02188 dt 0x00,0x08,0x90,0xA0,0xF8,0x00,0x00,0x00; y 79 /121 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 34A0 34F8 3400 3400 3400 0DE1 3400 3488 34C8 02189 dt 0x00,0x88,0xC8,0xA8,0x98,0x88,0x00,0x00; z 7A /122 34A8 3498 3488 3400 3400 0DE9 3410 342C 34C3 02190 dt 0x10,0x2C,0xC3,0x81,0x00,0x00,0x00,0x00; { 7B /123 3481 3400 3400 3400 3400 0DF1 3400 3400 3400 02191 dt 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00; | 7C /124 34FF 3400 3400 3400 3400 02192 0DF9 02193 Char_tbl4end 02194 0E00 02195 org 0xE00 0E00 02196 Char_tbl5 0E00 0782 02197 addwf PCL,f 0E01 3400 3400 3400 02198 dt 0x00,0x00,0x00,0x00,0x00,0xC1,0x36,0x08; } 7D /125 3400 3400 34C1 3436 3408 0E09 3400 3404 3402 02199 dt 0x00,0x04,0x02,0x04,0x08,0x04,0x00,0x00; ~ 7E /126 3404 3408 3404 3400 3400 0E11 3400 341E 3412 02200 dt 0x00,0x1E,0x12,0x12,0x12,0x1E,0x00,0x00;  7F /127 3412 3412 341E 3400 3400 02201 0E19 02202 Char_tbl5end 02203 02204 2100 02205 ORG 0x2100 02206 00002100 02207 EEPROM_16F876 equ $ 02208 ;un zero doit terminer la phrase 02209 ;message de bienvenue 2100 3448 3441 3450 02210 EE0 DT "HAPR_876_ICSP.asm Q=8MHz",'\f','\r' 3452 345F 3438 3437 3436 345F 3449 3443 3453 3450 342E 3461 3473 346D 3420 3451 343D 3438 344D 3448 347A 340C 340D 211A 3450 3449 3443 02211 DT "PIC16F876 avec bootloader",'\f','\r' 3431 3436 3446 3438 3437 3436 3420 3461 3476 3465 3463 3420 3462 346F 346F 3474 346C 346F 3461 3464 3465 3472 340C 340D 2135 3441 3444 3443 02212 DT "ADC 12bits MAX186, mesure Temperature filtree",'\f','\r' MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3420 3431 3432 3462 3469 3474 3473 3420 344D 3441 3458 3431 3438 3436 342C 3420 346D 3465 3473 3475 3472 3465 3420 3454 3465 346D 3470 3465 3472 3461 3474 3475 3472 3465 3420 3466 3469 346C 3474 3472 3465 3465 340C 340D 2164 3476 3465 3472 02213 DT "version 070303 : " 3473 3469 346F 346E 3420 3430 3437 3430 3433 3430 3433 3420 343A 3420 02214 IFDEF BUID_WITH_SHIFT 2175 3420 3433 3432 02215 DT " 32car Defilants" 3463 3461 3472 3420 3444 3465 3466 3469 346C 3461 346E 3474 3473 02216 ELSE 02217 DT " 16car Fixes" 02218 ENDIF 2185 3409 3420 3450 02219 DT .9," PAULFJUJO",.13,.10,.0 3441 3455 344C 3446 344A 3455 344A 344F 340D 340A 3400 02220 ;message 1 HAPR 02221 IFDEF BUID_WITH_SHIFT 02222 ; "12345678901234567890123456789012" <-32 car 2193 3420 3430 3433 02223 EE1 DT " 03/03/07 21:05:00s TEMP= 12.50'" 342F 3430 3433 342F 3430 3437 3420 3432 3431 343A 3430 3435 343A 3430 3430 3473 3420 3454 3445 344D 3450 343D 3420 3431 3432 342E 3435 3430 3427 02224 ELSE 02225 EE1 DT "18:32:25 T= 21.9" 02226 ENDIF 02227 ;message 2 HAPR MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 21B3 3420 3450 3441 02228 EE2 DT " PAULFJUJO HAPR876-ICSP-asm 2007" 3455 344C 3446 344A 3455 344A 344F 3420 3448 3441 3450 3452 3438 3437 3436 342D 3449 3443 3453 3450 342D 3461 3473 346D 3420 3432 3430 3430 3437 21D3 344D 3441 344A 02229 EE3 DT "MAJ DS1307 ",'\f','\r' 3420 3444 3453 3431 3433 3430 3437 3420 340C 340D 21E0 3441 3441 344D 02230 DT "AAMMJJWWHHMMSS",.13,.10,.0 344D 344A 344A 3457 3457 3448 3448 344D 344D 3453 3453 340D 340A 3400 21F1 3441 3444 3443 02231 EE4 DT "ADC MAX186 = ",.0 3420 344D 3441 3458 3431 3438 3436 3420 343D 3420 3400 000021FF 02232 finEEprom EQU $ 00000001 02233 EEpromLibre EQu .256-(finEEprom - EEPROM_16F876) 02234 END ; directive fin de programme MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 51 SYMBOL TABLE LABEL VALUE ACK 000004B6 ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ADCON0 0000001F ADCON1 0000009F ADCS0 00000006 ADCS1 00000007 ADDEN 00000003 ADDR 00000057 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRESH 0000001E ADRESL 0000009E ANSEL 0000009B Abort_MAJ 0000039D Actu1 00000387 Actu2 0000038F Actu3 000003A4 Actualise 000003A1 Aff_T1 000003FD Aff_T2 000003FE Aff_T3 0000041F Aff_T4 00000420 Affiche_Time 000003F7 Analog0 PORTA,0 Annee 00000046 Autorise 000000DC BCLIE 00000003 BCLIF 00000003 BF 00000000 BRGH 00000002 BUID_WITH_SHIFT Bcd_5digits 0000033D BitsTaches 0000005A Buffer_MAJ 00000040 Buffer_Texte 00000020 C 00000000 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCP2CON 0000001D CCP2IE 00000000 CCP2IF 00000000 CCP2M0 00000000 CCP2M1 00000001 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 52 SYMBOL TABLE LABEL VALUE CCP2M2 00000002 CCP2M3 00000003 CCP2X 00000005 CCP2Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CCPR2H 0000001C CCPR2L 0000001B CHS0 00000003 CHS1 00000004 CHS2 00000005 CKE 00000006 CKP 00000004 CLOCK_PULSE 000004C1 CMCON 0000009C CONT_IN 000004F8 CREN 00000004 CSRC 00000007 CS_Max PORTA,3 CVRCON 0000009D Char_tbl2 00000B00 Char_tbl2end 00000BF9 Char_tbl3 00000C00 Char_tbl3end 00000CF9 Char_tbl4 00000D00 Char_tbl4end 00000DF9 Char_tbl5 00000E00 Char_tbl5end 00000E19 Choix_Message 00000161 Conf 00000056 Cpt10 000000A0 CtrlReg 00000047 Curseur 0000004A D 00000005 DATA_ADDRESS 00000005 DATA_EE_DATA 00000110 DC 00000001 DEV_1624 00000059 DEV_DS1307 00000058 DIN_Max PORTA,4 D_A 00000005 Divise2 0000017E Divise4 00000179 Drapeaux 00000063 Drp_MSGx Drapeaux,0 EE0 00002100 EE1 00002193 EE2 000021B3 EE3 000021D3 EE4 000021F1 EEADR 0000010D EEADRH 0000010F EECON1 0000018C EECON2 0000018D MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 53 SYMBOL TABLE LABEL VALUE EEDATA 0000010C EEDATH 0000010E EEIE 00000004 EEIF 00000004 EEPGD 00000007 EEPROM 00002100 EEPROM_16F876 00002100 EEWRITE 000002CB EEpromLibre 00000001 ELLIGIBLE Drapeaux,6 F 00000001 FERR 00000002 FSR 00000004 Fin_it 00000018 GCEN 00000007 GIE 00000007 GO 00000002 GO_DONE 00000002 HB 000003D2 HB1 000003DE HB2 000003E1 HEURE 00000042 HIGH_SCL 000004D8 HIGH_SDA 000004C6 I2C_DATA 00000005 I2C_DELAY 0000043C I2C_READ 00000002 I2C_SCL PORTB,6 I2C_SDA PORTB,7 I2C_START 00000003 I2C_STOP 00000004 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IN_BIT 000004ED IN_BYTE 000004E9 IN_ONE 000004F4 IN_ZERO 000004F1 IRP 00000007 I_BYTE 00000060 Init_RTC 0000050E Jour 00000044 JourSem 00000043 LB 000003E3 LESS_EQ_9 000003CF LOW_SCL 000004E1 LOW_SDA 000004CF LastBank0 00000063 LastCDA 0000007E Lb1 00000306 Lb2 0000030A Lb3 0000030E MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 54 SYMBOL TABLE LABEL VALUE Lb4 00000312 Lb5 00000321 Lb6 00000322 Lb7 00000328 Lb8 00000329 LectBit_Max PORTA,2 LectMax186 0000010B Lecture_DS1307 00000533 MAJ_DS1307 00000383 MIN 00000041 M_ACK 000004A4 Max1 00000129 Max2 00000138 Max3 00000146 Mcount 000000A1 MesNonFiltree 000000C1 Modif_1 0000026E Modif_Encore 0000026B Modif_OK 00000285 Mois 00000045 Msg_Eeprom 000002B5 Mulx8 000001B7 NACK 000004AD NOT_A 00000005 NOT_ADDRESS 00000005 NOT_BO 00000000 NOT_BOR 00000000 NOT_DONE 00000002 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RC8 00000006 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_TX8 00000006 NOT_W 00000002 NOT_WRITE 00000002 Nb_1 000000BD Ncol 00000049 Next_Colonne 000000C3 OERR 00000001 OK_Saisie 000003F4 OPTION_REG 00000081 OSC_FREQ 8000000 OUT_BIT 000004FF OUT_BYTE 000004FC OUT_CONT 0000050B OUT_ONE 00000508 OUT_ZERO 00000504 O_BYTE 0000005F P 00000004 PCFG0 00000000 PCFG1 00000001 PCFG2 00000002 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 55 SYMBOL TABLE LABEL VALUE PCFG3 00000003 PCL 00000002 PCLATH 0000000A PCLATH_TEMP 0000007E PCON 0000008E PEIE 00000006 PEN 00000002 PIE1 0000008C PIE2 0000008D PIR1 0000000C PIR2 0000000D PORTA 00000005 PORTB 00000006 PORTC 00000007 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PasseParLa 000002AC PinChoixMsg PORTB,4 Port_8_Leds PORTC Pres0 00000050 Pres1 0000007D Presentation 00000047 Quartz 8000000 R 00000002 RAZ_Index 00000084 RBIE 00000003 RBIF 00000000 RC8_9 00000006 RC9 00000006 RCD8 00000000 RCEN 00000003 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 RD 00000000 READ_WRITE 00000002 RETENUE Drapeaux,7 RP0 00000005 RP1 00000006 RSEN 00000001 RX9 00000006 RX9D 00000000 R_W 00000002 Rangement 000003E8 Rb0_int 0000000E Rb3notavailable PORTB,3 Read_EE 000002BE Read_RS 0000028B Renseigne_Time 00000459 Rs_CrLf 000002B0 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 56 SYMBOL TABLE LABEL VALUE Rs_Putchar 00000298 Rs_Rx PORTB,0 Rs_Tx PORTB,1 Rt_1 0000045F Rt_2 00000460 Rt_3 0000047B Rt_4 0000047C Rx1 0000028E S 00000003 SCLK_Max PORTA,5 SEC 00000040 SEN 00000000 SMP 00000007 SPBRG 00000099 SPEN 00000007 SREN 00000005 SSPADD 00000093 SSPBUF 00000013 SSPCON 00000014 SSPCON2 00000091 SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPOV 00000006 SSPSTAT 00000094 START 00000492 STATUS 00000003 STATUS_TEMP 0000007C STOP 0000049C STR_INDEX 0000005B STamb_F 000000AC SUP_0 000003C8 SYNC 00000004 Saisie_Caracteres 0000039F Send_Clock_to_Max 00000158 SommeTamb 000000A9 St0 00000166 St1 00000168 St2 00000169 Suiv_1 000000FB Suiv_2 00000105 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1INSYNC 00000002 T1OSCEN 00000003 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 57 SYMBOL TABLE LABEL VALUE T1SYNC 00000002 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TABUL 00000009 TC_HI 00000061 TC_LO 00000062 TH_1 00000063 TMR0 00000001 TMR0IE 00000005 TMR0IF 00000002 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRISC 00000087 TRMT 00000001 TX8_9 00000006 TX9 00000006 TX9D 00000000 TXD8 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 Tamb_F 000000AA Test1 00000052 Test2 0000005E Test_8leds 00000053 Test_Back 000003B0 Test_Hardware 00000060 Test_Num 000003C3 Test_Tab 000003BA Top_Synchro PORTA,1 UA 00000001 W 00000000 W0 0000025C W1 0000025C W2 0000025E W3 00000286 W4 00000288 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 58 SYMBOL TABLE LABEL VALUE WCOL 00000007 WR 00000001 WREN 00000002 WRERR 00000003 WSync 00000258 W_TEMP 0000007D WaitSynchro 00000253 Z 00000002 _BODEN_OFF 00003FBF _BODEN_ON 00003FFF _CPD_OFF 00003FFF _CPD_ON 00003EFF _CP_ALL 00000FCF _CP_HALF 00001FDF _CP_OFF 00003FFF _CP_UPPER_256 00002FEF _Cpt1 00000052 _DEBUG_OFF 00003FFF _DEBUG_ON 000037FF _HS_OSC 00003FFE _Index_C 0000004E _Index_M 0000004D _Index_N 0000004C _Index_T 0000004B _LP_OSC 00003FFC _LVP_OFF 00003F7F _LVP_ON 00003FFF _N 0000005C _N0 0000005D _N1 0000005E _No_Change 00000096 _Offset_C 0000004F _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _RsByte 00000051 _RsCount 00000050 _Temp1 00000053 _Temp2 00000054 _WDT_OFF 00003FFB _WDT_ON 00003FFF _WRT_ENABLE_OFF 00003DFF _WRT_ENABLE_ON 00003FFF _XT_OSC 00003FFD __16F876 00000001 add16 000001A5 bank0 bank1 bank2 bank3 bcd3 00000361 bcd31 00000367 bcd32 0000036E bcd33 00000375 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 59 SYMBOL TABLE LABEL VALUE bcd_temp 000002E0 boucle 0000008C btmp 000000A2 btmp1 000000A3 cent 000000A6 cmpt1 00000055 count1 000000BA count2 000000BB count3 000000BC delay1 0000024A delay_100mS 00000226 delay_100uS 000001DE delay_10mS 00000214 delay_1S 00000241 delay_1mS 00000202 delay_200uS 000001E7 delay_250mS 0000022F delay_25mS 0000021D delay_25uS 000001D5 delay_300uS 000001F0 delay_500mS 00000238 delay_500uS 000001F9 delay_5mS 0000020B delay_Half_RS 000001CC delay_RS 000001C3 div16 00000184 div161 0000018A div162 00000194 div163 0000019C dix 000000A7 dixmil 000000A4 dummy99 00000190 fin16 000001A0 finEEprom 000021FF fin_de_programme 00000562 inp_MAJ_RTC PORTB,2 inp_Test_Hard PORTB,5 mille 000000A5 not_in_table3 000000F4 not_in_table4 000000E8 reste 000000B6 restitueVal1 00000358 result 000000B8 start 0000001F sub16 000001AE timer_int 00000013 to_1 00000093 to_2 0000008F un 000000A8 val1 000000B0 val2 000000B2 val3 000000B4 valx 000000AE varun 00000048 MPASM 5.00 HAPR_876_ICSP.ASM 3-4-2007 11:17:20 PAGE 60 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXX-XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XX-------------- ---------------- 0B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- 0C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- 0D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- 0E00 : XXXXXXXXXXXXXXXX XXXXXXXXX------- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 21C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX- All other memory blocks unused. Program Memory Words Used: 2149 Program Memory Words Free: 6043 Errors : 0 Warnings : 1 reported, 0 suppressed Messages : 3 reported, 196 suppressed