MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;7 aout 05 RS232 affecté par init LCD si placé avant , sinon no probleme placé apres??? no comprendo 00002 ; si init LCD apres envoi RS232 no problemo 00003 ;31 juill 05 rajout sortie en mV aussi sur RS232 00004 ;26juill 05 avec Vref=2,048V au lieu de 2,500V pour 65535 points 00005 ; => affichage 2,048XX mV avec xx à +- 0,03mV 00006 ;25 juil 05 réorganisation Pin vers AD7715 + sortie RS232 00007 ;24 juillet 2005 version AD7715Lh : LCD 1 ligne 16car Only! 00008 ;24 juillet 05 version AD7715Sh : RS232 only ! 00009 ; rajout cde CS du AD7715 via port A,3 00010 ;21 juillet version AD7715sg PB : maxi lecture =25977 au lieu de 65535 00011 ; ce meme interface donne 65535 sous VB6 ! 00012 ;------------------ 00013 ; routine LCD 2lignes de 8 car 6 bits I/O : PortB 7 6 5 4 et PortA 0 1 00014 ; inclus routine delai4m.inc @4MHz 00015 ; programme simple pour decoder/ lire Telecommande Infrarouge Marantz 5200 00016 ;******************************************************* 00017 ; Quartz = 4MHz 00018 ; Cycle = 1/Fosc = 1uSec 00019 ;******************************************************* 00020 ;#define miniSimDE 00021 00022 ifdef miniSimDE 00023 p=16F84 00024 00025 ;========================================================================== 00026 00027 ; Register Definitions 00028 00029 ;========================================================================== 00030 00031 W EQU H'0000' 00032 F EQU H'0001' 00033 00034 ;----- Register Files------------------------------------------------------ 00035 00036 INDF EQU H'0000' 00037 TMR0 EQU H'0001' 00038 PCL EQU H'0002' 00039 STATUS EQU H'0003' 00040 FSR EQU H'0004' 00041 PORTA EQU H'0005' 00042 PORTB EQU H'0006' 00043 EEDATA EQU H'0008' 00044 EEADR EQU H'0009' 00045 PCLATH EQU H'000A' 00046 INTCON EQU H'000B' 00047 00048 OPTION_REG EQU H'0081' 00049 TRISA EQU H'0085' 00050 TRISB EQU H'0086' 00051 EECON1 EQU H'0088' 00052 EECON2 EQU H'0089' 00053 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ;----- STATUS Bits -------------------------------------------------------- 00055 00056 IRP EQU H'0007' 00057 RP1 EQU H'0006' 00058 RP0 EQU H'0005' 00059 NOT_TO EQU H'0004' 00060 NOT_PD EQU H'0003' 00061 Z EQU H'0002' 00062 DC EQU H'0001' 00063 C EQU H'0000' 00064 00065 ;----- INTCON Bits -------------------------------------------------------- 00066 00067 GIE EQU H'0007' 00068 EEIE EQU H'0006' 00069 TOIE EQU H'0005' 00070 INTE EQU H'0004' 00071 RBIE EQU H'0003' 00072 TOIF EQU H'0002' 00073 INTF EQU H'0001' 00074 RBIF EQU H'0000' 00075 00076 ;----- OPTION Bits -------------------------------------------------------- 00077 00078 NOT_RBPU EQU H'0007' 00079 INTEDG EQU H'0006' 00080 TOCS EQU H'0005' 00081 TOSE EQU H'0004' 00082 PSA EQU H'0003' 00083 PS2 EQU H'0002' 00084 PS1 EQU H'0001' 00085 PS0 EQU H'0000' 00086 00087 ;----- EECON1 Bits -------------------------------------------------------- 00088 00089 EEIF EQU H'0004' 00090 WRERR EQU H'0003' 00091 WREN EQU H'0002' 00092 WR EQU H'0001' 00093 RD EQU H'0000' 00094 00095 ;========================================================================== 00096 00097 ; RAM Definition 00098 00099 ;========================================================================== 00100 00101 __MAXRAM H'CF' 00102 __BADRAM H'07', H'50'-H'7F', H'87' 00103 00104 ;========================================================================== 00105 00106 ; Configuration Bits MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00107 00108 ;========================================================================== 00109 00110 _CP_ON EQU H'000F' 00111 _CP_OFF EQU H'3FFF' 00112 _PWRTE_ON EQU H'3FF7' 00113 _PWRTE_OFF EQU H'3FFF' 00114 _WDT_ON EQU H'3FFF' 00115 _WDT_OFF EQU H'3FFB' 00116 _LP_OSC EQU H'3FFC' 00117 _XT_OSC EQU H'3FFD' 00118 _HS_OSC EQU H'3FFE' 00119 _RC_OSC EQU H'3FFF' 00120 ;============= 00121 00122 EEPROM EQU 0x2100 00123 #define bank0 bcf STATUS,RP0 00124 #define bank1 bsf STATUS,RP0 00125 00126 ELSE 00127 00128 ERRORLEVEL -302 00129 Processor 16F84 00130 include <..\COMMON\p16f84_.inc> 00001 LIST 00002 ; personalisation 20/10/02 00003 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00142 LIST 00131 ENDIF 00132 00133 Radix DEC 00134 EXPAND 2007 3FF1 00135 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC 00136 00137 ;***************************************************************************** 00138 ; Equates, I/O, vars 00139 ;***************************************************************************** 00000000 00140 RESET_V EQU 0x0000 ; Address of RESET Vector 00000004 00141 ISR_V EQU 0x0004 ; Address of Interrupt Vector 00142 ;OSC_FREQ EQU 4000000 ; Oscillator Frequency is 4 MHz Quartz 0036A060 00143 OSC_FREQ EQU 3580000 ; Oscillator Frequency is 3.58MHz Cermique resonator 00144 ; afficheur LCD en mode 4 bits 00000086 00145 LCD_DATA_TRIS EQU TRISB ; LCD DATA Port B 00000006 00146 LCD_DATA EQU PORTB ; LCD DATA 11,12,13,14 bits 4,5,6,7 00000085 00147 LCD_CTRL_TRIS EQU TRISA ; LCD CTRL Port A 00000005 00148 LCD_CTRL EQU PORTA ; LCD CTRL 4,5,6 bits 0,1,2 00149 ; LCD 0V 1 00150 ; LCD +5V 2 00151 IFDEF minisimDE 00152 LCD_E EQU 2 ; LCD: 6 de commande de controle de l'afficheur 00153 LCD_RW EQU 1 ; LCD: 5 de Lecture/Ecriture de l'afficheur 00154 LCD_RS EQU 0 ; LCD: 4 de selection de l'afficheur-> RA0 00155 else MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000001 00156 LCD_E EQU 1 ; LCD: 6 de commande de controle de l'afficheur 00000000 00157 LCD_RS EQU 0 ; LCD: 4 de selection de l'afficheur-> RA0 00158 ;RW forcé à ZERo ; LCD: 5 de Lecture/Ecriture de l'afficheur 00159 00160 endif 00000080 00161 LINE1 EQU 0x080 ; Set display to line 1 character 0 000000C0 00162 LINE2 EQU 0x0C0 ; Set display to line 2 character 0 00163 00164 ;----------------------- 00165 00166 #define CLCK PORTB,3 ;OUT -> 1 AD7715 SCLCK 00167 #define DRDY PORTB,2 ;IN <- 12 AD7715 /DRDY 00168 #define DOUT PORTB,1 ;IN <- 13 AD7715 DOUT 00169 #define DIN PORTB,0 ;OUT -> 14 AD7715 DIN 00170 #define CS PORTA,3 ;OUT -> 4 AD7715 CS 00171 #define SERIAL_TX PORTA,4 ; ->trans 11 du Max232 (RS232) 00172 ; +5V -------------------> 5 AD7715 Reset 00173 ; +5V -------------------> 6 AD7715 AVdd 00174 ; +5V -------------------> 15 AD7715 DVdd 00175 ; 0v -------------------> 16 AD7715 DGnd 00176 ; 0v -------------------> 11 AD7715 AGnd 00177 ; 0V -------------------> 8 AD7715 AIn(-) 00178 ; 0V -------------------> 10 AD7715 Ref(-) 00179 ; LT1009 2,05V -----------> 9 AD7715 Ref(+) 00180 ; ANA input -----------> 7 AD7715 AIn(+) 00181 00182 #define out_RS232 bsf drapeau,2 00183 #define out_LCD bcf drapeau,2 00184 ;--------------- 00185 00186 IFDEF minisimDE 00187 #DEFINE RAMstart 0x0C ; pour 16F84 00188 IndexP EQU RAMstart 00189 Cpt1 EQU RAMstart+1 ; A counter, used multiple places 00190 count1 EQU RAMstart+2 00191 count2 EQU RAMstart+3 00192 count3 EQU RAMstart+4 00193 LCDtmp EQU RAMstart+5 00194 LCDtmp1 EQU RAMstart+6 00195 ; variable pour convertion binaire --> BCD 16bits 00196 bdixmil EQU RAMstart+10 00197 bmille EQU RAMstart+11 00198 bcent EQU RAMstart+12 00199 bdix EQU RAMstart+13 00200 bun EQU RAMstart+14 00201 btmp EQU RAMstart+15 00202 ; variables pour calcul 16 bits 00203 valx EQU RAMstart+16 00204 val1 EQU RAMstart+18 ; MSB puis LSB 00205 val2 EQu Ramstart+20 00206 AdcNow EQU RamStart+22 00207 Moyenne EQU RamStart+24 00208 CptV EQU RamStart+26 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00209 result EQU RAMstart+28 00210 ;--- 00211 TREG EQU RamStart+30 00212 RCount EQU RamStart+31 00213 RBuffer EQU RamStart+32 00214 ECount EQU RamStart+33 00215 EBuffer EQU RamStart+34 00216 CCount EQU RamStart+35 00217 CBuffer EQU RamStart+36 00218 drapeau EQU RAMstart+37 00219 reste EQU RAMstart+38 00220 00221 LastRam EQU RAMstart+39 00222 else 00223 cblock 0x0C 0000000C 00224 IndexP 0000000D 00225 Cpt1 0000000E 00226 count1 0000000F 00227 count2 00000010 00228 count3 00000011 00229 LCDtmp 00000012 00230 LCDtmp1 00231 ; variable pour convertion binaire --> BCD 16bits 00000013 00232 bdixmil 00000014 00233 bmille 00000015 00234 bcent 00000016 00235 bdix 00000017 00236 bun 00000018 00237 btmp 00238 00239 ; variables pour calcul 16 bits 00000019 00240 CptV:2 0000001B 00241 valx:2 0000001D 00242 val1:2 0000001F 00243 val2:2 00000021 00244 result:2 00000023 00245 AdcNow:2 00000025 00246 Moyenne:2 00000027 00247 TREG 00000028 00248 RCount 00000029 00249 RBuffer 0000002A 00250 ECount 0000002B 00251 EBuffer 0000002C 00252 CCount 0000002D 00253 CBuffer 0000002E 00254 drapeau 0000002F 00255 reste 00000030 00256 LastRam 00257 endc 00258 endif 00259 00260 ;drapeau:3= choix format 1=XX 0=XXX pour bcd3 00261 ;drapeau:2= choix output 1=Rs232 0=LCD MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00262 ;drapeau:1= choix format 1=XXXX.X 0=XXXXX pour bcd5 00263 ;drapeau:0 pour effacer zero inutile 00264 00265 IF ( (LastRam) > 0x4F ) 00266 ERROR "Attention debordement zone RAM" 00267 ENDIF 00268 ;************************************************************** 00269 ; Program start 00270 ;************************************************************** 0000 00271 ORG RESET_V ; RESET vector location 0000 00272 RESET 0000 283F 00273 GOTO DEBUT 00274 ;************************************************************** 00275 ; This is the Periperal Interrupt routine. Should NOT get here 00276 ;************************************************************** 0004 00277 ORG ISR_V ; Interrupt vector location 0004 1283 00278 INTERRUPT BCF STATUS, RP0 ; Select bank 0 0005 0000 00279 nop 0006 0000 00280 nop 0007 2804 00281 GOTO INTERRUPT 00282 00283 ;============================================================================= 00284 ; Table message to display: kept right up front to avoid crossing 0xff boundary 00285 ;============================================================================= 00286 0008 00287 TABLE_ST 00288 IFDEF miniSimDE 00289 ADDLW 0xFF ;-1 car PCL incrementé sur instruction MOVWF !!! 00290 ENDIF 0008 0082 00291 MOVWF PCL 00292 0009 00293 MSG_InitAD 0009 3449 00294 RETLW 'I' 000A 344E 00295 RETLW 'N' 000B 3449 00296 RETLW 'I' 000C 3454 00297 RETLW 'T' 000D 3420 00298 RETLW ' ' 000E 3441 00299 RETLW 'A' 000F 3444 00300 RETLW 'D' 0010 3443 00301 RETLW 'C' 0011 3420 00302 RETLW ' ' 0012 3400 00303 RETLW 0x00 00304 0013 00305 MSG_TREG 0013 3454 00306 RETLW 'T' 0014 3452 00307 RETLW 'R' 0015 3445 00308 RETLW 'E' 0016 3447 00309 RETLW 'G' 0017 343D 00310 RETLW '=' 0018 3400 00311 RETLW 0x00 00312 0019 00313 MSG_OK 0019 3420 00314 RETLW ' ' MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001A 344F 00315 RETLW 'O' 001B 344B 00316 RETLW 'K' 001C 3400 00317 RETLW 0x00 001D 00318 MSG_PB 001D 3420 00319 RETLW ' ' 001E 3442 00320 RETLW 'B' 001F 3441 00321 RETLW 'A' 0020 3444 00322 RETLW 'D' 0021 342E 00323 RETLW '.' 0022 3400 00324 RETLW 0x00 0023 00325 MSG_AutoCal 0023 3441 00326 RETLW 'A' 0024 3455 00327 RETLW 'U' 0025 3454 00328 RETLW 'T' 0026 344F 00329 RETLW 'O' 0027 342D 00330 RETLW '-' 0028 3443 00331 RETLW 'C' 0029 3441 00332 RETLW 'A' 002A 344C 00333 RETLW 'L' 002B 3400 00334 RETLW 0x00 00335 002C 00336 MSG_Normal 002C 344E 00337 RETLW 'N' 002D 344F 00338 RETLW 'O' 002E 3452 00339 RETLW 'R' 002F 344D 00340 RETLW 'M' 0030 3441 00341 RETLW 'A' 0031 344C 00342 RETLW 'L' 0032 3400 00343 RETLW 0x00 00344 0033 00345 MSG_mV 0033 344D 00346 RETLW 'M' 0034 3456 00347 RETLW 'V' 0035 3400 00348 RETLW 0x00 00349 0036 00350 MSG_Mesure 0036 344D 00351 RETLW 'M' 0037 3445 00352 RETLW 'E' 0038 3453 00353 RETLW 'S' 0039 343D 00354 RETLW '=' 003A 3400 00355 RETLW 0x00 003B 00356 MSG_NB 003B 344E 00357 RETLW 'N' 003C 3442 00358 RETLW 'B' 003D 343D 00359 RETLW '=' 003E 3400 00360 RETLW 0x00 00361 00362 00363 ;***************************************************************************** 00364 ; Initialize processor registers 00365 ;***************************************************************************** 003F 00366 DEBUT: ; POWER_ON Reset (Beginning of program) 003F 0183 00367 CLRF STATUS ; Do initialization, Select bank 0 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0040 018B 00368 CLRF INTCON ; Clear int-flags, Disable interrupts 0041 018A 00369 CLRF PCLATH ; Keep in lower 2KByte 0042 0185 00370 CLRF PORTA ; ALL PORT outputs should output Low. 0043 0186 00371 CLRF PORTB 0044 019B 00372 CLRF valx ;MSB 0045 019C 00373 CLRF valx+1 ;LSB 0046 019F 00374 CLRF val2 ;MSB 0047 01A0 00375 CLRF val2+1 ;LSB 0048 019D 00376 CLRF val1 0049 019E 00377 CLRF val1+1 004A 01A3 00378 CLRF AdcNow 004B 01A4 00379 CLRF AdcNow+1 004C 0199 00380 CLRF CptV 004D 019A 00381 CLRF CptV+1 004E 01AE 00382 CLRF drapeau 004F 01AD 00383 CLRF CBuffer 0050 1683 00384 bank1 0051 3000 00385 MOVLW 0x00 ;all outputs 0052 0085 00386 MOVWF TRISA 0053 3006 00387 MOVLW 0x06 ; RB-7-6-5-4-3-0 =outputs RB-1-2= inputs 0054 0086 00388 MOVWF TRISB 0055 3007 00389 MOVLW 0x07 ; Option register setup: 00390 ; RB Pullups 00391 ; TMR0 fed from internal clock 00392 ; Assign prescaler to TMR0 00393 ; use 1/256 prescaling ratio 0056 0081 00394 MOVWF OPTION_REG 0057 1283 00395 bank0 00396 ; out_LCD 00397 ; CALL LCD_Init 00398 ; Initialize LCDisplay génere une polution ensuite sur la RS232!!!! 00399 ;============================ 0058 00400 Presentation 0058 152E 00401 out_RS232 0059 2319 00402 call CRLF 005A 3054 00403 movlw 'T' 005B 2316 00404 call Choix_Out 005C 3053 00405 movlw 'S' 005D 2316 00406 call Choix_Out 005E 3054 00407 movlw 'T' 005F 2316 00408 call Choix_Out 0060 2319 00409 call CRLF 00410 0061 018D 00411 clrf Cpt1 0062 080D 00412 Pres1 movf Cpt1,w 0063 2330 00413 CALL read_EE 0064 0A8D 00414 incf Cpt1,f 0065 39FF 00415 ANDLW 0x0FF ; test sur (W) 0066 1903 00416 BTFSC STATUS, Z ; zero= fin de message ? 0067 286A 00417 GOTO Pres2 0068 2316 00418 Call Choix_Out 0069 2862 00419 goto Pres1 006A 00420 Pres2 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 006A 112E 00421 out_LCD 006B 21EB 00422 CALL LCD_Init ; Initialize LCDisplay 006C 3080 00423 MOVLW LINE1 006D 2213 00424 CALL LCD_Cde ; Set to first line 006E 300E 00425 movlw EE1-EE0 006F 008D 00426 MOVWF Cpt1 0070 080D 00427 Pres3 movf Cpt1,w 0071 2330 00428 CALL read_EE 0072 0A8D 00429 incf Cpt1,f 0073 39FF 00430 ANDLW 0x0FF ; test sur (W) 0074 1903 00431 BTFSC STATUS, Z ; zero= fin de message ? 0075 2878 00432 GOTO Pres4 0076 21D2 00433 call LCD_Putchar 0077 2870 00434 goto Pres3 0078 2279 00435 Pres4 call delay_1s 00436 0079 21C3 00437 call LCD_Clear1 007A 3080 00438 MOVLW LINE1 007B 2213 00439 CALL LCD_Cde ; Set to first line 007C 301C 00440 movlw EE2-EE0 007D 008D 00441 MOVWF Cpt1 007E 080D 00442 Pres5 movf Cpt1,w 007F 2330 00443 CALL read_EE 0080 0A8D 00444 incf Cpt1,f 0081 39FF 00445 ANDLW 0x0FF ; test sur (W) 0082 1903 00446 BTFSC STATUS, Z ; zero= fin de message ? 0083 2886 00447 GOTO Pres6 0084 21D2 00448 call LCD_Putchar 0085 287E 00449 goto Pres5 0086 00450 Pres6 0086 2280 00451 call delay_2_5s 0087 21C3 00452 call LCD_Clear1 0088 3080 00453 MOVLW LINE1 0089 2213 00454 CALL LCD_Cde 008A 3009 00455 MOVLW MSG_InitAD ; Point to Command messag 008B 21B6 00456 CALL TABLE_MSG ; Display the message 00457 008C 2163 00458 call InitAD7715 00459 008D 2279 00460 call delay_1s 00461 008E 21C3 00462 call LCD_Clear1 008F 3080 00463 MOVLW LINE1 0090 2213 00464 CALL LCD_Cde 0091 3013 00465 MOVLW MSG_TREG 0092 21B6 00466 CALL TABLE_MSG 0093 21A1 00467 Call Lecture_Reg 0094 0827 00468 movf TREG,W 0095 228E 00469 call bcd3 0096 0827 00470 movf TREG,W ; test TREGister doit etre null 0097 39FF 00471 andlw 0xFF 0098 1D03 00472 btfss STATUS,Z 0099 289C 00473 goto Pres7 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009A 3019 00474 MOVLW MSG_OK 009B 289D 00475 goto Pres8 009C 301D 00476 Pres7 MOVLW MSG_PB ; Point to Command message 009D 21B6 00477 Pres8 CALL TABLE_MSG ; Display the message 009E 2279 00478 call delay_1s 00479 009F 2178 00480 call AutoCalibration 00481 00A0 21C3 00482 call LCD_Clear1 00A1 3080 00483 MOVLW LINE1 00A2 2213 00484 CALL LCD_Cde 00A3 3023 00485 MOVLW MSG_AutoCal 00A4 21B6 00486 CALL TABLE_MSG 00A5 2279 00487 call delay_1s 00A6 21C3 00488 call LCD_Clear1 00A7 3080 00489 MOVLW LINE1 00A8 2213 00490 CALL LCD_Cde 00A9 302C 00491 MOVLW MSG_Normal 00AA 21B6 00492 CALL TABLE_MSG 00AB 2279 00493 call delay_1s 00494 00AC 152E 00495 out_RS232 00496 00AD 2319 00497 call CRLF 00AE 300E 00498 movlw EE1-EE0 00AF 008D 00499 MOVWF Cpt1 00B0 080D 00500 Pres9 movf Cpt1,w 00B1 2330 00501 CALL read_EE 00B2 0A8D 00502 incf Cpt1,f 00B3 39FF 00503 ANDLW 0x0FF ; test sur (W) 00B4 1903 00504 BTFSC STATUS, Z ; zero= fin de message ? 00B5 28B8 00505 GOTO Pres10 00B6 231E 00506 call Send_Char 00B7 28B0 00507 goto Pres9 00B8 2319 00508 Pres10 call CRLF 00509 00B9 00510 Boucle_ICI ; boucle principale ------------------------------ 00B9 112E 00511 out_LCD 00BA 0000 00512 Wait_DRDY nop 00BB 1906 00513 btfsc DRDY ; attendre etat DRDY=0 00BC 28BA 00514 goto Wait_DRDY 00515 00BD 217D 00516 call Lecture_AD7715 00517 00518 ; out_RS232 00519 ; movf AdcNow,w ;MSB 00520 ; movwf val1 00521 ; movf AdcNow+1,w ; LSB 00522 ; movwf val1+1 00523 ; call bcd5V 00524 ; movlw ' ' 00525 ; call Choix_Out 00526 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00BE 112E 00527 out_LCD 00BF 21C3 00528 call LCD_Clear1 00C0 3080 00529 MOVLW LINE1 00C1 2213 00530 CALL LCD_Cde 00C2 3036 00531 MOVLW MSG_Mesure 00C3 21B6 00532 CALL TABLE_MSG 00533 00534 ; 65536 / 32 = 2048 si ref =2,048V 00535 ; affichage 2.048 avec reste de la division xx en 1/32 de mV 00536 ; affichage en 1/100em de mV 00537 00C4 0823 00538 movf AdcNow,w ;MSB 00C5 009D 00539 movwf val1 00C6 0824 00540 movf AdcNow+1,w ; LSB 00C7 009E 00541 movwf val1+1 00C8 01AF 00542 clrf reste 00C9 3005 00543 movlw 5 00CA 008D 00544 movwf Cpt1 00CB 00545 div_32 00CB 1003 00546 bcf STATUS,C 00CC 0C9D 00547 RRF val1,F ;HSB 00CD 0C9E 00548 RRF val1+1,F ;MSB 00CE 0CAF 00549 RRF reste,F ;LSB 00CF 0B8D 00550 decfsz Cpt1,f 00D0 28CB 00551 goto div_32 00552 ;sauve mesure apres mise à l'echelle HSB,MSB 00D1 081D 00553 movf val1,w ;MSB 00D2 00A3 00554 movwf AdcNow 00D3 081E 00555 movf val1+1,w ; LSB 00D4 00A4 00556 movwf AdcNow+1 00D5 22AC 00557 call bcd5V 00D6 302E 00558 movlw '.' 00D7 2316 00559 call Choix_Out 00D8 308A 00560 MOVLW LINE1+10 00D9 2213 00561 CALL LCD_Cde 00562 ; xx reste ramné en % de mV 00563 ; soit: reste *100 /256 00564 ; donc 2047.97mV pour 65535 00DA 019D 00565 clrf val1 ; MSB=0 00DB 019F 00566 clrf val2 ; MSB=0 00DC 3064 00567 movlw 100 00DD 009E 00568 movwf val1+1 00DE 082F 00569 movf reste,W 00DF 00A0 00570 movwf val2+1 00E0 214B 00571 call mult16 ; val1=val1*val2 00572 ; val1 contient le Reste x100 00E1 3008 00573 movlw 8 00E2 008D 00574 movwf Cpt1 00E3 00575 div_256 00E3 1003 00576 bcf STATUS,C 00E4 0C9D 00577 rrf val1,F ;HSB 00E5 0C9E 00578 RRF val1+1,F ;MSB 00E6 0B8D 00579 decfsz Cpt1,f MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00E7 28E3 00580 goto div_256 00E8 15AE 00581 bsf drapeau,3 ; pour affichage 2 digits seulement 00E9 081E 00582 movf val1+1,W 00EA 00AF 00583 movwf reste ; sauvegarde reste 00EB 228E 00584 call bcd3 00EC 11AE 00585 bCf drapeau,3 ; retour à affichage 3 digits 00ED 308D 00586 MOVLW LINE1+13 00EE 2213 00587 CALL LCD_Cde 00EF 3033 00588 MOVLW MSG_mV 00F0 21B6 00589 CALL TABLE_MSG 00F1 2272 00590 call delay_500ms 00591 00F2 152E 00592 out_RS232 00F3 2319 00593 call CRLF 00594 ; compteur de passage 0 à 1000 00F4 303B 00595 MOVLW MSG_NB 00F5 21B6 00596 CALL TABLE_MSG 00F6 0A9A 00597 INCF CptV+1,F ; incremente LSB 00F7 1903 00598 BTFSC STATUS,Z ; si debordement LSB=0=256 00F8 0A99 00599 incf CptV,F ; incremente MSB 00600 ;16 bit subtraction with borrow by Rudy Wieser 00F9 0819 00601 movf CptV,w 00FA 009D 00602 movwf val1 00FB 081A 00603 movf CptV+1,w 00FC 009E 00604 movwf val1+1 00FD 3003 00605 movlw 1000 >> 8 ; MSB 00FE 009F 00606 movwf val2 00FF 30E8 00607 movlw 1000 % 256 ; LSB 0100 00A0 00608 movwf val2+1 0101 0820 00609 movf val2+1,W ; source 0102 029E 00610 subwf val1+1,F ; dest 0103 081F 00611 movf val2,W 0104 1C03 00612 btfss STATUS,C 0105 0F1F 00613 incfsz val2,W 0106 029D 00614 subwf val1,F ;dest = dest - source, WITH VALID CARRY 0107 1C03 00615 btfss STATUS,C 0108 290B 00616 goto B_1 00617 ;turn over 999 donc RAZ 0109 0199 00618 clrf CptV 010A 019A 00619 CLRF CptV+1 010B 0819 00620 B_1 movf CptV,w 010C 009D 00621 movwf val1 010D 081A 00622 movf CptV+1,w 010E 009E 00623 movwf val1+1 010F 15AE 00624 bsf drapeau,3 ; affichage 3 digits soit 999 maxi 0110 22AC 00625 call bcd5V 0111 11AE 00626 bCf drapeau,3 ; affiche 5 digits maxi 65535 0112 3009 00627 movlw 9 ; tabulation 0113 2316 00628 call Choix_Out 0114 0823 00629 movf AdcNow,w ; MSB 0115 009D 00630 movwf val1 0116 0824 00631 movf AdcNow+1,w ; LSB 0117 009E 00632 movwf val1+1 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0118 22AC 00633 call bcd5V ; sortie valeur sur RS232 0119 302E 00634 movlw '.' 011A 2316 00635 call Choix_Out 011B 082F 00636 movf reste,W 011C 15AE 00637 bsf drapeau,3 ; pour affichage 2 digits seulement 011D 228E 00638 call bcd3 011E 11AE 00639 bCf drapeau,3 ; retour à affichage 3 digits 011F 2319 00640 call CRLF 00641 0120 2272 00642 call delay_500ms 0121 28B9 00643 goto Boucle_ICI 00644 00645 00646 ;***************************************** 00647 ; Sous-programmes specifiques AD7715 00648 ;***************************************** 0122 00649 Envoie_Cde 0122 1185 00650 bcf CS 0123 00AB 00651 movwf EBuffer 0124 1586 00652 bsf CLCK 0125 3008 00653 Movlw 8 ;correspond à un byte de 8 bits 0126 00AA 00654 Movwf ECount ;place dans RCount 0127 00655 Envoie_1 0127 1186 00656 Bcf CLCK 0128 0000 00657 nop 0129 1003 00658 BCF STATUS,C 012A 0DAB 00659 Rlf EBuffer,F ;shift gauche dans carry 012B 1803 00660 Btfsc STATUS,C ;si carry 0 alors saute 012C 292F 00661 Goto Envoie_2 ;carry =1 012D 1006 00662 BCF DIN 012E 2930 00663 Goto Envoie_3 012F 00664 Envoie_2 012F 1406 00665 BSF DIN 0130 00666 Envoie_3 0130 0000 00667 nop 0131 1586 00668 BSF CLCK 0132 0000 00669 nop 0133 0BAA 00670 Decfsz ECount,F ;ECount =ECount -1 0134 2927 00671 Goto Envoie_1 0135 0000 00672 nop 0136 1586 00673 bsf CLCK 0137 0000 00674 nop 0138 1585 00675 bsf CS 0139 0008 00676 return 00677 ;------------------- 013A 00678 microdelai 013A 0000 00679 nop 013B 0000 00680 nop 013C 0000 00681 nop 013D 0000 00682 nop 013E 0000 00683 nop 013F 0000 00684 nop 0140 0000 00685 nop MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0141 0000 00686 nop 0142 0000 00687 nop 0143 0000 00688 nop 0144 0000 00689 nop 0145 0000 00690 nop 0146 0000 00691 nop 0147 0000 00692 nop 0148 0000 00693 nop 0149 0000 00694 nop 014A 0008 00695 return 00696 ;----------------------- 014B 01A1 00697 mult16 clrf result ; multiplication 16 bits 014C 01A2 00698 clrf result+1 ; val1 = val1 * val2 014D 3010 00699 movlw 16 014E 008E 00700 movwf count1 014F 0C9D 00701 mult161 rrf val1,f 0150 0C9E 00702 rrf val1+1,f 0151 1C03 00703 btfss STATUS,C 0152 2959 00704 goto mult162 0153 081F 00705 movf val2,w 0154 07A1 00706 addwf result,f 0155 0820 00707 movf val2+1,w 0156 07A2 00708 addwf result+1,f 0157 1803 00709 btfsc STATUS,C 0158 0AA1 00710 incf result,f 0159 1003 00711 mult162 bcf STATUS,C 015A 0DA0 00712 rlf val2+1,f 015B 0D9F 00713 rlf val2,f 015C 0B8E 00714 decfsz count1,f 015D 294F 00715 goto mult161 015E 00716 fin16 015E 0821 00717 movf result,w 015F 009D 00718 movwf val1 0160 0822 00719 movf result+1,w 0161 009E 00720 movwf val1+1 0162 0008 00721 return 00722 00723 ;----------------------- 0163 00724 InitAD7715 00725 ; 32 bits à 1 et 8 bits à 0 -> TREG 0163 3020 00726 movlw 0x20 0164 2122 00727 call Envoie_Cde 0165 30FF 00728 movlw 0xFF 0166 2122 00729 call Envoie_Cde 0167 3020 00730 movlw 0x20 0168 2122 00731 call Envoie_Cde 0169 30FF 00732 movlw 0xFF 016A 2122 00733 call Envoie_Cde 016B 3020 00734 movlw 0x20 016C 2122 00735 call Envoie_Cde 016D 30FF 00736 movlw 0xFF 016E 2122 00737 call Envoie_Cde 016F 3020 00738 movlw 0x20 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0170 2122 00739 call Envoie_Cde 0171 30FF 00740 movlw 0xFF 0172 2122 00741 call Envoie_Cde 0173 3020 00742 movlw 0x20 0174 2122 00743 call Envoie_Cde 0175 3000 00744 movlw 0x00 0176 2122 00745 call Envoie_Cde 0177 0008 00746 return 00747 00748 ;---------------------------------- 0178 00749 AutoCalibration 0178 3010 00750 movlw 0x10 ; acces reg SETUP en ecriture 0179 2122 00751 call Envoie_Cde 017A 3044 00752 movlw 0x44 ; setup =Autocal Unipolar 017B 2122 00753 call Envoie_Cde 00754 ; movlw 0x10 ; acces reg SETUP en ecriture 00755 ; call Envoie_Cde 00756 ; movlw 0x04 ; setup= Normal Unipolar 00757 ; call Envoie_Cde 017C 0008 00758 return 00759 ;---------------------------- 017D 00760 Lecture_AD7715 00761 017D 01A3 00762 clrf AdcNow 017E 01A4 00763 clrf AdcNow+1 017F 1586 00764 bsf CLCK 0180 3038 00765 movlw 0x38 ; mode lecture DATA 16 bits 0181 2122 00766 call Envoie_Cde 0182 2256 00767 call delay_1ms 0183 1185 00768 bcf CS ; /CS=0=chip select ON 0184 0000 00769 nop 0185 3008 00770 movlw 8 ; MSB 0186 00A8 00771 movwf RCount 0187 00772 Lect_4 0187 1186 00773 bcf CLCK ; clk =0 0188 213A 00774 call microdelai 0189 1003 00775 bcf STATUS,C ; C=0 018A 0000 00776 nop 018B 1886 00777 btfsc DOUT ; lecture Bit data 018C 1403 00778 bsf STATUS,C ; C=1 018D 0DA3 00779 RLF AdcNow,F ; rotation à gauche via carry 018E 1586 00780 bsf CLCK ; clk =1 018F 213A 00781 call microdelai 0190 0BA8 00782 Decfsz RCount,F 0191 2987 00783 Goto Lect_4 00784 0192 3008 00785 movlw 8 ; LSB 0193 00A8 00786 movwf RCount 0194 00787 Lect_5 0194 1186 00788 bcf CLCK ; clk =0 0195 213A 00789 call microdelai 0196 1003 00790 bcf STATUS,C ; C=0 0197 0000 00791 nop MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0198 1886 00792 btfsc DOUT ; lecture Bit data 0199 1403 00793 bsf STATUS,C ; C=1 019A 0DA4 00794 RLF AdcNow+1,F ; rotation à gauche via carry 019B 1586 00795 bsf CLCK ; clk =1 019C 213A 00796 call microdelai 019D 0BA8 00797 Decfsz RCount,F 019E 2994 00798 Goto Lect_5 019F 1585 00799 bsf CS 01A0 0008 00800 return 00801 ;------------------------------- 01A1 00802 Lecture_Reg 01A1 3028 00803 movlw 0x28 01A2 2122 00804 call Envoie_Cde 01A3 1185 00805 bcf CS ; /CS=0=chip select ON 01A4 0000 00806 nop 01A5 01A7 00807 clrf TREG 01A6 3008 00808 movlw 8 ; LSB 01A7 00A8 00809 movwf RCount 01A8 00810 Lecture_2 01A8 1186 00811 bcf CLCK ; clock=0 01A9 213A 00812 call microdelai 01AA 1003 00813 bcf STATUS,C ; C=0 01AB 1886 00814 btfsc DOUT 01AC 1403 00815 bsf STATUS,C ; C=1 01AD 0DA7 00816 RLF TREG,F ; rotation à gauche via carry 01AE 1586 00817 bsf CLCK ; clk =1 01AF 213A 00818 call microdelai 01B0 0BA8 00819 Decfsz RCount,F 01B1 29A8 00820 Goto Lecture_2 01B2 1586 00821 bsf CLCK 01B3 0000 00822 nop 01B4 1585 00823 bsf CS ; /CS=1=chip select OFF 01B5 0008 00824 return 00825 00826 00827 ;************************************************************** 00828 ; Envoi de message via table de message dans la zone programme 00829 ;************************************************************** 01B6 00830 TABLE_MSG 01B6 008D 00831 MOVWF Cpt1 ; Point to the first char. we want 01B7 00832 LOOP_WR 01B7 080D 00833 MOVF Cpt1,W ; Renew the pointer 01B8 2008 00834 CALL TABLE_ST ; Initiate table lookup 01B9 3A00 00835 XORLW 0x00 ; Is this the terminating char? 01BA 1903 00836 BTFSC STATUS,Z 01BB 29BF 00837 GOTO END_WR 01BC 2316 00838 call Choix_Out ; CALL LCD_Putchar ; Actually put the char on display 01BD 0A8D 00839 INCF Cpt1,f ; Point to the next char 01BE 29B7 00840 GOTO LOOP_WR ; Do next character 01BF 00841 END_WR 01BF 0008 00842 RETURN 00843 ;========================= 00844 ; rev 24 juill 05 ldc4d.inc rajout tempo dans init MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00845 ;pour LCD 1 ligne de 16car 00846 ;----------------- 00847 01C0 00848 LCD_Cls 01C0 3001 00849 movlw D'01' ; effacage de l'ecran 01C1 2213 00850 call LCD_Cde 01C2 2A5D 00851 goto delay_2_5ms 00852 00853 01C3 00854 LCD_Clear1 ; effacage de la 1ere ligne 01C3 3010 00855 movlw D'16' 01C4 0092 00856 movwf LCDtmp1 01C5 3080 00857 movlw LINE1 ; 0x80 01C6 2213 00858 call LCD_Cde 01C7 225D 00859 call delay_2_5ms 01C8 00860 LCDc111 01C8 3020 00861 movlw ' ' 01C9 21D2 00862 call LCD_Putchar 01CA 0B92 00863 decfsz LCDtmp1,f 01CB 29C8 00864 goto LCDc111 01CC 3080 00865 LCD_Line1 movlw LINE1 01CD 2213 00866 call LCD_Cde 01CE 2A5D 00867 goto delay_2_5ms 00868 ;-------------- 00869 00870 ;LCD_Clear2 ; effacage de la deuxieme ligne 00871 ; movlw D'16' 00872 ; movwf LCDtmp1 00873 ; movlw LINE2 ; 0xC0 00874 ; call LCD_Cde 00875 ; call delay_2_5ms 00876 ;LCDcl21 00877 ; movlw ' ' 00878 ; call LCD_Putchar 00879 ; decfsz LCDtmp1,f 00880 ; goto LCDcl21 00881 ; 00882 ;LCD_Line2 00883 ; movlw LINE2 00884 ; call LCD_Cde 00885 ; goto delay_2_5ms 00886 01CF 00887 LCD_Home 01CF 3002 00888 movlw D'02' 01D0 2213 00889 call LCD_Cde 01D1 2A5D 00890 goto delay_2_5ms 00891 01D2 00892 LCD_Putchar 01D2 1283 00893 bank0 ; rajout 7/03/03 01D3 0091 00894 movwf LCDtmp 01D4 2256 00895 call delay_1ms 01D5 300F 00896 movlw 0x0f 01D6 0586 00897 andwf LCD_DATA,F MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01D7 0811 00898 movf LCDtmp,w 01D8 39F0 00899 andlw 0xF0 01D9 0486 00900 iorwf LCD_DATA,F 00901 IFDEF minisimDE 00902 bcf LCD_CTRL, LCD_RW 00903 nop 00904 endif 01DA 1405 00905 bsf LCD_CTRL, LCD_RS 01DB 0000 00906 nop 01DC 1485 00907 bsf LCD_CTRL, LCD_E 01DD 2241 00908 call delay_25us 01DE 1085 00909 bcf LCD_CTRL, LCD_E 01DF 2241 00910 call delay_25us 01E0 300F 00911 movlw 0x0f 01E1 0586 00912 andwf LCD_DATA,F 01E2 0E11 00913 swapf LCDtmp,W 01E3 39F0 00914 andlw 0xF0 01E4 0486 00915 iorwf LCD_DATA,F 01E5 0000 00916 nop 01E6 1485 00917 bsf LCD_CTRL, LCD_E 01E7 2241 00918 call delay_25us 01E8 1085 00919 bcf LCD_CTRL, LCD_E 01E9 2241 00920 call delay_25us 01EA 0008 00921 return 00922 01EB 00923 LCD_Init 01EB 1085 00924 bcf LCD_CTRL, LCD_E 01EC 225D 00925 call delay_2_5ms 01ED 1005 00926 bcf LCD_CTRL, LCD_RS 01EE 225D 00927 call delay_2_5ms 00928 IFDEF minisimDE 00929 bcf LCD_CTRL, LCD_RW 00930 endif 01EF 225D 00931 call delay_2_5ms 01F0 300F 00932 movlw 0x0f 01F1 0586 00933 andwf LCD_DATA,F 01F2 3030 00934 movlw 0x030 ; Commande pour interface 4 bits 01F3 0486 00935 iorwf LCD_DATA,F 01F4 1683 00936 bank1 01F5 300F 00937 movlw 0x0F 01F6 0506 00938 andwf LCD_DATA_TRIS,W 01F7 0086 00939 movwf LCD_DATA_TRIS ; Port en sortie 01F8 1283 00940 bank0 01F9 1485 00941 bsf LCD_CTRL, LCD_E 01FA 0000 00942 nop 01FB 1085 00943 bcf LCD_CTRL, LCD_E 01FC 225D 00944 call delay_2_5ms 01FD 1485 00945 bsf LCD_CTRL, LCD_E 01FE 0000 00946 nop 01FF 1085 00947 bcf LCD_CTRL, LCD_E 0200 225D 00948 call delay_2_5ms 0201 1485 00949 bsf LCD_CTRL, LCD_E 0202 0000 00950 nop MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0203 1085 00951 bcf LCD_CTRL, LCD_E 0204 226B 00952 call delay_100ms ; tempo remplace l'attente Wait_Busy de l'afficheur 0205 300F 00953 movlw 0x0f 0206 0586 00954 andwf LCD_DATA,F 0207 3020 00955 movlw 0x020 ; Commande pour interface 4 bits 0208 0486 00956 iorwf LCD_DATA,F 0209 1485 00957 bsf LCD_CTRL, LCD_E 020A 0000 00958 nop 020B 1085 00959 bcf LCD_CTRL, LCD_E 020C 3028 00960 movlw 0x028 ; Envoi de la commande Fonction 4-bit , Font, Nombre de lignes 020D 2213 00961 call LCD_Cde 020E 3008 00962 movlw 0x008 ; display off 020F 2213 00963 call LCD_Cde 0210 300C 00964 movlw 0x00C ; display on (0x00C sans curseur, 0x00E avec , 0x00F clign. ) 0211 2213 00965 call LCD_Cde 0212 3006 00966 movlw 0x006 00967 0213 00968 LCD_Cde 0213 0091 00969 movwf LCDtmp 0214 226B 00970 call delay_100ms ; tempo remplace l'attente Wait_Busy de l'afficheur 0215 300F 00971 movlw 0x0f 0216 0586 00972 andwf LCD_DATA,F 0217 0811 00973 movf LCDtmp,w 0218 39F0 00974 andlw 0xF0 0219 0486 00975 iorwf LCD_DATA,F 00976 IFDEF minisimDE 00977 bcf LCD_CTRL,LCD_RW 00978 nop 00979 ENDIF 021A 1005 00980 bcf LCD_CTRL,LCD_RS 021B 0000 00981 nop 021C 1485 00982 bsf LCD_CTRL,LCD_E 021D 0000 00983 nop 021E 1085 00984 bcf LCD_CTRL,LCD_E 021F 300F 00985 movlw 0x0f 0220 0586 00986 andwf LCD_DATA,F 0221 0E11 00987 swapf LCDtmp,W 0222 39F0 00988 andlw 0xF0 0223 0486 00989 iorwf LCD_DATA,F 0224 1485 00990 bsf LCD_CTRL,LCD_E 0225 0000 00991 nop 0226 1085 00992 bcf LCD_CTRL,LCD_E 0227 0008 00993 return 00994 ;----------------------- 00995 ;special pour routine d'attente 4800 bauds 00996 ; .58 pour 4800 bauds à 3.58MHz 00997 ; .67 pour 4800 bauds à 4MHZ 0228 00998 delay_RS 00999 IF OSC_FREQ == 4000000 01000 MOVLW 67 01001 ENDIF 01002 IF OSC_FREQ == 3580000 0228 303A 01003 MOVLW 58 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01004 ENDIF 0229 303A 01005 MOVLW 58 022A 008E 01006 MOVWF count1 ; 1000000/4800=208µS 022B 0B8E 01007 DECFSZ count1,F ; 1 cycle si pas de saut 022C 2A2B 01008 GOTO $-1 ; 2cycles 022D 0008 01009 Return ; 2 cycles 01010 01011 022E 01012 delay_RS_Half 01013 IF OSC_FREQ == 4000000 01014 MOVLW 38 01015 ENDIF 01016 IF OSC_FREQ == 3580000 022E 3019 01017 MOVLW 25 01018 ENDIF 022F 3019 01019 MOVLW 25 ; pour 4800 bauds à 3.58MHz 0230 008E 01020 MOVWF count1 ; < 100µS 0231 0B8E 01021 DECFSZ count1,F 0232 2A31 01022 GOTO $-1 0233 0008 01023 Return 01024 01025 ;------------------------ 0234 3001 01026 delay movlw 0x001 0235 008E 01027 movwf count1 0236 3001 01028 movlw 0x001 0237 008F 01029 movwf count2 0238 3020 01030 movlw 0x020 0239 0090 01031 movwf count3 023A 0B90 01032 delay1 decfsz count3,f 023B 2A3A 01033 goto $-1 023C 0B8F 01034 decfsz count2,f 023D 2A3A 01035 goto $-3 023E 0B8E 01036 decfsz count1,f 023F 2A3A 01037 goto $-5 0240 0008 01038 return 01039 ;-------------- 01040 0241 3001 01041 delay_25us movlw 0x01 0242 008E 01042 movwf count1 0243 3001 01043 movlw 0x01 0244 008F 01044 movwf count2 0245 3005 01045 movlw 0x05 0246 0090 01046 movwf count3 0247 2A3A 01047 goto delay1 01048 0248 3001 01049 delay_100us movlw 0x01 0249 008E 01050 movwf count1 024A 3001 01051 movlw 0x01 024B 008F 01052 movwf count2 024C 3014 01053 movlw 20 024D 0090 01054 movwf count3 024E 2A3A 01055 goto delay1 01056 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 024F 3001 01057 delay_200us movlw 0x01 0250 008E 01058 movwf count1 0251 3001 01059 movlw 0x01 0252 008F 01060 movwf count2 0253 3028 01061 movlw 40 0254 0090 01062 movwf count3 0255 2A3A 01063 goto delay1 01064 0256 3001 01065 delay_1ms movlw 0x01 0257 008E 01066 movwf count1 0258 3001 01067 movlw 0x01 0259 008F 01068 movwf count2 025A 30C8 01069 movlw 200 025B 0090 01070 movwf count3 025C 2A3A 01071 goto delay1 01072 025D 3001 01073 delay_2_5ms movlw 0x01 025E 008E 01074 movwf count1 025F 3002 01075 movlw 0x02 0260 008F 01076 movwf count2 0261 30F3 01077 movlw 243 0262 0090 01078 movwf count3 0263 2A3A 01079 goto delay1 01080 01081 0264 3001 01082 delay_10ms movlw 0x01 0265 008E 01083 movwf count1 0266 3008 01084 movlw 8 0267 008F 01085 movwf count2 0268 30CD 01086 movlw 205 0269 0090 01087 movwf count3 026A 2A3A 01088 goto delay1 01089 026B 3001 01090 delay_100ms movlw 0x01 026C 008E 01091 movwf count1 026D 304F 01092 movlw 79 026E 008F 01093 movwf count2 026F 3001 01094 movlw 0x01 0270 0090 01095 movwf count3 0271 2A3A 01096 goto delay1 01097 0272 3002 01098 delay_500ms movlw 2 0273 008E 01099 movwf count1 0274 3087 01100 movlw 135 0275 008F 01101 movwf count2 0276 306A 01102 movlw 106 0277 0090 01103 movwf count3 0278 2A3A 01104 goto delay1 01105 0279 3004 01106 delay_1s movlw 4 027A 008E 01107 movwf count1 027B 300E 01108 movlw 14 027C 008F 01109 movwf count2 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 027D 3038 01110 movlw 56 027E 0090 01111 movwf count3 027F 2A3A 01112 goto delay1 01113 0280 3008 01114 delay_2_5s movlw 8 0281 008E 01115 movwf count1 0282 30A1 01116 movlw 161 0283 008F 01117 movwf count2 0284 30DA 01118 movlw 218 0285 0090 01119 movwf count3 0286 2A3A 01120 goto delay1 01121 0287 301F 01122 delay_10s movlw 31 0288 008E 01123 movwf count1 0289 3085 01124 movlw 133 028A 008F 01125 movwf count2 028B 3033 01126 movlw 51 028C 0090 01127 movwf count3 028D 2A3A 01128 goto delay1 01129 ;----------------------- 01130 ;bcd5_2005.inc 01131 ; variable pour convertion binaire --> BCD 16bits 01132 ;bcent EQU RAMstart+32 01133 ;bdix EQU RAMstart+33 01134 ;bun EQU RAMstart+34 01135 ;btmp EQU RAMstart+35 01136 ;btmp1 EQU RAMstart+36 01137 ;val1 EQU RAMstart+37 ; variable pour stockage valeur 16 bits à afficher 01138 ;val2 EQU RAMstart+39 01139 ;===================================================================== 028E 0098 01140 bcd3 movwf btmp ; affichage octet --> decimal 3 digits ( de 0 a 255 ) 028F 3030 01141 movlw '0' 0290 0095 01142 movwf bcent 0291 0096 01143 movwf bdix 0292 3064 01144 bcd31 movlw 100 0293 0218 01145 subwf btmp,w 0294 1C03 2A99 01146 bnc bcd32 0296 0098 01147 movwf btmp 0297 0A95 01148 incf bcent,f 0298 2A92 01149 goto bcd31 01150 0299 300A 01151 bcd32 movlw 10 029A 0218 01152 subwf btmp,w 029B 1C03 2AA0 01153 bnc bcd33 029D 0098 01154 movwf btmp 029E 0A96 01155 incf bdix,f 029F 2A99 01156 goto bcd32 01157 02A0 3030 01158 bcd33 movlw '0' 02A1 0718 01159 addwf btmp,w 02A2 0097 01160 movwf bun 02A3 19AE 01161 btfsc drapeau,3 02A4 2AA7 01162 goto Only_99 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02A5 0815 01163 movf bcent,w 02A6 2316 01164 call Choix_Out 02A7 01165 Only_99 02A7 0816 01166 movf bdix,w 02A8 2316 01167 call Choix_Out 02A9 0817 01168 movf bun,w 02AA 2316 01169 call Choix_Out 02AB 0008 01170 return 01171 ;============================= 01172 01173 ; affichage word --> decimal 5 digits , de 0 a 65535 01174 ; rev 2005 usage drapeau:3 01175 ; rev 9 sept 04 avec blanc sur les chiffres non significatifs utilise drapeau:0 01176 ; si drapeau:0 =1 affichage de blanc à la place des chiffres non significatifs 01177 ; si drapeau:1 =1 affichage XXXX.X sinon XXXXX 01178 ; si drapeau:2 =1 affichage RS232, sinon affichage LCD 01179 ; si drapeau:3 =1 affichage retreint 3 digits sinon 5 digits 02AC 102E 01180 bcd5V bCf drapeau,0 02AD 081D 01181 movf val1,w 02AE 009B 01182 movwf valx 02AF 081E 01183 movf val1+1,w 02B0 009C 01184 movwf valx+1 01185 02B1 0E1D 01186 swapf val1,w 02B2 38F0 01187 iorlw 0xf0 02B3 0094 01188 movwf bmille 02B4 0794 01189 addwf bmille,f 02B5 3EE2 01190 addlw 0xE2 02B6 0095 01191 movwf bcent 02B7 3E32 01192 addlw 0x32 02B8 0097 01193 movwf bun 02B9 081D 01194 movf val1,w 02BA 390F 01195 andlw 0x0F 02BB 0795 01196 addwf bcent,f 02BC 0795 01197 addwf bcent,f 02BD 0797 01198 addwf bun,f 02BE 3EE9 01199 addlw 0xE9 02BF 0096 01200 movwf bdix 02C0 0796 01201 addwf bdix,f 02C1 0796 01202 addwf bdix,f 02C2 0E1E 01203 swapf val1+1,w 02C3 390F 01204 andlw 0x0F 02C4 0796 01205 addwf bdix,f 02C5 0797 01206 addwf bun,f 02C6 0D96 01207 rlf bdix,f 02C7 0D97 01208 rlf bun,f 02C8 0997 01209 comf bun,f 02C9 0D97 01210 rlf bun,f 02CA 081E 01211 movf val1+1,w 02CB 390F 01212 andlw 0x0F 02CC 0797 01213 addwf bun,f 02CD 0D94 01214 rlf bmille,f 02CE 3007 01215 movlw 0x07 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02CF 0093 01216 movwf bdixmil 02D0 300A 01217 movlw 0x0A 02D1 0797 01218 Lb1: addwf bun,f 02D2 0396 01219 decf bdix,f 02D3 1C03 01220 btfss STATUS,C 02D4 2AD1 01221 goto Lb1 02D5 0796 01222 Lb2: addwf bdix,f 02D6 0395 01223 decf bcent,f 02D7 1C03 01224 btfss STATUS,C 02D8 2AD5 01225 goto Lb2 02D9 0795 01226 Lb3: addwf bcent,f 02DA 0394 01227 decf bmille,f 02DB 1C03 01228 btfss STATUS,C 02DC 2AD9 01229 goto Lb3 02DD 0794 01230 Lb4: addwf bmille,f 02DE 0393 01231 decf bdixmil,f 02DF 1C03 01232 btfss STATUS,C 02E0 2ADD 01233 goto Lb4 01234 02E1 19AE 01235 btfsc drapeau,3 ; si drapeau.3=1 affichage retreint 3 digits 02E2 2AF5 01236 goto only_999 01237 02E3 0813 01238 movf bdixmil,w 02E4 1903 01239 BTFSC STATUS,Z 02E5 182E 01240 BTFSC drapeau,0 02E6 2AE9 01241 goto Lb40a 02E7 3020 01242 movlw ' ' 02E8 2AEB 01243 goto Lb40b 02E9 142E 01244 Lb40a: bsf drapeau,0 02EA 3E30 01245 addlw '0' 01246 02EB 01247 Lb40b: 02EB 2316 01248 call Choix_Out 02EC 0814 01249 movf bmille,w 02ED 1903 01250 BTFSC STATUS,Z 02EE 182E 01251 BTFSc drapeau,0 02EF 2AF2 01252 goto Lb41a 02F0 3020 01253 movlw ' ' 02F1 2AF4 01254 goto Lb41b 02F2 142E 01255 Lb41a: bsf drapeau,0 02F3 3E30 01256 addlw '0' 02F4 2316 01257 Lb41b: call Choix_Out 01258 02F5 01259 only_999 02F5 0815 01260 movf bcent,w 02F6 1903 01261 BTFSC STATUS,Z 02F7 182E 01262 BTFSc drapeau,0 02F8 2AFB 01263 goto Lb42a 02F9 3020 01264 movlw ' ' 02FA 2AFD 01265 goto Lb42b 02FB 142E 01266 Lb42a: bsf drapeau,0 02FC 3E30 01267 addlw '0' 02FD 2316 01268 Lb42b: call Choix_Out MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01269 02FE 0816 01270 movf bdix,w 02FF 1903 01271 BTFSC STATUS,Z 0300 182E 01272 BTFSc drapeau,0 0301 2B06 01273 goto Lb43a 0302 18AE 01274 BTFSC drapeau,1 ; affichage ..0.0 0303 2B06 01275 goto Lb43a 0304 3020 01276 movlw ' ' 0305 2B08 01277 goto Lb43b 0306 142E 01278 Lb43a: bsf drapeau,0 0307 3E30 01279 addlw '0' 0308 2316 01280 Lb43b: call Choix_Out 01281 0309 1CAE 01282 BTFSS drapeau,1 ; affichage ...0.0 030A 2B0D 01283 goto Lb44 ; si drapeau:1=1 ...0.0 030B 302E 01284 movlw '.' ; sinon ....0 030C 2316 01285 call Choix_Out 030D 0817 01286 Lb44: movf bun,w 030E 3E30 01287 addlw '0' 030F 2316 01288 call Choix_Out 01289 ; movlw ' ' 01290 ; call Choix_Out 0310 081B 01291 movf valx,w 0311 009D 01292 movwf val1 0312 081C 01293 movf valx+1,w 0313 009E 01294 movwf val1+1 0314 10AE 01295 BCF drapeau,1 0315 0008 01296 return 01297 ;--------- 0316 01298 Choix_Out 0316 192E 01299 btfsC drapeau,2 ; si bit 2 à zero choix=RS232 sinon LCD 0317 2B1E 01300 goto Send_Char 0318 29D2 01301 goto LCD_Putchar 0319 01302 CRLF 0319 300A 01303 movlw 10 031A 231E 01304 call Send_Char 031B 300D 01305 movlw 13 031C 231E 01306 call Send_Char 031D 0008 01307 return 01308 ;----------------------------------------------------------------------- 031E 01309 Send_Char 031E 00AD 01310 movwf CBuffer 031F 3008 01311 Movlw 8 ;correspond à un byte de 8 bits 0320 00AC 01312 Movwf CCount ;place dans RsCount 0321 1205 01313 Bcf SERIAL_TX ;bit start à 0 0322 2228 01314 Call delay_RS ;wait valeur 1bit 4800 Bauds 0323 01315 Send_C0 0323 1003 01316 Bcf STATUS,C 0324 0CAD 01317 Rrf CBuffer,F ;shift droite dans carry 0325 1803 01318 Btfsc STATUS,C ;si carry 0 alors saute 0326 2B29 01319 Goto Send_C1 ;carry =1 0327 1205 01320 Bcf SERIAL_TX ;Tx =0 0328 2B2A 01321 Goto Send_C2 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0329 1605 01322 Send_C1 Bsf SERIAL_TX ;Tx =1 032A 2228 01323 Send_C2 Call delay_RS 032B 0BAC 01324 Decfsz CCount,F ;RsCount =RsCount -1 032C 2B23 01325 Goto Send_C0 032D 1605 01326 Bsf SERIAL_TX ;bit de stop à 1 032E 2228 01327 Call delay_RS ;byte envoyé 032F 0008 01328 return 01329 01330 ;**************************************************************************** 0330 01331 read_EE 01332 0330 0089 01333 movwf EEADR ; defini offset addresse 0331 1683 01334 bank1 ; 16F84 !!!! 0332 0000 01335 nop 0333 1408 01336 bsf EECON1,RD ; mode lecture 0334 0000 01337 nop 0335 1283 01338 bank0 ; 16F84 !!!! 0336 0000 01339 nop 0337 0808 01340 movf EEDATA,W ; recupere lecture 0338 0000 01341 nop 0339 0008 01342 return 01343 01344 01345 2100 01346 ORG 0x2100 01347 ;"1234567890123456" 2100 3431 3436 3446 01348 EE0 DT "16F84 3.58MHZ",0 3438 3434 3420 3433 342E 3435 3438 344D 3448 345A 3400 210E 3441 3444 3437 01349 EE1 DT "AD7715Lk.asm ",0 3437 3431 3435 344C 346B 342E 3461 3473 346D 3420 3400 211C 344C 3443 3444 01350 EE2 DT "LCD 84-9941 ",0 3420 3438 3434 342D 3439 3439 3434 3431 3420 3400 2129 3430 3437 3420 01351 EE3 DT "07 aout 2005",0 3461 346F 3475 3474 3420 3432 3430 3430 3435 3400 01352 01353 01354 END MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 27 SYMBOL TABLE LABEL VALUE AdcNow 00000023 AutoCalibration 00000178 B_1 0000010B Boucle_ICI 000000B9 C 00000000 CBuffer 0000002D CCount 0000002C CLCK PORTB,3 CRLF 00000319 CS PORTA,3 Choix_Out 00000316 Cpt1 0000000D CptV 00000019 DC 00000001 DEBUT 0000003F DIN PORTB,0 DOUT PORTB,1 DRDY PORTB,2 EBuffer 0000002B ECount 0000002A EE0 00002100 EE1 0000210E EE2 0000211C EE3 00002129 EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 EEPROM 00002100 END_WR 000001BF Envoie_1 00000127 Envoie_2 0000012F Envoie_3 00000130 Envoie_Cde 00000122 F 00000001 FSR 00000004 GIE 00000007 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTERRUPT 00000004 INTF 00000001 IRP 00000007 ISR_V 00000004 IndexP 0000000C InitAD7715 00000163 LCD_CTRL 00000005 LCD_CTRL_TRIS 00000085 LCD_Cde 00000213 LCD_Clear1 000001C3 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 28 SYMBOL TABLE LABEL VALUE LCD_Cls 000001C0 LCD_DATA 00000006 LCD_DATA_TRIS 00000086 LCD_E 00000001 LCD_Home 000001CF LCD_Init 000001EB LCD_Line1 000001CC LCD_Putchar 000001D2 LCD_RS 00000000 LCDc111 000001C8 LCDtmp 00000011 LCDtmp1 00000012 LINE1 00000080 LINE2 000000C0 LOOP_WR 000001B7 LastRam 00000030 Lb1 000002D1 Lb2 000002D5 Lb3 000002D9 Lb4 000002DD Lb40a 000002E9 Lb40b 000002EB Lb41a 000002F2 Lb41b 000002F4 Lb42a 000002FB Lb42b 000002FD Lb43a 00000306 Lb43b 00000308 Lb44 0000030D Lect_4 00000187 Lect_5 00000194 Lecture_2 000001A8 Lecture_AD7715 0000017D Lecture_Reg 000001A1 MSG_AutoCal 00000023 MSG_InitAD 00000009 MSG_Mesure 00000036 MSG_NB 0000003B MSG_Normal 0000002C MSG_OK 00000019 MSG_PB 0000001D MSG_TREG 00000013 MSG_mV 00000033 Moyenne 00000025 NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 OPTION_REG 00000081 OSC_FREQ 0036A060 Only_99 000002A7 PCL 00000002 PCLATH 0000000A PORTA 00000005 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 29 SYMBOL TABLE LABEL VALUE PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 Pres1 00000062 Pres10 000000B8 Pres2 0000006A Pres3 00000070 Pres4 00000078 Pres5 0000007E Pres6 00000086 Pres7 0000009C Pres8 0000009D Pres9 000000B0 Presentation 00000058 RBIE 00000003 RBIF 00000000 RBuffer 00000029 RCount 00000028 RD 00000000 RESET 00000000 RESET_V 00000000 RP0 00000005 RP1 00000006 SERIAL_TX PORTA,4 STATUS 00000003 Send_C0 00000323 Send_C1 00000329 Send_C2 0000032A Send_Char 0000031E T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 TABLE_MSG 000001B6 TABLE_ST 00000008 TMR0 00000001 TREG 00000027 TRISA 00000085 TRISB 00000086 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Wait_DRDY 000000BA Z 00000002 _CP_OFF 00003FFF _CP_ON 0000000F _HS_OSC 00003FFE _LP_OSC 00003FFC _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 30 SYMBOL TABLE LABEL VALUE _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 bank0 bcf STATUS,RP0 bank1 Bsf STATUS,RP0 bcd3 0000028E bcd31 00000292 bcd32 00000299 bcd33 000002A0 bcd5V 000002AC bcent 00000015 bdix 00000016 bdixmil 00000013 bmille 00000014 btmp 00000018 bun 00000017 count1 0000000E count2 0000000F count3 00000010 delay 00000234 delay1 0000023A delay_100ms 0000026B delay_100us 00000248 delay_10ms 00000264 delay_10s 00000287 delay_1ms 00000256 delay_1s 00000279 delay_200us 0000024F delay_25us 00000241 delay_2_5ms 0000025D delay_2_5s 00000280 delay_500ms 00000272 delay_RS 00000228 delay_RS_Half 0000022E div_256 000000E3 div_32 000000CB drapeau 0000002E fin16 0000015E microdelai 0000013A mult16 0000014B mult161 0000014F mult162 00000159 only_999 000002F5 out_LCD bcf drapeau,2 out_RS232 bsf drapeau,2 read_EE 00000330 reste 0000002F result 00000021 val1 0000001D val2 0000001F valx 0000001B MPASM 03.00 Released AD7715LK.ASM 8-7-2005 11:52:03 PAGE 31 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---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 XXXXXXXXXX------ 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXX---------- All other memory blocks unused. Program Memory Words Used: 823 Program Memory Words Free: 201 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 6 suppressed