MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;1624_2.asm mise à l'echelle partie decimale! 00002 ; step mini lsb=8 soit 0,03125°C 00003 ; 1624_1.asm 00004 ; circuit avec resolution 13 bits! 00005 ;05 sept 05 rev DS1621_6.asm 00006 ; PIC16F84 DS1624 00007 ; RB7 (pin 13) ---------------------- SCL (pin 2) ----- To Other ..5.6K pullup 00008 ; RB6 (pin 12) ---------------------- SDA (pin 1) ----- I2C Devices 00009 ; RB1 (pin 7) ---- LED ---- 330 ----- +5VDC (HI_TEMP_COND) 00010 ; RB0 (pin 6) ---- LED ---- 330 ----- +5VDC (LO_TEMP_COND) 00011 ; RB3 (pin 9) ---- _/_ ---------------0V (4,7K au +5V)simul mesure 19,5°C 00012 ; PORTA, Bit 1 (pin 18) ----- TX ---> to RX on Pin 11 Max232 (Serial RS232) 00013 ; slave address is determined by A2 (pin 5), A1 (pin 6) and A0 (pin 7) on the DS1621 00014 ; The above SCL and SDA leads may be multipled to 8 devices, each strapped for a 00015 ; unique A2 A1 A0 setting and with 5.6K pullup resistors to +5VDC 00016 00017 LIST p=16f84 00018 #include 00001 LIST 00002 ; personalisation 20/10/02 00003 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. Message[301]: MESSAGE: (Processor-header file mismatch. Verify selected processor.) 00142 LIST 2007 3FF1 00019 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC 00020 ;__CONFIG 3FF1 00021 00022 00023 ERRORLEVEL -302 00024 0006 00025 CONSTANT SDA=6 ; PORTB terminals assigned 0007 00026 CONSTANT SCL=7 0003 00027 CONSTANT DebugInp=3 0001 00028 CONSTANT HI_ALM=1 0000 00029 CONSTANT LO_ALM=0 0006 00030 CONSTANT THF=6 ; bit 6 in configuration register 0005 00031 CONSTANT TLF=5 ; bit 5 000C 00032 CONSTANT VARS=0CH ; starting point for variables 00033 cblock 0x0C 0000000C 00034 bdixmil 0000000D 00035 bmille 0000000E 00036 bcent 0000000F 00037 bdix 00000010 00038 bun 00000011 00039 btmp 00000012 00040 val1:2 00000014 00041 val2:2 00000016 00042 valx:2 00000018 00043 TC_HI 00000019 00044 TC_LO 0000001A 00045 Conf 0000001B 00046 STR_INDEX 0000001C 00047 DEV_ADR 0000001D 00048 _N MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000001E 00049 O_BYTE 0000001F 00050 I_BYTE 00000020 00051 LOOP1 00000021 00052 LOOP2 00000022 00053 LOOP3 00000023 00054 _SER_DATA 00000024 00055 _SER_LOOP 00000025 00056 _SER_TIME 00000026 00057 _TEMP1 00000027 00058 _TEMP2 00000028 00059 _SAVE_W 00000029 00060 _SAVE_STAT 0000002A 00061 _DELAY_RS 0000002B 00062 _RsByte 0000002C 00063 _RsCount 0000002D 00064 _Cpt1 0000002E 00065 _LOOP1 0000002F 00066 _LOOP2 00000030 00067 drapeau 00068 endc 00069 00070 ;drapeau:3= choix format 1=XX 0=XXX pour bcd3 00071 ;drapeau:2= choix output 1=Rs232 0=LCD 00072 ;drapeau:1= choix format 1=XXXX.X 0=XXXXX pour bcd5 00073 ;drapeau:0 pour effacer zero inutile 00074 00075 00076 #define Rs_Port PORTA 00000001 00077 Rs_Tx EQU 1 ; serial RS232 output 00000004 00078 DATA_IN EQU 4 ; Input data from IR pickup 00079 00080 0000 00081 ORG 000H 00082 0000 1683 00083 bank1 0001 3008 00084 MOVLW B'00001000' ;RB7,6,5,4,x,2,1,0 outputs RB3=input 0002 0086 00085 MOVWF TRISB 0003 3010 00086 MOVLW B'00010000' ;RA4 input RA3,2,1,0 outputs 0004 0085 00087 MOVWF TRISA 0005 0181 00088 clrf OPTION_REG 0006 1283 00089 bank0 0007 1486 00090 BSF PORTB, HI_ALM ; turn off alarm indicators 0008 1406 00091 BSF PORTB, LO_ALM ; same 00092 0009 01B0 00093 clrf drapeau 000A 2194 00094 CALL RS_CRLF 000B 01AD 00095 clrf _Cpt1 000C 00096 Pres1 000C 082D 00097 movf _Cpt1,w 000D 21A2 00098 CALL read_EE 000E 0AAD 00099 incf _Cpt1,f 000F 39FF 00100 ANDLW 0x0FF ; test sur (W) 0010 1903 00101 BTFSC STATUS, Z ; zero= fin de message ? MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0011 2814 00102 GOTO Pres2 0012 2182 00103 Call RS_Putchar 0013 280C 00104 goto Pres1 0014 00105 Pres2 0014 2194 00106 CALL RS_CRLF 0015 300D 00107 movlw EE1-EE0 0016 00AD 00108 MOVWF _Cpt1 0017 00109 Pres3 0017 082D 00110 movf _Cpt1,w 0018 21A2 00111 CALL read_EE 0019 0AAD 00112 incf _Cpt1,f 001A 39FF 00113 ANDLW 0x0FF ; test sur (W) 001B 1903 00114 BTFSC STATUS, Z ; zero= fin de message ? 001C 281F 00115 GOTO Pres4 001D 2182 00116 Call RS_Putchar 001E 2817 00117 goto Pres3 00118 001F 00119 Pres4 001F 2194 00120 CALL RS_CRLF 0020 301B 00121 movlw EE2-EE0 0021 00AD 00122 MOVWF _Cpt1 0022 00123 Pres5 0022 082D 00124 movf _Cpt1,w 0023 21A2 00125 CALL read_EE 0024 0AAD 00126 incf _Cpt1,f 0025 39FF 00127 ANDLW 0x0FF ; test sur (W) 0026 1903 00128 BTFSC STATUS, Z ; zero= fin de message ? 0027 2857 00129 GOTO MAIN 0028 2182 00130 Call RS_Putchar 0029 2822 00131 goto Pres5 00132 00133 ;------------------------------------------- 002A 00134 STR_1_LOOKUP: 002A 0782 00135 ADDWF PCL, F 002B 3454 3465 346D 00136 DT "Temperature = ", 0 3470 3465 3472 3461 3474 3475 3472 3465 3420 343D 3420 3400 003A 00137 STR_2_LOOKUP: 003A 0782 00138 ADDWF PCL, F 003B 3420 3444 3465 00139 DT " Deg C", 0 3467 3420 3443 3400 0042 00140 STR_3_LOOKUP: 0042 0782 00141 ADDWF PCL, F 0043 3420 3452 3465 00142 DT " Registre Config = ", 0 3467 3469 3473 3474 3472 3465 3420 3443 346F 346E 3466 3469 3467 3420 343D 3420 3400 MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00143 ;------------------------------------------- 0057 00144 MAIN: 0057 15B0 00145 bsf drapeau,3 ; pour affichage restreint 000 à 999 0058 1430 00146 bsf drapeau,0 0059 2194 00147 CALL RS_CRLF 00148 005A 3002 00149 MOVLW 2 ; A2=0 A1=0 A0=1 005B 009C 00150 MOVWF DEV_ADR 005C 207E 00151 CALL CONFIG_1624 ; AC 02 005D 2092 00152 CALL BEGIN_CNVT ; EE. Not sure if necessary 005E 00153 MAIN1: 005E 2194 00154 CALL RS_CRLF 005F 20D6 00155 CALL OUT_STR_1 ; "Temperature = " 0060 20A2 00156 call MEASURE 0061 0818 00157 movf TC_HI,w 0062 20F4 00158 call bcd3 0063 302E 00159 movlw '.' 0064 2112 00160 call Choix_Out 0065 0819 00161 movf TC_LO,w 0066 0093 00162 movwf val1+1 0067 1003 00163 bcf STATUS,C 0068 0192 00164 clrf val1 0069 0D93 00165 rlf val1+1,f ; LSB * 4 006A 0D92 00166 rlf val1,f 006B 1003 00167 bcf STATUS,C 006C 0D93 00168 rlf val1+1,f 006D 0D92 00169 rlf val1,f ; val1 16 bits contient LSB *4 006E 21B7 00170 call bcd999 006F 20E0 00171 CALL OUT_STR_2 ; " deg C" 00172 0070 20BE 00173 CALL FETCH_CONFIG ; AC 0071 3020 00174 movlw ' ' 0072 2112 00175 call Choix_Out 0073 3009 00176 movlw .9 ;Tabulation 0074 2112 00177 call Choix_Out 0075 20EA 00178 CALL OUT_STR_3 0076 081A 00179 movf Conf,w 0077 20F4 00180 call bcd3 00181 0078 00182 MAIN2: 0078 3008 00183 MOVLW .8 ; was 120 * 1/4 second delay 0079 00A2 00184 MOVWF LOOP3 ;2 sec was 30 second 007A 00185 MAIN3: 007A 2172 00186 CALL DELAY_LONG 007B 0BA2 00187 DECFSZ LOOP3, F 007C 287A 00188 GOTO MAIN3 007D 285E 00189 GOTO MAIN1 ; continue making measurements 00190 00191 007E 00192 CONFIG_1624: ; configures device for CPU operation - continuous 007E 2145 00193 CALL START 007F 1003 00194 BCF STATUS, C 0080 081C 00195 Movf DEV_ADR,W MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0081 3890 00196 IORLW 90H 0082 009E 00197 MOVWF O_BYTE ; send address byte 0083 2129 00198 CALL OUT_BYTE 0084 213A 00199 CALL NACK 0085 30AC 00200 MOVLW 0ACH ; send config information 0086 009E 00201 MOVWF O_BYTE 0087 2129 00202 CALL OUT_BYTE 0088 213A 00203 CALL NACK 0089 3002 00204 MOVLW 02H 008A 009E 00205 MOVWF O_BYTE 008B 2129 00206 CALL OUT_BYTE 008C 213A 00207 CALL NACK 008D 214B 00208 CALL STOP 008E 3019 00209 MOVLW .25 008F 00A0 00210 MOVWF LOOP1 0090 2174 00211 CALL DELAY_N_MS ; 15 msec delay for EEPROM 0091 0008 00212 RETURN 00213 0092 00214 BEGIN_CNVT: ; turns on circuitry to begin conversions 0092 2145 00215 CALL START 0093 1003 00216 BCF STATUS, C 0094 081C 00217 Movf DEV_ADR,W 0095 3890 00218 IORLW 90H 0096 009E 00219 MOVWF O_BYTE ; send address byte 0097 2129 00220 CALL OUT_BYTE 0098 213A 00221 CALL NACK 0099 30EE 00222 MOVLW 0EEH 009A 009E 00223 MOVWF O_BYTE 009B 2129 00224 CALL OUT_BYTE 009C 213A 00225 CALL NACK 009D 214B 00226 CALL STOP 009E 3019 00227 MOVLW .25 009F 00A0 00228 MOVWF LOOP1 00A0 2174 00229 CALL DELAY_N_MS ; to allow for conversion 00A1 0008 00230 RETURN 00231 00A2 00232 MEASURE: 00A2 2145 00233 CALL START 00A3 1003 00234 BCF STATUS, C 00A4 081C 00235 Movf DEV_ADR,W 00A5 3890 00236 IORLW 90H 00A6 009E 00237 MOVWF O_BYTE 00A7 2129 00238 CALL OUT_BYTE 00A8 213A 00239 CALL NACK 00A9 30AA 00240 MOVLW 0AAH 00AA 009E 00241 MOVWF O_BYTE 00AB 2129 00242 CALL OUT_BYTE 00AC 213A 00243 CALL NACK 00AD 2145 00244 CALL START 00AE 1003 00245 BCF STATUS, C 00AF 081C 00246 Movf DEV_ADR,W 00B0 3891 00247 IORLW 91H ; bit R/W doit etre à 1 pour lecture 00B1 009E 00248 MOVWF O_BYTE ; soit 90H + 02H +1= 93H MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00B2 2129 00249 CALL OUT_BYTE 00B3 213A 00250 CALL NACK 00B4 2116 00251 CALL IN_BYTE ; fetch the high byte 00B5 081F 00252 MOVF I_BYTE, W 00B6 0098 00253 MOVWF TC_HI ; and put in TC_HI 00B7 2140 00254 CALL ACK 00B8 2116 00255 CALL IN_BYTE ; fetch the low byte 00B9 081F 00256 MOVF I_BYTE, W 00BA 0099 00257 MOVWF TC_LO ; and put in TC_LO 00BB 213A 00258 CALL NACK 00BC 214B 00259 CALL STOP 00BD 0008 00260 RETURN 00261 00BE 00262 FETCH_CONFIG: ; fetches configuration / status register 00263 ; result returned in i_byte 00BE 2145 00264 CALL START 00BF 1003 00265 BCF STATUS, C 00C0 081C 00266 Movf DEV_ADR,W 00C1 3890 00267 IORLW 90H 00C2 009E 00268 MOVWF O_BYTE 00C3 2129 00269 CALL OUT_BYTE 00C4 213A 00270 CALL NACK 00C5 30AC 00271 MOVLW 0ACH ; AC command 00C6 009E 00272 MOVWF O_BYTE 00C7 2129 00273 CALL OUT_BYTE 00C8 213A 00274 CALL NACK 00C9 2145 00275 CALL START 00CA 1003 00276 BCF STATUS, C 00CB 081C 00277 Movf DEV_ADR,W 00CC 3890 00278 IORLW 90H 00CD 3801 00279 IORLW 01H ; a read operation 00CE 009E 00280 MOVWF O_BYTE 00CF 2129 00281 CALL OUT_BYTE 00D0 213A 00282 CALL NACK 00D1 2116 00283 CALL IN_BYTE 00D2 081F 00284 MOVF I_BYTE, W 00D3 009A 00285 movwf Conf 00D4 214B 00286 CALL STOP 00D5 0008 00287 RETURN 00288 00289 ;----------------------------- 00D6 00290 OUT_STR_1: 00D6 019B 00291 CLRF STR_INDEX 00D7 00292 OUT_STR_11: 00D7 081B 00293 MOVF STR_INDEX, W 00D8 202A 00294 CALL STR_1_LOOKUP ; fetch the character 00D9 3E00 00295 ADDLW 0 ; be sure zero flag is valid 00DA 1903 00296 BTFSC STATUS, Z 00DB 28DF 00297 GOTO OUT_STR_12 ; done if null 00DC 2112 00298 CALL Choix_Out 00DD 0A9B 00299 INCF STR_INDEX, F 00DE 28D7 00300 GOTO OUT_STR_11 ; keep going 00DF 00301 OUT_STR_12: MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00DF 0008 00302 RETURN 00303 00304 00E0 00305 OUT_STR_2: 00E0 019B 00306 CLRF STR_INDEX 00E1 00307 OUT_STR_21: 00E1 081B 00308 MOVF STR_INDEX, W 00E2 203A 00309 CALL STR_2_LOOKUP 00E3 3E00 00310 ADDLW 0 00E4 1903 00311 BTFSC STATUS, Z 00E5 28E9 00312 GOTO OUT_STR_22 00E6 2112 00313 CALL Choix_Out 00E7 0A9B 00314 INCF STR_INDEX, F 00E8 28E1 00315 GOTO OUT_STR_21 00E9 00316 OUT_STR_22: 00E9 0008 00317 RETURN 00318 00EA 00319 OUT_STR_3: 00EA 019B 00320 CLRF STR_INDEX 00EB 00321 OUT_STR_31: 00EB 081B 00322 MOVF STR_INDEX, W 00EC 2042 00323 CALL STR_3_LOOKUP 00ED 3E00 00324 ADDLW 0 00EE 1903 00325 BTFSC STATUS, Z 00EF 28F3 00326 GOTO OUT_STR_32 00F0 2112 00327 CALL Choix_Out 00F1 0A9B 00328 INCF STR_INDEX, F 00F2 28EB 00329 GOTO OUT_STR_31 00F3 00330 OUT_STR_32: 00F3 0008 00331 RETURN 00332 00333 00334 ;----------------- 00F4 0091 00335 bcd3 movwf btmp ; affichage octet --> decimal 3 digits ( de 0 a 255 ) 00F5 3030 00336 movlw '0' 00F6 008E 00337 movwf bcent 00F7 008F 00338 movwf bdix 00F8 3064 00339 bcd31 movlw .100 00F9 0211 00340 subwf btmp,w 00FA 1C03 28FF 00341 bnc bcd32 00FC 0091 00342 movwf btmp 00FD 0A8E 00343 incf bcent,f 00FE 28F8 00344 goto bcd31 00345 00FF 300A 00346 bcd32 movlw .10 0100 0211 00347 subwf btmp,w 0101 1C03 2906 00348 bnc bcd33 0103 0091 00349 movwf btmp 0104 0A8F 00350 incf bdix,f 0105 28FF 00351 goto bcd32 00352 0106 3030 00353 bcd33 movlw '0' 0107 0711 00354 addwf btmp,w MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0108 0090 00355 movwf bun 0109 19B0 00356 btfsc drapeau,3 010A 290D 00357 goto Only_99 010B 080E 00358 movf bcent,w 010C 2112 00359 call Choix_Out 010D 00360 Only_99 010D 080F 00361 movf bdix,w 010E 2112 00362 call Choix_Out 010F 0810 00363 movf bun,w 0110 2112 00364 call Choix_Out 0111 0008 00365 return 00366 0112 00367 Choix_Out 0112 1D30 00368 btfss drapeau,2 ; si bit 2 à zero choix=RS232 sinon LCD 0113 2982 00369 goto RS_Putchar 0114 2915 00370 goto LCD_Putchar 00371 0115 00372 LCD_Putchar 00373 ;not implemented 0115 0008 00374 return 00375 ;--------------------------------------- 00376 00377 00378 ; The following routines are low level I2C routines applicable to most 00379 ; interfaces with I2C devices. 0116 00380 IN_BYTE ; read byte on i2c bus 0116 019F 00381 CLRF I_BYTE 0117 3008 00382 MOVLW .8 0118 009D 00383 MOVWF _N ; set index to 8 0119 2156 00384 CALL HIGH_SDA ; be sure SDA is configured as input 011A 00385 IN_BIT 011A 2161 00386 CALL HIGH_SCL ; clock high 011B 1F06 00387 BTFSS PORTB, SDA ; test SDA bit 011C 291E 00388 GOTO IN_ZERO 011D 2921 00389 GOTO IN_ONE 011E 00390 IN_ZERO 011E 1003 00391 BCF STATUS, C ; clear any carry 011F 0D9F 00392 RLF I_BYTE, F ; i_byte = i_byte << 1 | 0 0120 2925 00393 GOTO CONT_IN 0121 00394 IN_ONE 0121 1003 00395 BCF STATUS, C ; clear any carry 0122 0D9F 00396 RLF I_BYTE, F 0123 0A9F 00397 INCF I_BYTE, F ; i_byte = (i_byte << 1) | 1 0124 2925 00398 GOTO CONT_IN 0125 00399 CONT_IN 0125 2166 00400 CALL LOW_SCL ; bring clock low 0126 0B9D 00401 DECFSZ _N, F ; decrement index 0127 291A 00402 GOTO IN_BIT 0128 0008 00403 RETURN 00404 0129 00405 OUT_BYTE: ; send o_byte on I2C bus 0129 3008 00406 MOVLW .8 012A 009D 00407 MOVWF _N MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 012B 00408 OUT_BIT: 012B 1003 00409 BCF STATUS,C ; clear carry 012C 0D9E 00410 RLF O_BYTE, F ; left shift, most sig bit is now in carry 012D 1C03 00411 BTFSS STATUS, C ; if one, send a one 012E 2930 00412 GOTO OUT_ZERO 012F 2934 00413 GOTO OUT_ONE 0130 00414 OUT_ZERO: 0130 215B 00415 CALL LOW_SDA ; SDA at zero 0131 2151 00416 CALL CLOCK_PULSE 0132 2156 00417 CALL HIGH_SDA 0133 2937 00418 GOTO OUT_CONT 0134 00419 OUT_ONE: 0134 2156 00420 CALL HIGH_SDA ; SDA at logic one 0135 2151 00421 CALL CLOCK_PULSE 0136 2937 00422 GOTO OUT_CONT 0137 00423 OUT_CONT: 0137 0B9D 00424 DECFSZ _N, F ; decrement index 0138 292B 00425 GOTO OUT_BIT 0139 0008 00426 RETURN 00427 00428 013A 00429 NACK: ; bring SDA high and clock 013A 2156 00430 CALL HIGH_SDA 013B 0000 00431 NOP 013C 0000 00432 NOP 013D 2151 00433 CALL CLOCK_PULSE 013E 0000 00434 NOP 013F 0008 00435 RETURN 0140 00436 ACK: 0140 215B 00437 CALL LOW_SDA 0141 0000 00438 NOP 0142 2151 00439 CALL CLOCK_PULSE 0143 0000 00440 NOP 0144 0008 00441 RETURN 0145 00442 START: 0145 2166 00443 CALL LOW_SCL 0146 2156 00444 CALL HIGH_SDA 0147 2161 00445 CALL HIGH_SCL 0148 215B 00446 CALL LOW_SDA ; bring SDA low while SCL is high 0149 2166 00447 CALL LOW_SCL 014A 0008 00448 RETURN 00449 014B 00450 STOP: 014B 2166 00451 CALL LOW_SCL 014C 215B 00452 CALL LOW_SDA 014D 2161 00453 CALL HIGH_SCL 014E 2156 00454 CALL HIGH_SDA ; bring SDA high while SCL is high 014F 2166 00455 CALL LOW_SCL 0150 0008 00456 RETURN 00457 0151 00458 CLOCK_PULSE: ; SCL momentarily to logic one 0151 2161 00459 CALL HIGH_SCL 0152 0000 00460 NOP MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0153 2166 00461 CALL LOW_SCL 0154 0000 00462 NOP 0155 0008 00463 RETURN 00464 0156 00465 HIGH_SDA: ; high impedance by making SDA an input 0156 1683 00466 bank1 0157 1706 00467 BSF TRISB, SDA ; make SDA pin an input 0158 1283 00468 bank0 0159 216C 00469 CALL DELAY_SHORT 015A 0008 00470 RETURN 00471 015B 00472 LOW_SDA: 015B 1306 00473 BCF PORTB, SDA 015C 1683 00474 bank1 015D 1306 00475 BCF TRISB, SDA ; make SDA pin an output 015E 1283 00476 bank0 015F 216C 00477 CALL DELAY_SHORT 0160 0008 00478 RETURN 00479 0161 00480 HIGH_SCL: 0161 1683 00481 bank1 0162 1786 00482 BSF TRISB, SCL ; make SCL pin an input 0163 1283 00483 bank0 0164 216C 00484 CALL DELAY_SHORT 0165 0008 00485 RETURN 00486 0166 00487 LOW_SCL: 0166 1386 00488 BCF PORTB, SCL 0167 1683 00489 bank1 0168 1386 00490 BCF TRISB, SCL ; make SCL pin an output 0169 1283 00491 bank0 016A 216C 00492 CALL DELAY_SHORT 016B 0008 00493 RETURN 00494 016C 00495 DELAY_SHORT: ; provides nominal 25 usec delay 016C 3014 00496 MOVLW .20 016D 00A1 00497 MOVWF LOOP2 016E 00498 DELAY_SHORT_1: 016E 0000 00499 NOP 016F 0BA1 00500 DECFSZ LOOP2, F 0170 296E 00501 GOTO DELAY_SHORT_1 0171 0008 00502 RETURN 00503 0172 00504 DELAY_LONG: 0172 30FA 00505 MOVLW .250 ; 250 msec delay 0173 00A0 00506 MOVWF LOOP1 0174 00507 DELAY_N_MS: 0174 00508 OUTTER: 0174 306E 00509 MOVLW .110 ; close to 1.0 msec delay when set to .110 0175 00A1 00510 MOVWF LOOP2 0176 00511 INNER: 0176 0000 00512 NOP 0177 0000 00513 NOP MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0178 0BA1 00514 DECFSZ LOOP2, F ; decrement and leave result in LOOP2 00515 ; skip next statement if zero 0179 2976 00516 GOTO INNER 017A 0BA0 00517 DECFSZ LOOP1, F 017B 2974 00518 GOTO OUTTER 017C 0008 00519 RETURN 00520 00521 00522 ;Routine d'attente 4800 Bauds 017D 3043 00523 Delay MOVLW H'43' ;valeur du delai soit 67decimal 017E 00AA 00524 MOVWF _DELAY_RS 017F 0BAA 00525 DECFSZ _DELAY_RS,F 0180 297F 00526 GOTO $-1 0181 0008 00527 Return 00528 00529 ;--------------------------- 0182 00530 RS_Putchar 0182 00AB 00531 movwf _RsByte 0183 3008 00532 Movlw H'08' ;correspond à un byte de 8 bits 0184 00AC 00533 Movwf _RsCount ;place dans RsCount 0185 1085 00534 Bcf Rs_Port,Rs_Tx ;bit start à 0 0186 217D 00535 Call Delay ;wait valeur 1bit 4800 Bauds 0187 0CAB 00536 Rrf _RsByte,F ;shift droite dans carry 0188 1803 00537 Btfsc STATUS,C ;si carry 0 alors saute 0189 298C 00538 Goto $+3 ;carry =1 018A 1085 00539 Bcf Rs_Port,Rs_Tx ;Tx dans PORTA =0 018B 298D 00540 Goto $+2 018C 1485 00541 Bsf Rs_Port,Rs_Tx ;Tx dans PORTA =1 018D 217D 00542 Call Delay 018E 0BAC 00543 Decfsz _RsCount,F ;RsCount =RsCount -1 018F 2987 00544 Goto $-8 0190 1485 00545 Bsf Rs_Port,Rs_Tx ;bit de stop 0191 217D 00546 Call Delay ;byte envoyé 0192 217D 00547 Call Delay 0193 0008 00548 return 00549 00550 00551 ;---------------- 0194 00552 RS_CRLF 0194 082B 00553 movf _RsByte,w ;sauve W 0195 300D 00554 movlw .13 0196 2182 00555 call RS_Putchar 0197 300A 00556 movlw .10 0198 2182 00557 call RS_Putchar 0199 00AB 00558 movwf _RsByte ;restitue W 019A 0008 00559 return 00560 ;-------------------- 019B 00561 RS_2SPACES 019B 082B 00562 movf _RsByte,w ;sauve W 019C 3020 00563 movlw ' ' 019D 2182 00564 call RS_Putchar 019E 3020 00565 movlw ' ' 019F 2182 00566 call RS_Putchar MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01A0 00AB 00567 movwf _RsByte ;restitue W 01A1 0008 00568 return 00569 ;---------------------------- 01A2 00570 read_EE 00571 01A2 0089 00572 movwf EEADR ; defini offset addresse 01A3 1683 00573 bank1 ; 16F84 !!!! 01A4 1408 00574 bsf EECON1,RD ; mode lecture 01A5 1283 00575 bank0 ; 16F84 !!!! 01A6 0808 00576 movf EEDATA,W ; recupere lecture 01A7 0008 00577 return 00578 00579 01A8 00580 _DELAY10: 01A8 300A 00581 MOVLW .10 ; 10 msec delay 01A9 00AE 00582 MOVWF _LOOP1 01AA 00583 _DELAY_1: 01AA 306E 00584 MOVLW .110 ; close to 1.0 msec delay when set to .110 01AB 00AF 00585 MOVWF _LOOP2 01AC 00586 _DELAY_2: 01AC 0000 00587 NOP 01AD 0000 00588 NOP 01AE 0000 00589 NOP 01AF 0000 00590 NOP 01B0 0000 00591 NOP 01B1 0000 00592 NOP 01B2 0BAF 00593 DECFSZ _LOOP2, F ; decrement and leave result in LOOP2 00594 ; skip next statement if zero 01B3 29AC 00595 GOTO _DELAY_2 01B4 0BAE 00596 DECFSZ _LOOP1, F 01B5 29AA 00597 GOTO _DELAY_1 01B6 0008 00598 RETURN 00599 00600 ;----------------- 00601 00602 ; affichage word --> decimal 3 digits , de 000 a 999 01B7 00603 bcd999 01B7 0812 00604 movf val1,w 01B8 0096 00605 movwf valx 01B9 0813 00606 movf val1+1,w 01BA 0097 00607 movwf valx+1 01BB 0E12 00608 swapf val1,w 01BC 38F0 00609 iorlw 0xf0 01BD 008D 00610 movwf bmille 01BE 078D 00611 addwf bmille,f 01BF 3EE2 00612 addlw 0xE2 01C0 008E 00613 movwf bcent 01C1 3E32 00614 addlw 0x32 01C2 0090 00615 movwf bun 01C3 0812 00616 movf val1,w 01C4 390F 00617 andlw 0x0F 01C5 078E 00618 addwf bcent,f 01C6 078E 00619 addwf bcent,f MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01C7 0790 00620 addwf bun,f 01C8 3EE9 00621 addlw 0xE9 01C9 008F 00622 movwf bdix 01CA 078F 00623 addwf bdix,f 01CB 078F 00624 addwf bdix,f 01CC 0E13 00625 swapf val1+1,w 01CD 390F 00626 andlw 0x0F 01CE 078F 00627 addwf bdix,f 01CF 0790 00628 addwf bun,f 01D0 0D8F 00629 rlf bdix,f 01D1 0D90 00630 rlf bun,f 01D2 0990 00631 comf bun,f 01D3 0D90 00632 rlf bun,f 01D4 0813 00633 movf val1+1,w 01D5 390F 00634 andlw 0x0F 01D6 0790 00635 addwf bun,f 01D7 0D8D 00636 rlf bmille,f 01D8 3007 00637 movlw 0x07 01D9 008C 00638 movwf bdixmil 01DA 300A 00639 movlw 0x0A 01DB 0790 00640 Lb1: addwf bun,f 01DC 038F 00641 decf bdix,f 01DD 1C03 00642 btfss STATUS,C 01DE 29DB 00643 goto Lb1 01DF 078F 00644 Lb2: addwf bdix,f 01E0 038E 00645 decf bcent,f 01E1 1C03 00646 btfss STATUS,C 01E2 29DF 00647 goto Lb2 01E3 078E 00648 Lb3: addwf bcent,f 01E4 038D 00649 decf bmille,f 01E5 1C03 00650 btfss STATUS,C 01E6 29E3 00651 goto Lb3 01E7 078D 00652 Lb4: addwf bmille,f 01E8 038C 00653 decf bdixmil,f 01E9 1C03 00654 btfss STATUS,C 01EA 29E7 00655 goto Lb4 00656 01EB 080E 00657 movf bcent,w 01EC 3E30 00658 addlw '0' 01ED 2112 00659 call Choix_Out 01EE 080F 00660 movf bdix,w 01EF 3E30 00661 addlw '0' 01F0 2112 00662 call Choix_Out 01F1 0810 00663 movf bun,w 01F2 3E30 00664 addlw '0' 01F3 2112 00665 call Choix_Out 01F4 0816 00666 movf valx,w 01F5 0092 00667 movwf val1 01F6 0817 00668 movf valx+1,w 01F7 0093 00669 movwf val1+1 01F8 0008 00670 return 00671 ;--------- 2100 00672 ORG 0x2100 MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00673 ; "1234567890123456" 00674 ; message taille modulo 16 2100 3444 3453 3431 00675 EE0 DT "DS1624_2.asm",0 3436 3432 3434 345F 3432 342E 3461 3473 346D 3400 210D 3430 3435 3420 00676 EE1 DT "05 sept 05 ",0 3473 3465 3470 3474 3420 3430 3435 3420 3420 3420 3400 211B 3438 3434 342D 00677 EE2 DT "84-0054 04 " 3430 3430 3435 3434 3420 3430 3434 3420 2126 3420 3434 344D 00678 EE3 DT " 4Mhz ",0 3468 347A 3420 3420 3420 3420 3400 00679 00002130 00680 finEprom EQU $ 00681 00682 00683 00684 END MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 15 SYMBOL TABLE LABEL VALUE ACK 00000140 BEGIN_CNVT 00000092 C 00000000 CLOCK_PULSE 00000151 CONFIG_1624 0000007E CONT_IN 00000125 Choix_Out 00000112 Conf 0000001A DATA_IN 00000004 DC 00000001 DELAY_LONG 00000172 DELAY_N_MS 00000174 DELAY_SHORT 0000016C DELAY_SHORT_1 0000016E DEV_ADR 0000001C DebugInp 00000003 Delay 0000017D EE0 00002100 EE1 0000210D EE2 0000211B EE3 00002126 EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 EEPROM 00002100 F 00000001 FETCH_CONFIG 000000BE FSR 00000004 GIE 00000007 HIGH_SCL 00000161 HIGH_SDA 00000156 HI_ALM 00000001 INDF 00000000 INNER 00000176 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IN_BIT 0000011A IN_BYTE 00000116 IN_ONE 00000121 IN_ZERO 0000011E IRP 00000007 I_BYTE 0000001F LCD_Putchar 00000115 LOOP1 00000020 LOOP2 00000021 LOOP3 00000022 LOW_SCL 00000166 LOW_SDA 0000015B MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 16 SYMBOL TABLE LABEL VALUE LO_ALM 00000000 Lb1 000001DB Lb2 000001DF Lb3 000001E3 Lb4 000001E7 MAIN 00000057 MAIN1 0000005E MAIN2 00000078 MAIN3 0000007A MEASURE 000000A2 NACK 0000013A NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 OPTION_REG 00000081 OUTTER 00000174 OUT_BIT 0000012B OUT_BYTE 00000129 OUT_CONT 00000137 OUT_ONE 00000134 OUT_STR_1 000000D6 OUT_STR_11 000000D7 OUT_STR_12 000000DF OUT_STR_2 000000E0 OUT_STR_21 000000E1 OUT_STR_22 000000E9 OUT_STR_3 000000EA OUT_STR_31 000000EB OUT_STR_32 000000F3 OUT_ZERO 00000130 O_BYTE 0000001E Only_99 0000010D PCL 00000002 PCLATH 0000000A PORTA 00000005 PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 Pres1 0000000C Pres2 00000014 Pres3 00000017 Pres4 0000001F Pres5 00000022 RBIE 00000003 RBIF 00000000 RD 00000000 RP0 00000005 RP1 00000006 RS_2SPACES 0000019B RS_CRLF 00000194 RS_Putchar 00000182 MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 17 SYMBOL TABLE LABEL VALUE Rs_Port PORTA Rs_Tx 00000001 SCL 00000007 SDA 00000006 START 00000145 STATUS 00000003 STOP 0000014B STR_1_LOOKUP 0000002A STR_2_LOOKUP 0000003A STR_3_LOOKUP 00000042 STR_INDEX 0000001B T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 TC_HI 00000018 TC_LO 00000019 THF 00000006 TLF 00000005 TMR0 00000001 TRISA 00000085 TRISB 00000086 VARS 0000000C W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 _CP_OFF 00003FFF _CP_ON 0000000F _Cpt1 0000002D _DELAY10 000001A8 _DELAY_1 000001AA _DELAY_2 000001AC _DELAY_RS 0000002A _HS_OSC 00003FFE _LOOP1 0000002E _LOOP2 0000002F _LP_OSC 00003FFC _N 0000001D _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _RsByte 0000002B _RsCount 0000002C _SAVE_STAT 00000029 _SAVE_W 00000028 _SER_DATA 00000023 _SER_LOOP 00000024 _SER_TIME 00000025 _TEMP1 00000026 _TEMP2 00000027 _WDT_OFF 00003FFB MPASM 03.00 Released DS1624_2.ASM 9-5-2005 23:12:10 PAGE 18 SYMBOL TABLE LABEL VALUE _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 bank0 bcf STATUS,RP0 bank1 Bsf STATUS,RP0 bcd3 000000F4 bcd31 000000F8 bcd32 000000FF bcd33 00000106 bcd999 000001B7 bcent 0000000E bdix 0000000F bdixmil 0000000C bmille 0000000D btmp 00000011 bun 00000010 drapeau 00000030 finEprom 00002130 read_EE 000001A2 val1 00000012 val2 00000014 valx 00000016 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX 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 XXXXXXXXX------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ---------------- All other memory blocks unused. Program Memory Words Used: 505 Program Memory Words Free: 519 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 1 reported, 8 suppressed