MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 00002 ;DDS25MHz.asm 25 mars 06 RS232 9600bds 16F84-0130G83-20 . oscillateur 25Mhz. OK 00003 ;------------------------- 00004 ;DDS40Mhz.ASM 20 mars 2006 PIC16F84 0130G83-20 oscillateur 40MHz RS232 19200bds 00005 ; test‚ ok … 6000Hz mais avec quelques bizarrerries et aleas sur BP => … suivre... 00006 ;DDS0603.asm 00007 ; test avec horloge oscillator DIP8 4 pins EPSON 2--536G 40MHz serie SG-8002 00008 ; mode clock EXTERNAL sur pin 16 PIC16F84-20 00009 ;sindds11.asm version intermediare.. 00010 ;======================================= 00011 ; SINDDS10.ASM voir annexes en fin de ce fichier 00012 ; Check avec Fluke 199 scopmeter 200Mhz 2,5Gs/S ! 00013 ; la relation montre que le nb de cycle a prendre en compte est de 26 au lieu de 28 00014 ; rev 10/09/04 ..pb sur table sinus il faut "128-Sin(x)" et non pas "128+sin(x)" 00015 ; car le DAC 588 sort 2,56V pour FF = 8 entree en l'air (8 bits NON SIGNES) 00016 ; PB turn over indice 34 .. modif ..sir incr indice a 36 =>retour a 0 00017 ; ..donc indice=0 =0,1Hz a indice=35=1500Hz (sinus sur 128 pas) 0000 00018 inclus 00019 ; probleme en milieu de table ; 255 puis 256=0!! 00020 ; => limitation amplitude a 127 pour mini=128-127=1 et maxi =128+127=255 00021 ; dt 0xF7,0xF9,0xFB,0xFD,0xFE,0xFF,0x0,0x0 00022 ; dt 0x0,0x0,0x0,0xFF,0xFE,0xFD,0xFB,0xF9 00023 ;------------------ 00024 ; SINEDD9.asm 00025 ; rev 23 aout 04 : usage table 256 octest de 2 serie de 128 pas donc 2 sinusoides! 00026 ; rev 19 aout 2004 modif Init_F_Depart => en sub routine 00027 ; relation proportionelle: coeff * 0,0212874 = freq 00028 ; car decalage indice/terminal et realit¯ (verifi¯ avec frequencemetre FreqAR_1.asm ) 00029 ;rev 30 juin 04 : SINDDS8.ASM avec table unique, separ¯e, de 256 octets pour 256 pas 1 sinusoide 00030 ;rev 24 juin 04 : PB debordement de page avec test 35 -> test 34 ..OK 00031 ;rev 18 juin 04 : augmentation taille 20 a 36 val freq 00032 ;rev 13 juin 04 : rajout indexation valeur frequence en Hz 00033 ;rev 08 avril 04 : indexation frequnce sur indice 00034 ;rev 07 avril 04 : adaptation PF pour AD588 00035 ; SINEDDS3.asm 00036 ; 21 mars 2004 version avec PIC @ 20Mhz 00037 ;---------------- 00038 ;Building SINEDDS7.HEX... 00039 ;Compiling SINEDDS7.ASM: 00040 ;Command line: "F:\MPLAB\MPASMWIN.EXE /aINHX8M /e+ /l+ /x+ /c+ /rdec /p16F84 /q C:\MPLAB\DDS\SINEDDS7.AS M" 00041 ;Build completed successfully. 00042 ; 13 mars 2004 rev PF SINEDDS1.ASM: 00043 ;SINDDS (C) Copyright 2003 by Richard Prinz.OE1RIB Richard.Prinz@MIN.at 00044 ;----------------------- 00045 include 00001 LIST 00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00136 LIST 00046 ERRORLEVEL -302 00047 EXPAND 2007 3FF2 00048 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC 00049 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00050 ;************************************************** 00051 ; 00052 ; Schematic / Loop version 00053 ; DAC 8bits 00054 ; 16F84 AD558 +5V + 9V 00055 ; 20 MHz | | 00056 ; +------+ +-------+-+ / 00057 ; | |----------|1 D0 11| |/ 00058 ; | | B0-B7 | 16|---------| 2N2222 NPN 00059 ; | |----------|8 D7 |out |\> 00060 ; | | gnd ----|9 CS 14|-----------\ 00061 ; | | Gnd ----|10 CE 15|-----------+-- analog Fout -----> 00062 ; | | +------+--+ sense | 00063 ; | | RA1 Key | 12 | 00064 ; | 18|---------/ - | 13 | 00065 ; | | RA2 Key -+-0V | 00066 ; | 1 |---------/ + + 00067 ; | | RA3 | | R 00068 ; | 2 |-------->RS232 Tx | | 2,2K 00069 ; | | RA4 | | 00070 ; | 3 |-------|<|---R 1,2K--<+5V + 00071 ; | | led | 00072 ; +------+ -|- 0V 00073 ; 00074 ;************************************************** 00075 ; Definitions 00076 ;************************************************** 00077 ;#define Debug 1 00078 ;************************************************** 00079 ; Variables 00080 ;************************************************** 00081 00082 cblock 0x20 00000020 00083 FREQ_H 00000021 00084 FREQ_M 00000022 00085 FREQ_L 00000023 00086 ACC_H 00000024 00087 ACC_M 00000025 00088 ACC_L 00000026 00089 TEMP 00000027 00090 SER 00000028 00091 DELAY_W 00000029 00092 DELAY_T 0000002A 00093 DELAY_H 0000002B 00094 DELAY_L 0000002C 00095 indice 0000002D 00096 RsCount 0000002E 00097 RsBuffer 0000002F 00098 count1 00000030 00099 RsByte 00000031 00100 Cpt1 00000032 00101 sauve 00000033 00102 btmp MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000034 00103 bun 00000035 00104 bdix 00105 endc 00106 00107 ;************************************************** 00108 ; -- input -- 00109 #define Rs_Port PORTA 00110 #define Rs_Rx 0 ; RA0 00111 #define KeyUp 2 ; RA1 00112 #define KeyDown 1 ; RA2 00113 ; --output -- 00114 #define Rs_Tx 3 ; RA3 00115 #define LedR 4 ; RA4 00116 00117 #define Augmente PORTA,KeyUp ; 00118 #define Diminue PORTA,KeyDown ; 00119 #define SERIAL_TX Rs_Port,Rs_Tx ; serial RS232 output 00120 #define SERIAL_RX Rs_Port,Rs_Rx ; serial RS232 input 00121 00122 #define bank0 bcf STATUS,RP0 00123 #define bank1 Bsf STATUS,RP0 00124 ;************************************************** 00125 ; M A I N - E N T R Y 00126 ;************************************************** 0000 00127 ORG 0x000 0000 00128 Start 0000 1683 00129 bank1 0001 0000 00130 nop 0002 3007 00131 movlw B'00000111' 0003 0085 00132 movwf TRISA 0004 0000 00133 nop 0005 3000 00134 movlw B'00000000' 0006 0086 00135 movwf TRISB 0007 0000 00136 nop 0008 0181 00137 clrf OPTION_REG 0009 0000 00138 nop 000A 1283 00139 bank0 000B 018B 00140 clrf INTCON 000C 0186 00141 clrf PORTB 000D 0000 00142 nop 00143 00144 ;************************************************** 00145 ; Output frequency (using 24 bit accumulator) 00146 ; f = deltaPhase * fClock/2^24 00147 ; fClock = f Quartz /4 = 20000000/4=50000 00148 ; number of cycles to output the data ( 26 cycles ) 00149 ; (the output loop needs between 26 and 32 cycles to output calculate, lookup and the data) 00150 ; f = FREQ_H/FREQ_M/FREQ_L * (Quartz/4/28)/16777216 00151 ; f = FREQ_H/FREQ_M/FREQ_L * (5000000/28)/16777216 00152 ; f = FREQ_H/FREQ_M/FREQ_L * 0.00212874 00153 ; fMax (theoretical) = 0.5 * fClock 00154 ;=================================================== 00155 ; ---- START ---- MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00156 ; dt 0x00, 0x00, 0x24 ;1Hz 00157 #define STARTAT_H 0x00 00158 #define STARTAT_M 0x00 00159 #define STARTAT_L 0x24 00160 00161 ; ---- STEP ---- 00162 ; 100 Hz 00163 ; #define STEP_H 0x00 00164 ; #define STEP_M 0x27 00165 ; #define STEP_L 0x52 00166 00167 ; ---- ROLL ---- 00168 ; dt 0x03, 0x74, 0xBC ;6250Hz 00169 #define ROLLAT_H 0x03 00170 #define ROLLAT_M 0x74 00171 #define ROLLAT_L 0xBC 00172 00173 00174 00175 ;************************************************** 00176 ; Main Loop 00177 ;************************************************** 00178 000E 00179 Pres 000E 01B3 00180 clrf btmp 000F 01B4 00181 clrf bun 0010 01B5 00182 clrf bdix 0011 01AC 00183 clrf indice 0012 01B2 00184 clrf sauve 00185 0013 00186 Pres1 0013 20CC 00187 CALL RS_CRLF 0014 01B1 00188 clrf Cpt1 0015 00189 Pres11 0015 0831 00190 movf Cpt1,w 0016 2355 00191 CALL read_EE 0017 0AB1 00192 incf Cpt1,f 0018 39FF 00193 ANDLW 0x0FF ; test sur (W) 0019 1903 00194 BTFSC STATUS, Z ; zero= fin de message ? 001A 281E 00195 GOTO Pres2 001B 20B7 00196 Call RS_Putchar 001C 2342 00197 call debounce_50ms 001D 2815 00198 goto Pres11 001E 00199 Pres2 001E 20CC 00200 CALL RS_CRLF 001F 300A 00201 movlw EE1-EE0 0020 00B1 00202 MOVWF Cpt1 0021 00203 Pres21 0021 0831 00204 movf Cpt1,w 0022 2355 00205 CALL read_EE 0023 0AB1 00206 incf Cpt1,f 0024 39FF 00207 ANDLW 0x0FF ; test sur (W) 0025 1903 00208 BTFSC STATUS, Z ; zero= fin de message ? MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0026 282A 00209 GOTO Pres3 0027 20B7 00210 Call RS_Putchar 0028 2342 00211 call debounce_50ms 0029 2821 00212 goto Pres21 002A 00213 Pres3 002A 20CC 00214 CALL RS_CRLF 002B 301D 00215 movlw EE2-EE0 002C 00B1 00216 MOVWF Cpt1 002D 00217 Pres31 002D 0831 00218 movf Cpt1,w 002E 2355 00219 CALL read_EE 002F 0AB1 00220 incf Cpt1,f 0030 39FF 00221 ANDLW 0x0FF ; test sur (W) 0031 1903 00222 BTFSC STATUS, Z ; zero= fin de message ? 0032 2836 00223 GOTO PresEnd 0033 20B7 00224 Call RS_Putchar 0034 2342 00225 call debounce_50ms 0035 282D 00226 goto Pres31 00227 0036 00228 PresEnd 00229 0036 20CC 00230 CALL RS_CRLF 00231 0037 00232 NoPresentation 0037 01A3 00233 clrf ACC_H 0038 01A4 00234 clrf ACC_M 0039 01A5 00235 clrf ACC_L 003A 0186 00236 clrf PORTB 003B 208E 00237 call Init_F_Depart ; set START frequency 003C 20CC 00238 CALL RS_CRLF 003D 286E 00239 goto changeF ; affiche freq correspondant a indice=0 00240 003E 00241 NCOLoop 00242 ; entree a 1 ? 003E 1D05 00243 btfss PORTA,2 ; 1 ou 2 +incr 003F 2851 00244 goto Touche ; 2 0040 1C85 00245 btfss PORTA,1 ; 1 ou 2 -decr 0041 2851 00246 goto Touche ; 2 0042 00247 AddFreq 00248 ; add freq value to phase accumulator 24bit 0042 0822 00249 movf FREQ_L,w ; 1 0043 07A5 00250 addwf ACC_L,f ; 1 0044 0821 00251 movf FREQ_M,w ; 1 0045 1803 00252 btfsc STATUS,C ; 1 ou 2 0046 0F21 00253 incfsz FREQ_M,w ; 1 ou 2 0047 07A4 00254 addwf ACC_M,f ; 1 0048 0820 00255 movf FREQ_H,w ; 1 0049 1803 00256 btfsc STATUS,C ; 1 ou 2 004A 0F20 00257 incfsz FREQ_H,w ; 1 ou 2 004B 07A3 00258 addwf ACC_H,f ; 1 004C 00259 LookupSine 004C 0823 00260 movf ACC_H,w ; 1 004D 21FD 00261 call SINE_TABLE ; 2 + 5 in subroutine MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 004E 108A 00262 bcf PCLATH,1 ; 1 rajout 21 mars 06 00263 00264 ;Sortie sur DAC558 8 bits 004F 0086 00265 movwf PORTB ; 1 0050 283E 00266 goto NCOLoop ; 2 00267 ; 27 cycles mini ..33 maxi 00268 00269 ;************************************************** 00270 ; Process commands to NCO 00271 ;************************************************** 0051 00272 Touche ; touche a zero 0051 2342 00273 call debounce_50ms 0052 1D05 00274 btfss PORTA,2 0053 2857 00275 goto Augmentation 0054 1C85 00276 btfss PORTA,1 0055 2865 00277 goto Diminution 0056 283E 00278 goto NCOLoop 00279 0057 00280 Augmentation 0057 2349 00281 call delay_250ms 0058 1D05 00282 btfss PORTA,2 0059 2857 00283 goto Augmentation 005A 0AAC 00284 incf indice,f 005B 082C 00285 movf indice,W ; @ modif 10/09/04 005C 3C24 00286 subLw .36 ; si depasse 35 => retour a 0 005D 1D03 00287 btfsS STATUS,Z 005E 286E 00288 goto changeF 005F 01A3 00289 clrf ACC_H 0060 01A4 00290 clrf ACC_M 0061 01A5 00291 clrf ACC_L 0062 208E 00292 call Init_F_Depart 0063 0AAC 00293 incf indice,f 0064 286E 00294 goto changeF 00295 00296 0065 00297 Diminution 0065 2349 00298 call delay_250ms 0066 1C85 00299 btfss PORTA,1 0067 2865 00300 goto Diminution 0068 082C 00301 movf indice,w 0069 3C01 00302 sublw 1 006A 1803 00303 BTFSC STATUS,C 006B 283E 00304 goto NCOLoop 006C 03AC 00305 decf indice,f 006D 286E 00306 goto changeF 00307 006E 00308 changeF 00309 ; affichage sur RS232 ...................... 006E 1283 00310 bank0 006F 082C 00311 movf indice,w 0070 00B2 00312 movWf sauve ; registre de travail 0071 2313 00313 call bcd2 ; affichage valeur indice 0072 303D 00314 movlw '=' MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0073 20B7 00315 call RS_Putchar 00316 ; mutliplie indice par 3 0074 1003 00317 BCF STATUS,C 0075 0D32 00318 rlf sauve,w ; sauve=indice *2 0076 072C 00319 Addwf indice,w ; sauve= indice*2 + indice 0077 00B2 00320 movwf sauve 0078 20FD 00321 call Freq_Table 0079 1283 00322 bank0 007A 00A0 00323 movwf FREQ_H 007B 2300 00324 call hex8 007C 0AB2 00325 incf sauve,f 007D 0832 00326 movf sauve,W 007E 20FD 00327 call Freq_Table 007F 1283 00328 bank0 0080 00A1 00329 movwf FREQ_M 0081 2300 00330 call hex8 0082 0AB2 00331 incf sauve,f 0083 0832 00332 movf sauve,W 0084 20FD 00333 call Freq_Table 0085 1283 00334 bank0 0086 00A2 00335 movwf FREQ_L 0087 2300 00336 call hex8 0088 303D 00337 movlw '=' 0089 20B7 00338 call RS_Putchar 008A 082C 00339 MOVF indice,w 008B 2098 00340 call Affiche_Frequence 008C 1283 00341 bank0 008D 283E 00342 goto NCOLoop 00343 00344 00345 ;************************************* 00346 ; routines 00347 ;************************************* 00348 008E 00349 Init_F_Depart 008E 1283 00350 bank0 008F 01AC 00351 CLRF indice 0090 01B2 00352 CLRF sauve 0091 3000 00353 movlw STARTAT_H 0092 00A0 00354 movwf FREQ_H 0093 3000 00355 movlw STARTAT_M 0094 00A1 00356 movwf FREQ_M 0095 3024 00357 movlw STARTAT_L 0096 00A2 00358 movwf FREQ_L 0097 0008 00359 return 00360 ;------------------------- 0098 00361 Affiche_Frequence 0098 1283 00362 bank0 0099 00B1 00363 movwf Cpt1 009A 1003 00364 BCF STATUS,C 009B 0DB1 00365 RLF Cpt1,f ;indice x 2 009C 0D31 00366 RLF Cpt1,w ;indice x 2 009D 3E6C 00367 ADDLW EcartTable ; indice *4 + deplacement MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009E 00B2 00368 movwf sauve 009F 01B1 00369 clrf Cpt1 00A0 00370 Encore_Affich 00A0 0832 00371 movf sauve,w 00A1 20FD 00372 call Freq_Table 00A2 1283 00373 bank0 00A3 20B7 00374 call RS_Putchar 00A4 0AB2 00375 incf sauve,f 00A5 0AB1 00376 incf Cpt1,f 00A6 0831 00377 movf Cpt1,W 00A7 3903 00378 andLW 0x03 00A8 1903 00379 btfsC STATUS,Z 00A9 28AB 00380 goto Affich_fin 00AA 28A0 00381 Goto Encore_Affich 00AB 00382 Affich_fin 00AB 3048 00383 movlw 'H' 00AC 20B7 00384 call RS_Putchar 00AD 307A 00385 movlw 'z' 00AE 20B7 00386 call RS_Putchar 00AF 20CC 00387 call RS_CRLF 00B0 0008 00388 return 00389 ;---------------------------- 00390 ;special pour routine d"attente bit 19200 Bauds @40Mhz 00B1 00391 delay_RS9600 00B1 1283 00392 bank0 00B2 30D5 00393 MOVLW .213 ; pour 9600 @25MHz .170 pour 19200 @40MHz 00B3 00AF 00394 MOVWF count1 00B4 0BAF 00395 DECFSZ count1,F 00B5 28B4 00396 GOTO $-1 00B6 0008 00397 Return 00398 ;---------------------- 00B7 00399 RS_Putchar 00B7 1283 00400 bank0 00B8 00AE 00401 movwf RsBuffer 00B9 3008 00402 Movlw 8 ;correspond … un byte de 8 bits 00BA 00AD 00403 Movwf RsCount ;place dans RsCount 00BB 1185 00404 Bcf SERIAL_TX ;bit start … 0 00BC 20B1 00405 Call delay_RS9600 ;wait valeur 1bit 4800 Bauds 00BD 0CAE 00406 Rrf RsBuffer,F ;shift droite dans carry 00BE 1803 00407 Btfsc STATUS,C ;si carry 0 alors saute 00BF 28C2 00408 Goto $+3 ;carry =1 00C0 1185 00409 Bcf SERIAL_TX ;Tx =0 00C1 28C3 00410 Goto $+2 00C2 1585 00411 Bsf SERIAL_TX ;Tx =1 00C3 20B1 00412 Call delay_RS9600 00C4 0BAD 00413 Decfsz RsCount,F ;RsCount =RsCount -1 00C5 28BD 00414 Goto $-8 00C6 1585 00415 Bsf SERIAL_TX ;bit de stop … 1 00C7 20B1 00416 Call delay_RS9600 ;byte envoye 00C8 20B1 00417 Call delay_RS9600 00C9 0000 00418 nop 00CA 0000 00419 nop 00CB 0008 00420 return MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00421 ;--------------- 00CC 00422 RS_CRLF 00CC 1283 00423 bank0 00CD 0830 00424 movf RsByte,w ;sauve W 00CE 300D 00425 movlw .13 00CF 20B7 00426 call RS_Putchar 00D0 0000 00427 nop 00D1 300A 00428 movlw .10 00D2 20B7 00429 call RS_Putchar 00D3 00B0 00430 movwf RsByte ;restitue W 00D4 0008 00431 return 00432 ;------------------------------ 00D5 00433 Read_RS 00D5 01B0 00434 Clrf RsByte 00D6 3008 00435 Movlw H'08' ;byte 8 bit 00D7 00AD 00436 Movwf RsCount 00D8 1805 00437 Btfsc SERIAL_RX ;Attendre bit start 00D9 28D8 00438 Goto $-1 ;si zero = bit start = goto loop 00DA 2326 00439 Rx_Loop call Delay ;bit de start 00DB 1003 00440 Bcf STATUS,C ;Carry=0 00DC 1805 00441 Btfsc SERIAL_RX ;lit et test l"entr¯e RB0 00DD 1403 00442 Bsf STATUS,C ;Rx =1, saute si Rx =0 00DE 0CB0 00443 rrf RsByte,F 00DF 0BAD 00444 Decfsz RsCount,F 00E0 28DA 00445 Goto Rx_Loop 00E1 0008 00446 Return 00447 00448 ;=========================== 00449 ; TABLES 00450 ;=========================== 00FD 00451 ORG 0x0fd 00FD 00452 Freq_Table 00FD 140A 00453 bSf PCLATH,0 ; 1 00FE 108A 00454 bcf PCLATH,1 ; 1 00FF 0782 00455 addwf PCL,f ; 1 00456 00457 ; 36 valeurs possible sur un PIC16F84 00458 ; utiliser Pic_Calculs.XLS DDS pour les obtenir les 2 tables ci-dessous 00459 ; (ou autres valeurs) et copier coller depuis excel 00460 ; les valeurs ne sont pas forcement consecutives car le choix est indexe. 00461 ; pas de 1Hz= 36,23872 0100 3400 3400 3424 00462 dt 0x00, 0x00, 0x24 ;1Hz 36 0103 3400 3400 34B5 00463 dt 0x00, 0x00, 0xB5 ;5Hz 0106 3400 3403 3489 00464 dt 0x00, 0x03, 0x89 ;25Hz 0109 3400 3409 3457 00465 dt 0x00, 0x09, 0x57 ;66Hz 010C 3400 340E 3427 00466 dt 0x00, 0x0E, 0x27 ;100Hz 010F 3400 3415 343B 00467 dt 0x00, 0x15, 0x3B ;150Hz 0112 3400 341C 344F 00468 dt 0x00, 0x1C, 0x4F ;200Hz 0115 3400 342A 3477 00469 dt 0x00, 0x2A, 0x77 ;300Hz 0118 3400 3438 349F 00470 dt 0x00, 0x38, 0x9F ;400Hz 011B 3400 3446 34C7 00471 dt 0x00, 0x46, 0xC7 ;500Hz 18119 011E 3400 3454 34EF 00472 dt 0x00, 0x54, 0xEF ;600Hz 0121 3400 3463 3417 00473 dt 0x00, 0x63, 0x17 ;700Hz MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0124 3400 3471 343F 00474 dt 0x00, 0x71, 0x3F ;800Hz 0127 3400 347F 3466 00475 dt 0x00, 0x7F, 0x66 ;900Hz 012A 3400 348D 348E 00476 dt 0x00, 0x8D, 0x8E ;1000Hz 36238 012D 3400 34B0 34F2 00477 dt 0x00, 0xB0, 0xF2 ;1250Hz 0130 3400 34D4 3456 00478 dt 0x00, 0xD4, 0x56 ;1500Hz 0133 3400 34F7 34B9 00479 dt 0x00, 0xF7, 0xB9 ;1750Hz 0136 3401 341B 341D 00480 dt 0x01, 0x1B, 0x1D ;2000Hz 0139 3401 343E 3481 00481 dt 0x01, 0x3E, 0x81 ;2250Hz 013C 3401 3461 34E4 00482 dt 0x01, 0x61, 0xE4 ;2500Hz 013F 3401 3485 3448 00483 dt 0x01, 0x85, 0x48 ;2750Hz 0142 3401 34A8 34AC 00484 dt 0x01, 0xA8, 0xAC ;3000Hz 0145 3401 34CC 3410 00485 dt 0x01, 0xCC, 0x10 ;3250Hz 0148 3401 34EF 3473 00486 dt 0x01, 0xEF, 0x73 ;3500Hz 014B 3402 3412 34D7 00487 dt 0x02, 0x12, 0xD7 ;3750Hz 014E 3402 3436 343B 00488 dt 0x02, 0x36, 0x3B ;4000Hz 0151 3402 3459 349E 00489 dt 0x02, 0x59, 0x9E ;4250Hz 0154 3402 347D 3402 00490 dt 0x02, 0x7D, 0x02 ;4500Hz 0157 3402 34A0 3466 00491 dt 0x02, 0xA0, 0x66 ;4750Hz 015A 3402 34C3 34C9 00492 dt 0x02, 0xC3, 0xC9 ;5000Hz 015D 3402 34E7 342D 00493 dt 0x02, 0xE7, 0x2D ;5250Hz 0160 3403 340A 3491 00494 dt 0x03, 0x0A, 0x91 ;5500Hz 0163 3403 342D 34F5 00495 dt 0x03, 0x2D, 0xF5 ;5750Hz 0166 3403 3451 3458 00496 dt 0x03, 0x51, 0x58 ;6000Hz 0169 3403 3474 34BC 00497 dt 0x03, 0x74, 0xBC ;6250Hz 00498 ;erreur d'arrondi => 6250*36.238=226487 pour 226492 00499 00500 00501 00502 00503 0000016C 00504 Freq_TABLE_fin equ $ 00505 0000016C 00506 Freq_value EQU $ 00507 016C 3420 3420 3420 00508 DT " 1" 3431 0170 3420 3420 3420 00509 DT " 5" 3435 0174 3420 3420 3432 00510 DT " 25" 3435 0178 3420 3420 3436 00511 DT " 66" 3436 017C 3420 3431 3430 00512 DT " 100" 3430 0180 3420 3431 3435 00513 DT " 150" 3430 0184 3420 3432 3430 00514 DT " 200" 3430 0188 3420 3433 3430 00515 DT " 300" 3430 018C 3420 3434 3430 00516 DT " 400" 3430 0190 3420 3435 3430 00517 DT " 500" MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3430 0194 3420 3436 3430 00518 DT " 600" 3430 0198 3420 3437 3430 00519 DT " 700" 3430 019C 3420 3438 3430 00520 DT " 800" 3430 01A0 3420 3439 3430 00521 DT " 900" 3430 01A4 3431 3430 3430 00522 DT "1000" 3430 01A8 3431 3432 3435 00523 DT "1250" 3430 01AC 3431 3435 3430 00524 DT "1500" 3430 01B0 3431 3437 3435 00525 DT "1750" 3430 01B4 3432 3430 3430 00526 DT "2000" 3430 01B8 3432 3432 3435 00527 DT "2250" 3430 01BC 3432 3435 3430 00528 DT "2500" 3430 01C0 3432 3437 3435 00529 DT "2750" 3430 01C4 3433 3430 3430 00530 DT "3000" 3430 01C8 3433 3432 3435 00531 DT "3250" 3430 01CC 3433 3435 3430 00532 DT "3500" 3430 01D0 3433 3437 3435 00533 DT "3750" 3430 01D4 3434 3430 3430 00534 DT "4000" 3430 01D8 3434 3432 3435 00535 DT "4250" 3430 01DC 3434 3435 3430 00536 DT "4500" 3430 01E0 3434 3437 3435 00537 DT "4750" 3430 01E4 3435 3430 3430 00538 DT "5000" 3430 01E8 3435 3432 3435 00539 DT "5250" 3430 01EC 3435 3435 3430 00540 DT "5500" 3430 01F0 3435 3437 3435 00541 DT "5750" 3430 01F4 3436 3430 3430 00542 DT "6000" 3430 01F8 3436 3432 3435 00543 DT "6250" 3430 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00544 00545 00546 000001FC 00547 Freq_value_fin equ $ 00548 0000006C 00549 EcartTable EQU Freq_value -(Freq_Table +3) 00550 00551 ;************************************************** 00552 ; Table de 256 entres valeurs des sinus Frequence 00553 ; … r‚cuperer sur SineDDS Excel 00554 ;************************************************** 01FD 00555 ORG 0x1FD 01FD 00556 SINE_TABLE 01FD 148A 00557 bsf PCLATH,1 ; 1 01FE 100A 00558 bcf PCLATH,0 ; 1 01FF 0782 00559 addwf PCL,f ; 1 00560 ; ATTENTION table en debut de page !!! 00561 ; table de 2 cycles en 256 pas! donc 128 pas par sinusoide ! 0200 3480 347A 3474 00562 dt 0x80,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56 346E 3468 3462 345C 3456 0208 3450 344A 3445 00563 dt 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B 343F 343A 3435 3430 342B 0210 3427 3422 341E 00564 dt 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E 341A 3417 3414 3410 340E 0218 340B 3409 3407 00565 dt 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02 3405 3404 3403 3402 3402 0220 3401 3402 3402 00566 dt 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09 3403 3404 3405 3407 3409 0228 340B 340E 3410 00567 dt 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22 3414 3417 341A 341E 3422 0230 3427 342B 3430 00568 dt 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A 3435 343A 343F 3445 344A 0238 3450 3456 345C 00569 dt 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A 3462 3468 346E 3474 347A 0240 3480 3487 348D 00570 dt 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB 3493 3499 349F 34A5 34AB 0248 34B1 34B7 34BC 00571 dt 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6 34C2 34C7 34CC 34D1 34D6 0250 34DA 34DF 34E3 00572 dt 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3 34E7 34EA 34ED 34F1 34F3 0258 34F6 34F8 34FA 00573 dt 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF 34FC 34FD 34FE MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 34FF 34FF 0260 34FF 34FF 34FF 00574 dt 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8 34FE 34FD 34FC 34FA 34F8 0268 34F6 34F3 34F1 00575 dt 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF 34ED 34EA 34E7 34E3 34DF 0270 34DA 34D6 34D1 00576 dt 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7 34CC 34C7 34C2 34BC 34B7 0278 34B1 34AB 34A5 00577 dt 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87 349F 3499 3493 348D 3487 0280 3481 347A 3474 00578 dt 0x81,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56 346E 3468 3462 345C 3456 0288 3450 344A 3445 00579 dt 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B 343F 343A 3435 3430 342B 0290 3427 3422 341E 00580 dt 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E 341A 3417 3414 3410 340E 0298 340B 3409 3407 00581 dt 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02 3405 3404 3403 3402 3402 02A0 3401 3402 3402 00582 dt 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09 3403 3404 3405 3407 3409 02A8 340B 340E 3410 00583 dt 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22 3414 3417 341A 341E 3422 02B0 3427 342B 3430 00584 dt 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A 3435 343A 343F 3445 344A 02B8 3450 3456 345C 00585 dt 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A 3462 3468 346E 3474 347A 02C0 3480 3487 348D 00586 dt 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB 3493 3499 349F 34A5 34AB 02C8 34B1 34B7 34BC 00587 dt 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6 34C2 34C7 34CC 34D1 34D6 02D0 34DA 34DF 34E3 00588 dt 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3 34E7 34EA 34ED 34F1 34F3 02D8 34F6 34F8 34FA 00589 dt 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF 34FC 34FD 34FE 34FF 34FF 02E0 34FF 34FF 34FF 00590 dt 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8 34FE 34FD 34FC 34FA 34F8 02E8 34F6 34F3 34F1 00591 dt 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 34ED 34EA 34E7 34E3 34DF 02F0 34DA 34D6 34D1 00592 dt 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7 34CC 34C7 34C2 34BC 34B7 02F8 34B1 34AB 34A5 00593 dt 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87 349F 3499 3493 348D 3487 00594 00000300 00595 SINE_TABLE_fin equ $ 00596 00597 ;-------------------------------------- 0300 1283 00598 hex8 bank0 0301 00B3 00599 movwf btmp ; affichage octet --> hexadecimal 2 digits ( de 00 a FF ) 0302 0E33 00600 swapf btmp,W 0303 390F 00601 andlw 0x0f 0304 3EF6 00602 addlw -0x0a 0305 1803 00603 btfsc STATUS,C 0306 3E07 00604 addlw 0x07 0307 3E3A 00605 addlw 0x3a 0308 20B7 00606 call RS_Putchar 0309 0833 00607 movf btmp,W 030A 390F 00608 andlw 0x0f 030B 3EF6 00609 addlw -0x0a 030C 1803 00610 btfsc STATUS, C 030D 3E07 00611 addlw 0x07 030E 3E3A 00612 addlw 0x3a 030F 20B7 00613 call RS_Putchar 0310 302E 00614 movlw '.' 0311 20B7 00615 call RS_Putchar 0312 0008 00616 return 00617 ;------------------------------------------ 0313 1283 00618 bcd2 bank0 0314 00B3 00619 movwf btmp ; affichage octet --> decimal 2 digits ( de 0 a 99 ) 0315 3030 00620 movlw '0' 0316 00B5 00621 movwf bdix 0317 300A 00622 bcd21 movlw .10 ;<- modif 21 mars 06 manque le "." 0318 0233 00623 subwf btmp,w 0319 1C03 2B1E 00624 bnc bcd22 031B 00B3 00625 movwf btmp 031C 0AB5 00626 incf bdix,f 031D 2B17 00627 goto bcd21 031E 3030 00628 bcd22 movlw '0' 031F 0733 00629 addwf btmp,w 0320 00B4 00630 movwf bun 0321 0835 00631 movf bdix,w 0322 20B7 00632 call RS_Putchar 0323 0834 00633 movf bun,w 0324 20B7 00634 call RS_Putchar 0325 0008 00635 return 00636 ;===================================== 00637 ; delay parameter MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00638 ; DELAY_H msb 00639 ; DELAY_L lsb 00640 ; delai cod¯ sur 16 bits donc gamme de 1 a 65535 mS 00641 ; 00642 ;----------------------------------------------- 0326 1283 00643 Delay bank0 0327 09AA 00644 comf DELAY_H,f ; 1 1 0328 09AB 00645 comf DELAY_L,f ; 1 1 0329 0AAB 00646 incf DELAY_L,f ; 1 1 032A 1903 00647 btfsc STATUS,Z ; 1/2 1/2 032B 0AAA 00648 incf DELAY_H,f ; 1 1 00649 ; --------------------------------------------- = 5 always 00650 ; inner loop for 1mS at 25 MHz 00651 ; -----------------------------------Cycles----- 032C 00652 Delay01 032C 30FA 00653 movlw D'250' ; 1 1 032D 00A9 00654 movwf DELAY_T ; 1 1 032E 00655 Delay02 032E 2336 00656 call Gaspille_25cycles ; 2=call + 10*goto=20 + 1nop=1 +2=return 032F 0BA9 00657 decfsz DELAY_T,f ; 1 0330 2B2E 00658 goto Delay02 ; 2 00659 ; ------------------------------------- = 250*25*0.16=1000uS 0331 0AAB 00660 incf DELAY_L,f ; 1 1 0332 1903 00661 btfsc STATUS,Z ; 1/2 1/2 0333 0FAA 00662 incfsz DELAY_H,f ; 1/2 1/2 0334 2B2C 00663 goto Delay01 ; 2 2 in the loop always 5 00664 ; ------------------------------------- = 5 cycles 0335 0008 00665 return ; 2 on exit the 5 from above + 1 00666 ; ------------------------------------- = 6 cycles 0336 00667 Gaspille_25cycles ; 0336 2B37 00668 goto $+1 ;2 0337 2B38 00669 goto $+1 ;2 0338 2B39 00670 goto $+1 ;2 0339 2B3A 00671 goto $+1 ;2 033A 2B3B 00672 goto $+1 ;2 033B 2B3C 00673 goto $+1 ;2 033C 2B3D 00674 goto $+1 ;2 033D 2B3E 00675 goto $+1 ;2 033E 2B3F 00676 goto $+1 ;2 033F 2B40 00677 goto $+1 ;2 0340 0000 00678 nop 0341 0008 00679 return 00680 ;--------------------------------------- 0342 00681 debounce_50ms 0342 1283 00682 bank0 0343 3000 00683 movlw 0x00 0344 00AA 00684 movwf DELAY_H 0345 3032 00685 movlw .50 0346 00AB 00686 movwf DELAY_L 0347 2326 00687 call Delay 0348 0008 00688 return 0349 00689 delay_250ms 0349 1283 00690 bank0 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 034A 3000 00691 movlw 0x00 034B 00AA 00692 movwf DELAY_H 034C 30FA 00693 movlw .250 034D 00AB 00694 movwf DELAY_L 034E 2326 00695 call Delay 034F 0008 00696 return 0350 00697 delay_1S 0350 2349 00698 call delay_250ms 0351 2349 00699 call delay_250ms 0352 2349 00700 call delay_250ms 0353 2349 00701 call delay_250ms 0354 0008 00702 return 00703 ;---------------------------------------------- 0355 00704 read_EE 0355 1283 00705 bank0 0356 0089 00706 movwf EEADR ; defini offset addresse 0357 2B58 00707 goto $+1 0358 2B59 00708 goto $+1 0359 2B5A 00709 goto $+1 035A 2B5B 00710 goto $+1 035B 1683 00711 bank1 ; 16F84 !!!! 035C 2B5D 00712 goto $+1 035D 2B5E 00713 goto $+1 035E 1408 00714 bsf EECON1,RD ; mode lecture 035F 2B60 00715 goto $+1 0360 1283 00716 bank0 ; 16F84 !!!! 0361 2B62 00717 goto $+1 0362 2B63 00718 goto $+1 0363 0808 00719 movf EEDATA,W ; recupere lecture 0364 0008 00720 return 00721 ;*************************************************** 00000365 00722 FinProgramme EQU $ 2100 00723 ORG 0x2100 00724 ; "1234567890123456" 00725 ; message taille modulo 16 2100 3444 3444 3453 00726 EE0 DT "DDS25Mhz ",0 3432 3435 344D 3468 347A 3420 3400 210A 3431 3436 3446 00727 EE1 DT "16F84-0130 G83-20 ",0 3438 3434 342D 3430 3431 3433 3430 3420 3447 3438 3433 342D 3432 3430 3420 3400 211D 3432 3435 342F 00728 EE2 DT "25/03/06 AD588",.13,.10 3430 3433 342F 3430 3436 3420 3441 3444 3435 3438 3438 340D 340A 212D 3452 3453 3420 00729 DT "RS 9600b",.13,.10,0 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3439 3436 3430 3430 3462 340D 340A 3400 00730 00002138 00731 finEprom EQU $ 00732 end MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 18 SYMBOL TABLE LABEL VALUE ACC_H 00000023 ACC_L 00000025 ACC_M 00000024 AddFreq 00000042 Affich_fin 000000AB Affiche_Frequence 00000098 Augmentation 00000057 Augmente PORTA,KeyUp C 00000000 Cpt1 00000031 DC 00000001 DELAY_H 0000002A DELAY_L 0000002B DELAY_T 00000029 DELAY_W 00000028 Delay 00000326 Delay01 0000032C Delay02 0000032E Diminue PORTA,KeyDown Diminution 00000065 EE0 00002100 EE1 0000210A EE2 0000211D EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 EcartTable 0000006C Encore_Affich 000000A0 F 00000001 FREQ_H 00000020 FREQ_L 00000022 FREQ_M 00000021 FSR 00000004 FinProgramme 00000365 Freq_TABLE_fin 0000016C Freq_Table 000000FD Freq_value 0000016C Freq_value_fin 000001FC GIE 00000007 Gaspille_25cycles 00000336 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 Init_F_Depart 0000008E KeyDown 1 KeyUp 2 LedR 4 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 19 SYMBOL TABLE LABEL VALUE LookupSine 0000004C NCOLoop 0000003E NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 NoPresentation 00000037 OPTION_REG 00000081 PCL 00000002 PCLATH 0000000A PORTA 00000005 PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 Pres 0000000E Pres1 00000013 Pres11 00000015 Pres2 0000001E Pres21 00000021 Pres3 0000002A Pres31 0000002D PresEnd 00000036 RBIE 00000003 RBIF 00000000 RD 00000000 ROLLAT_H 0x03 ROLLAT_L 0xBC ROLLAT_M 0x74 RP0 00000005 RP1 00000006 RS_CRLF 000000CC RS_Putchar 000000B7 Read_RS 000000D5 RsBuffer 0000002E RsByte 00000030 RsCount 0000002D Rs_Port PORTA Rs_Rx 0 Rs_Tx 3 Rx_Loop 000000DA SER 00000027 SERIAL_RX Rs_Port,Rs_Rx SERIAL_TX Rs_Port,Rs_Tx SINE_TABLE 000001FD SINE_TABLE_fin 00000300 STARTAT_H 0x00 STARTAT_L 0x24 STARTAT_M 0x00 STATUS 00000003 Start 00000000 T0CS 00000005 T0IE 00000005 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 20 SYMBOL TABLE LABEL VALUE T0IF 00000002 T0SE 00000004 TEMP 00000026 TMR0 00000001 TRISA 00000085 TRISB 00000086 Touche 00000051 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 _CP_OFF 00003FFF _CP_ON 0000000F _HS_OSC 00003FFE _LP_OSC 00003FFC _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 bank0 bcf STATUS,RP0 bank1 Bsf STATUS,RP0 bcd2 00000313 bcd21 00000317 bcd22 0000031E bdix 00000035 btmp 00000033 bun 00000034 changeF 0000006E count1 0000002F debounce_50ms 00000342 delay_1S 00000350 delay_250ms 00000349 delay_RS9600 000000B1 finEprom 00002138 hex8 00000300 inclus 00000000 indice 0000002C read_EE 00000355 sauve 00000032 MPASM 5.00 DDS25MHZ.ASM 3-28-2006 20:29:13 PAGE 21 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XX-------------- -------------XXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX-XXX 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 XXXXX----------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX-------- All other memory blocks unused. Program Memory Words Used: 841 Program Memory Words Free: 183 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 4 suppressed