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