;DDS25MHz.asm 25 mars 06 RS232 9600bds 16F84-0130G83-20 . ;EPSON 2-E197G SG-8002 programmable oscillator 25Mhz. OK ;------------------------- ;DDS40Mhz.ASM 20 mars 2006 PIC16F84 0130G83-20 oscillateur 40MHz RS232 19200bds ; test‚ ok … 6000Hz mais avec quelques bizarrerries et aleas sur BP => … suivre... ;DDS0603.asm ; test avec horloge oscillator DIP8 4 pins EPSON 2--536G 40MHz serie SG-8002 ; mode clock EXTERNAL sur pin 16 PIC16F84-20 ;sindds11.asm version intermediare.. ;======================================= ; SINDDS10.ASM voir annexes en fin de ce fichier ; Check avec Fluke 199 scopmeter 200Mhz 2,5Gs/S ! ; la relation montre que le nb de cycle a prendre en compte est de 26 au lieu de 28 ; rev 10/09/04 ..pb sur table sinus il faut "128-Sin(x)" et non pas "128+sin(x)" ; car le DAC 588 sort 2,56V pour FF = 8 entree en l'air (8 bits NON SIGNES) ; PB turn over indice 34 .. modif ..sir incr indice a 36 =>retour a 0 ; ..donc indice=0 =0,1Hz a indice=35=1500Hz (sinus sur 128 pas) inclus ; probleme en milieu de table ; 255 puis 256=0!! ; => limitation amplitude a 127 pour mini=128-127=1 et maxi =128+127=255 ; dt 0xF7,0xF9,0xFB,0xFD,0xFE,0xFF,0x0,0x0 ; dt 0x0,0x0,0x0,0xFF,0xFE,0xFD,0xFB,0xF9 ;------------------ ; SINEDD9.asm ; rev 23 aout 04 : usage table 256 octest de 2 serie de 128 pas donc 2 sinusoides! ; rev 19 aout 2004 modif Init_F_Depart => en sub routine ; relation proportionelle: coeff * 0,0212874 = freq ; car decalage indice/terminal et realit¯ (verifi¯ avec frequencemetre FreqAR_1.asm ) ;rev 30 juin 04 : SINDDS8.ASM avec table unique, separ¯e, de 256 octets pour 256 pas 1 sinusoide ;rev 24 juin 04 : PB debordement de page avec test 35 -> test 34 ..OK ;rev 18 juin 04 : augmentation taille 20 a 36 val freq ;rev 13 juin 04 : rajout indexation valeur frequence en Hz ;rev 08 avril 04 : indexation frequnce sur indice ;rev 07 avril 04 : adaptation PF pour AD588 ; SINEDDS3.asm ; 21 mars 2004 version avec PIC @ 20Mhz ;---------------- ;Building SINEDDS7.HEX... ;Compiling SINEDDS7.ASM: ;Command line: "F:\MPLAB\MPASMWIN.EXE /aINHX8M /e+ /l+ /x+ /c+ /rdec /p16F84 /q C:\MPLAB\DDS\SINEDDS7.ASM" ;Build completed successfully. ; 13 mars 2004 rev PF SINEDDS1.ASM: ;SINDDS (C) Copyright 2003 by Richard Prinz.OE1RIB Richard.Prinz@MIN.at ;----------------------- include ERRORLEVEL -302 EXPAND __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ;************************************************** ; ; Schematic / Loop version ; DAC 8bits ; 16F84 AD558 +5V + 9V ; 20 MHz | | ; +------+ +-------+-+ / ; | |----------|1 D0 11| |/ ; | | B0-B7 | 16|---------| 2N2222 NPN ; | |----------|8 D7 |out |\> ; | | gnd ----|9 CS 14|-----------\ ; | | Gnd ----|10 CE 15|-----------+-- analog Fout -----> ; | | +------+--+ sense | ; | | RA1 Key | 12 | ; | 18|---------/ - | 13 | ; | | RA2 Key -+-0V | ; | 1 |---------/ + + ; | | RA3 | | R ; | 2 |-------->RS232 Tx | | 2,2K ; | | RA4 | | ; | 3 |-------|<|---R 1,2K--<+5V + ; | | led | ; +------+ -|- 0V ; ;************************************************** ; Definitions ;************************************************** ;#define Debug 1 ;************************************************** ; Variables ;************************************************** cblock 0x20 FREQ_H FREQ_M FREQ_L ACC_H ACC_M ACC_L TEMP SER DELAY_W DELAY_T DELAY_H DELAY_L indice RsCount RsBuffer count1 RsByte Cpt1 sauve btmp bun bdix endc ;************************************************** ; -- input -- #define Rs_Port PORTA #define Rs_Rx 0 ; RA0 #define KeyUp 2 ; RA1 #define KeyDown 1 ; RA2 ; --output -- #define Rs_Tx 3 ; RA3 #define LedR 4 ; RA4 #define Augmente PORTA,KeyUp ; #define Diminue PORTA,KeyDown ; #define SERIAL_TX Rs_Port,Rs_Tx ; serial RS232 output #define SERIAL_RX Rs_Port,Rs_Rx ; serial RS232 input #define bank0 bcf STATUS,RP0 #define bank1 Bsf STATUS,RP0 ;************************************************** ; M A I N - E N T R Y ;************************************************** ORG 0x000 Start bank1 nop movlw B'00000111' movwf TRISA nop movlw B'00000000' movwf TRISB nop clrf OPTION_REG nop bank0 clrf INTCON clrf PORTB nop ;************************************************** ; Output frequency (using 24 bit accumulator) ; f = deltaPhase * fClock/2^24 ; fClock = f Quartz /4 = 20000000/4=50000 ; number of cycles to output the data ( 26 cycles ) ; (the output loop needs between 26 and 32 cycles to output calculate, lookup and the data) ; f = FREQ_H/FREQ_M/FREQ_L * (Quartz/4/28)/16777216 ; f = FREQ_H/FREQ_M/FREQ_L * (5000000/28)/16777216 ; f = FREQ_H/FREQ_M/FREQ_L * 0.00212874 ; fMax (theoretical) = 0.5 * fClock ;=================================================== ; ---- START ---- ; dt 0x00, 0x00, 0x24 ;1Hz #define STARTAT_H 0x00 #define STARTAT_M 0x00 #define STARTAT_L 0x24 ; ---- STEP ---- ; 100 Hz ; #define STEP_H 0x00 ; #define STEP_M 0x27 ; #define STEP_L 0x52 ; ---- ROLL ---- ; dt 0x03, 0x74, 0xBC ;6250Hz #define ROLLAT_H 0x03 #define ROLLAT_M 0x74 #define ROLLAT_L 0xBC ;************************************************** ; Main Loop ;************************************************** Pres clrf btmp clrf bun clrf bdix clrf indice clrf sauve Pres1 CALL RS_CRLF clrf Cpt1 Pres11 movf Cpt1,w CALL read_EE incf Cpt1,f ANDLW 0x0FF ; test sur (W) BTFSC STATUS, Z ; zero= fin de message ? GOTO Pres2 Call RS_Putchar call debounce_50ms goto Pres11 Pres2 CALL RS_CRLF movlw EE1-EE0 MOVWF Cpt1 Pres21 movf Cpt1,w CALL read_EE incf Cpt1,f ANDLW 0x0FF ; test sur (W) BTFSC STATUS, Z ; zero= fin de message ? GOTO Pres3 Call RS_Putchar call debounce_50ms goto Pres21 Pres3 CALL RS_CRLF movlw EE2-EE0 MOVWF Cpt1 Pres31 movf Cpt1,w CALL read_EE incf Cpt1,f ANDLW 0x0FF ; test sur (W) BTFSC STATUS, Z ; zero= fin de message ? GOTO PresEnd Call RS_Putchar call debounce_50ms goto Pres31 PresEnd CALL RS_CRLF NoPresentation clrf ACC_H clrf ACC_M clrf ACC_L clrf PORTB call Init_F_Depart ; set START frequency CALL RS_CRLF goto changeF ; affiche freq correspondant a indice=0 NCOLoop ; entree a 1 ? btfss PORTA,2 ; 1 ou 2 +incr goto Touche ; 2 btfss PORTA,1 ; 1 ou 2 -decr goto Touche ; 2 AddFreq ; add freq value to phase accumulator 24bit movf FREQ_L,w ; 1 addwf ACC_L,f ; 1 movf FREQ_M,w ; 1 btfsc STATUS,C ; 1 ou 2 incfsz FREQ_M,w ; 1 ou 2 addwf ACC_M,f ; 1 movf FREQ_H,w ; 1 btfsc STATUS,C ; 1 ou 2 incfsz FREQ_H,w ; 1 ou 2 addwf ACC_H,f ; 1 LookupSine movf ACC_H,w ; 1 call SINE_TABLE ; 2 + 5 in subroutine bcf PCLATH,1 ; 1 rajout 21 mars 06 ;Sortie sur DAC558 8 bits movwf PORTB ; 1 goto NCOLoop ; 2 ; 27 cycles mini ..33 maxi ;************************************************** ; Process commands to NCO ;************************************************** Touche ; touche a zero call debounce_50ms btfss PORTA,2 goto Augmentation btfss PORTA,1 goto Diminution goto NCOLoop Augmentation call delay_250ms btfss PORTA,2 goto Augmentation incf indice,f movf indice,W ; @ modif 10/09/04 subLw .36 ; si depasse 35 => retour a 0 btfsS STATUS,Z goto changeF clrf ACC_H clrf ACC_M clrf ACC_L call Init_F_Depart incf indice,f goto changeF Diminution call delay_250ms btfss PORTA,1 goto Diminution movf indice,w sublw 1 BTFSC STATUS,C goto NCOLoop decf indice,f goto changeF changeF ; affichage sur RS232 ...................... bank0 movf indice,w movWf sauve ; registre de travail call bcd2 ; affichage valeur indice movlw '=' call RS_Putchar ; mutliplie indice par 3 BCF STATUS,C rlf sauve,w ; sauve=indice *2 Addwf indice,w ; sauve= indice*2 + indice movwf sauve call Freq_Table bank0 movwf FREQ_H call hex8 incf sauve,f movf sauve,W call Freq_Table bank0 movwf FREQ_M call hex8 incf sauve,f movf sauve,W call Freq_Table bank0 movwf FREQ_L call hex8 movlw '=' call RS_Putchar MOVF indice,w call Affiche_Frequence bank0 goto NCOLoop ;************************************* ; routines ;************************************* Init_F_Depart bank0 CLRF indice CLRF sauve movlw STARTAT_H movwf FREQ_H movlw STARTAT_M movwf FREQ_M movlw STARTAT_L movwf FREQ_L return ;------------------------- Affiche_Frequence bank0 movwf Cpt1 BCF STATUS,C RLF Cpt1,f ;indice x 2 RLF Cpt1,w ;indice x 2 ADDLW EcartTable ; indice *4 + deplacement movwf sauve clrf Cpt1 Encore_Affich movf sauve,w call Freq_Table bank0 call RS_Putchar incf sauve,f incf Cpt1,f movf Cpt1,W andLW 0x03 btfsC STATUS,Z goto Affich_fin Goto Encore_Affich Affich_fin movlw 'H' call RS_Putchar movlw 'z' call RS_Putchar call RS_CRLF return ;---------------------------- ;special pour routine d"attente bit 19200 Bauds @40Mhz delay_RS9600 bank0 MOVLW .213 ; pour 9600 @25MHz .170 pour 19200 @40MHz MOVWF count1 DECFSZ count1,F GOTO $-1 Return ;---------------------- RS_Putchar bank0 movwf RsBuffer Movlw 8 ;correspond … un byte de 8 bits Movwf RsCount ;place dans RsCount Bcf SERIAL_TX ;bit start … 0 Call delay_RS9600 ;wait valeur 1bit 4800 Bauds Rrf RsBuffer,F ;shift droite dans carry Btfsc STATUS,C ;si carry 0 alors saute Goto $+3 ;carry =1 Bcf SERIAL_TX ;Tx =0 Goto $+2 Bsf SERIAL_TX ;Tx =1 Call delay_RS9600 Decfsz RsCount,F ;RsCount =RsCount -1 Goto $-8 Bsf SERIAL_TX ;bit de stop … 1 Call delay_RS9600 ;byte envoye Call delay_RS9600 nop nop return ;--------------- RS_CRLF bank0 movf RsByte,w ;sauve W movlw .13 call RS_Putchar nop movlw .10 call RS_Putchar movwf RsByte ;restitue W return ;------------------------------ Read_RS Clrf RsByte Movlw H'08' ;byte 8 bit Movwf RsCount Btfsc SERIAL_RX ;Attendre bit start Goto $-1 ;si zero = bit start = goto loop Rx_Loop call Delay ;bit de start Bcf STATUS,C ;Carry=0 Btfsc SERIAL_RX ;lit et test l"entr¯e RB0 Bsf STATUS,C ;Rx =1, saute si Rx =0 rrf RsByte,F Decfsz RsCount,F Goto Rx_Loop Return ;=========================== ; TABLES ;=========================== ORG 0x0fd Freq_Table bSf PCLATH,0 ; 1 bcf PCLATH,1 ; 1 addwf PCL,f ; 1 ; 36 valeurs possible sur un PIC16F84 ; utiliser Pic_Calculs.XLS DDS pour les obtenir les 2 tables ci-dessous ; (ou autres valeurs) et copier coller depuis excel ; les valeurs ne sont pas forcement consecutives car le choix est indexe. ; pas de 1Hz= 36,23872 dt 0x00, 0x00, 0x24 ;1Hz 36 dt 0x00, 0x00, 0xB5 ;5Hz dt 0x00, 0x03, 0x89 ;25Hz dt 0x00, 0x09, 0x57 ;66Hz dt 0x00, 0x0E, 0x27 ;100Hz dt 0x00, 0x15, 0x3B ;150Hz dt 0x00, 0x1C, 0x4F ;200Hz dt 0x00, 0x2A, 0x77 ;300Hz dt 0x00, 0x38, 0x9F ;400Hz dt 0x00, 0x46, 0xC7 ;500Hz 18119 dt 0x00, 0x54, 0xEF ;600Hz dt 0x00, 0x63, 0x17 ;700Hz dt 0x00, 0x71, 0x3F ;800Hz dt 0x00, 0x7F, 0x66 ;900Hz dt 0x00, 0x8D, 0x8E ;1000Hz 36238 dt 0x00, 0xB0, 0xF2 ;1250Hz dt 0x00, 0xD4, 0x56 ;1500Hz dt 0x00, 0xF7, 0xB9 ;1750Hz dt 0x01, 0x1B, 0x1D ;2000Hz dt 0x01, 0x3E, 0x81 ;2250Hz dt 0x01, 0x61, 0xE4 ;2500Hz dt 0x01, 0x85, 0x48 ;2750Hz dt 0x01, 0xA8, 0xAC ;3000Hz dt 0x01, 0xCC, 0x10 ;3250Hz dt 0x01, 0xEF, 0x73 ;3500Hz dt 0x02, 0x12, 0xD7 ;3750Hz dt 0x02, 0x36, 0x3B ;4000Hz dt 0x02, 0x59, 0x9E ;4250Hz dt 0x02, 0x7D, 0x02 ;4500Hz dt 0x02, 0xA0, 0x66 ;4750Hz dt 0x02, 0xC3, 0xC9 ;5000Hz dt 0x02, 0xE7, 0x2D ;5250Hz dt 0x03, 0x0A, 0x91 ;5500Hz dt 0x03, 0x2D, 0xF5 ;5750Hz dt 0x03, 0x51, 0x58 ;6000Hz dt 0x03, 0x74, 0xBC ;6250Hz ;erreur d'arrondi => 6250*36.238=226487 pour 226492 Freq_TABLE_fin equ $ Freq_value EQU $ DT " 1" DT " 5" DT " 25" DT " 66" DT " 100" DT " 150" DT " 200" DT " 300" DT " 400" DT " 500" DT " 600" DT " 700" DT " 800" DT " 900" DT "1000" DT "1250" DT "1500" DT "1750" DT "2000" DT "2250" DT "2500" DT "2750" DT "3000" DT "3250" DT "3500" DT "3750" DT "4000" DT "4250" DT "4500" DT "4750" DT "5000" DT "5250" DT "5500" DT "5750" DT "6000" DT "6250" Freq_value_fin equ $ EcartTable EQU Freq_value -(Freq_Table +3) ;************************************************** ; Table de 256 entres valeurs des sinus Frequence ; … r‚cuperer sur SineDDS Excel ;************************************************** ORG 0x1FD SINE_TABLE bsf PCLATH,1 ; 1 bcf PCLATH,0 ; 1 addwf PCL,f ; 1 ; ATTENTION table en debut de page !!! ; table de 2 cycles en 256 pas! donc 128 pas par sinusoide ! dt 0x80,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56 dt 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B dt 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E dt 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02 dt 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09 dt 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22 dt 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A dt 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A dt 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB dt 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6 dt 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3 dt 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF dt 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8 dt 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF dt 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7 dt 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87 dt 0x81,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56 dt 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B dt 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E dt 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02 dt 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09 dt 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22 dt 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A dt 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A dt 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB dt 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6 dt 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3 dt 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF dt 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8 dt 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF dt 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7 dt 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87 SINE_TABLE_fin equ $ ;-------------------------------------- hex8 bank0 movwf btmp ; affichage octet --> hexadecimal 2 digits ( de 00 a FF ) swapf btmp,W andlw 0x0f addlw -0x0a btfsc STATUS,C addlw 0x07 addlw 0x3a call RS_Putchar movf btmp,W andlw 0x0f addlw -0x0a btfsc STATUS, C addlw 0x07 addlw 0x3a call RS_Putchar movlw '.' call RS_Putchar return ;------------------------------------------ bcd2 bank0 movwf btmp ; affichage octet --> decimal 2 digits ( de 0 a 99 ) movlw '0' movwf bdix bcd21 movlw .10 ;<- modif 21 mars 06 manque le "." subwf btmp,w bnc bcd22 movwf btmp incf bdix,f goto bcd21 bcd22 movlw '0' addwf btmp,w movwf bun movf bdix,w call RS_Putchar movf bun,w call RS_Putchar return ;===================================== ; delay parameter ; DELAY_H msb ; DELAY_L lsb ; delai cod¯ sur 16 bits donc gamme de 1 a 65535 mS ; ;----------------------------------------------- Delay bank0 comf DELAY_H,f ; 1 1 comf DELAY_L,f ; 1 1 incf DELAY_L,f ; 1 1 btfsc STATUS,Z ; 1/2 1/2 incf DELAY_H,f ; 1 1 ; --------------------------------------------- = 5 always ; inner loop for 1mS at 25 MHz ; -----------------------------------Cycles----- Delay01 movlw D'250' ; 1 1 movwf DELAY_T ; 1 1 Delay02 call Gaspille_25cycles ; 2=call + 10*goto=20 + 1nop=1 +2=return decfsz DELAY_T,f ; 1 goto Delay02 ; 2 ; ------------------------------------- = 250*25*0.16=1000uS incf DELAY_L,f ; 1 1 btfsc STATUS,Z ; 1/2 1/2 incfsz DELAY_H,f ; 1/2 1/2 goto Delay01 ; 2 2 in the loop always 5 ; ------------------------------------- = 5 cycles return ; 2 on exit the 5 from above + 1 ; ------------------------------------- = 6 cycles Gaspille_25cycles ; goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 goto $+1 ;2 nop return ;--------------------------------------- debounce_50ms bank0 movlw 0x00 movwf DELAY_H movlw .50 movwf DELAY_L call Delay return delay_250ms bank0 movlw 0x00 movwf DELAY_H movlw .250 movwf DELAY_L call Delay return delay_1S call delay_250ms call delay_250ms call delay_250ms call delay_250ms return ;---------------------------------------------- read_EE bank0 movwf EEADR ; defini offset addresse goto $+1 goto $+1 goto $+1 goto $+1 bank1 ; 16F84 !!!! goto $+1 goto $+1 bsf EECON1,RD ; mode lecture goto $+1 bank0 ; 16F84 !!!! goto $+1 goto $+1 movf EEDATA,W ; recupere lecture return ;*************************************************** FinProgramme EQU $ ORG 0x2100 ; "1234567890123456" ; message taille modulo 16 EE0 DT "DDS25Mhz ",0 EE1 DT "16F84-0130 G83-20 ",0 EE2 DT "25/03/06 AD588",.13,.10 DT "RS 9600b",.13,.10,0 finEprom EQU $ end Resultat sur terminal DDS25Mhz 16F84-0130 G83-20 25/03/06 AD588 RS 9600b 00=00.00.24.= 1Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz 03=00.09.57.= 66Hz 02=00.03.89.= 25Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz 03=00.09.57.= 66Hz 04=00.0E.27.= 100Hz 05=00.15.3B.= 150Hz 06=00.1C.4F.= 200Hz 07=00.2A.77.= 300Hz 08=00.38.9F.= 400Hz 09=00.46.C7.= 500Hz 10=00.54.EF.= 600Hz 11=00.63.17.= 700Hz 12=00.71.3F.= 800Hz 13=00.7F.66.= 900Hz 14=00.8D.8E.=1000Hz 15=00.B0.F2.=1250Hz 16=00.D4.56.=1500Hz 17=00.F7.B9.=1750Hz 18=01.1B.1D.=2000Hz 19=01.3E.81.=2250Hz 20=01.61.E4.=2500Hz 21=01.85.48.=2750Hz 22=01.A8.AC.=3000Hz 23=01.CC.10.=3250Hz 24=01.EF.73.=3500Hz 25=02.12.D7.=3750Hz 26=02.36.3B.=4000Hz 27=02.59.9E.=4250Hz 28=02.7D.02.=4500Hz 29=02.A0.66.=4750Hz 30=02.C3.C9.=5000Hz 31=02.E7.2D.=5250Hz 32=03.0A.91.=5500Hz 33=03.2D.F5.=5750Hz 34=03.51.58.=6000Hz 35=03.74.BC.=6250Hz 00=00.00.24.= 1Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz 03=00.09.57.= 66Hz 02=00.03.89.= 25Hz 01=00.00.B5.= 5Hz 02=00.03.89.= 25Hz