Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
private
/
Projet
/
debug
:
debug.s
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
.module debug.c .area text ; baud -> 2,x _init_SCI:: ; #include "HC12.H" ; ; int Mille,Centaine,Dizaine,Unite; ; ; int val; ; ; unsigned int canal[8]; ; char ascii[8]; ; ; /**************************************************************************/ ; void init_SCI(unsigned int baud) ; { ; asm(" SEI"); SEI ; ; SCICR1 = 0x00; /* 0 0 0 0 0 0 0 0 /* 8bits et pas de parit� */ clr 0xca ; /* | | | | | | | | ; | | | | | | | \____ Even Parity ; | | | | | | \______ Parity Disabled ; | | | | | \________ Short IDLE line mode (not used) ; | | | | \__________ Wakeup by IDLE line rec (not used) ; | | | \____________ 8 data bits ; | | \______________ Not used (loopback disabled) ; | \________________ SCI1 enabled in wait mode ; \__________________ Normal (not loopback) mode ; */ ; SCICR2 = 0x2C; /* 0 0 1 0 1 1 0 0 /* TX et RX actif + RX int*/ ldab #44 stab 0xcb ; /* | | | | | | | | ; | | | | | | | \____ No Break ; | | | | | | \______ Not in wakeup mode (always awake) ; | | | | | \________ Reciever enabled ; | | | | \__________ Transmitter disabled ; | | | \____________ No IDLE Interrupt ; | | \______________ Reciever Interrupts used ; | \________________ No Tranmit Complete Interrupt ; \__________________ No Tranmit Ready Interrupt ; */ ; SCIBDH = 0x00; clr 0xc8 ; SCIBDL = 0x34; // 9600 bauds (52 en d�cimal) ldab #52 stab 0xc9 ; asm(" CLI"); CLI ; } L1: .dbline 0 ; func end rts _initialise_SCI:: ; ; /**************************************************************************/ ; void initialise_SCI(void) ; { ; SCIBDH = 0x34; // 9600bps @ 8MHz Mclk ldab #52 stab 0xc8 ; SCIBDL = 0x00; clr 0xc9 ; SCICR1 = 0x00; // mode normal 8bits clr 0xca ; SCICR2 = 0x0C; // pas d'interruption, pas de parit� ldab #12 stab 0xcb ; } L2: .dbline 0 ; func end rts _init_ADC:: ; /**************************************************************************/ ; void init_ADC(void) ; { ; ATDCTL2 = 0xC0; /* d�marrage ADC */ ldab #192 stab 0x122 ; ATDCTL3 = 0x00; /* cycle de 8 conversions */ clr 0x123 ; ATDCTL4 = 0x75; /* mode 10 bits */ ldab #117 stab 0x124 ; ATDCTL5 = 0x90; /* 1 0 0 1 0 0 0 0 ldab #144 stab 0x125 ; | | | | \__/ ; | | | | | ; | | | | \___ First channel = 2 ; | | | \________ MULT = 1 => multiple channels ; | | \__________ SCAN = 0 => one set of conversions ; | \____________ DSGN = 0 => unsigned ; \______________ DJM = 1 => right justified ; */ ; } L3: .dbline 0 ; func end rts ; i -> -2,x ; data -> 3,x _ecrire_data:: pshd pshx tfr s,x leas -2,sp ; /**********************************************************/ ; void ecrire_data(char data) ; { ; int i; ; ; i= 0x55; ldd #85 std -2,x ; ; return; L4: tfr x,s pulx leas 2,sp .dbline 0 ; func end rts ; buffer -> 2,x _ecrire_chaine:: pshd pshx tfr s,x ; } ; /**********************************************************/ ; void ecrire_chaine(char *buffer) ; { bra L7 L6: ldy 2,x ldab 0,y clra jsr _ecrire_data ldd 2,x addd #1 std 2,x L7: ; while(*buffer) ldy 2,x tst 0,y bne L6 ; { ecrire_data(*buffer); ; buffer++; ; } ; return; L5: tfr x,s pulx leas 2,sp .dbline 0 ; func end rts ; compare -> -2,x _conversion_decimal:: pshx tfr s,x leas -2,sp ; } ; /**********************************************************/ ; void conversion_decimal(void) ; { ; ; int compare; ; ; Mille = 0; ldd #0 std _Mille ; Centaine = 0; ldd #0 std _Centaine ; Dizaine = 0; ldd #0 std _Dizaine ; Unite = 0; ldd #0 std _Unite ; ; // recherche du nombre en d�cimal - 4 chiffres ; ; compare=val; movw _val,-2,x bra L11 L10: ldd _Mille addd #1 std _Mille ldd -2,x subd #1000 std -2,x L11: ; ; while( compare > 1000 ) // nombre de paquets de 1000 ldd -2,x cpd #1000 bgt L10 bra L14 L13: ldd _Centaine addd #1 std _Centaine ldd -2,x subd #100 std -2,x L14: ; { Mille++; ; compare=compare-1000; ; } ; while( compare > 100 ) // nombre de centaines ldd -2,x cpd #100 bgt L13 bra L17 L16: ldd _Dizaine addd #1 std _Dizaine ldd -2,x subd #10 std -2,x L17: ; { Centaine++; ; compare=compare-100; ; } ; while( compare > 10 ) // nombre de dizaines ldd -2,x cpd #10 bgt L16 ; { Dizaine++; ; compare=compare-10; ; } ; ; Unite=compare; movw -2,x,_Unite ; } L9: tfr x,s pulx .dbline 0 ; func end rts _conversion_Ascii:: ; /**********************************************************/ ; void conversion_Ascii(void) ; { ; ; ascii[0]=Mille+0x30; ldd _Mille addd #48 stab _ascii ; ascii[1]='.'; // affiche virgule ldab #46 stab _ascii+1 ; ascii[2]=Centaine+0x30; // centaines de mV ldd _Centaine addd #48 stab _ascii+2 ; ascii[3]=Dizaine+0x30; // dizaines de mV ldd _Dizaine addd #48 stab _ascii+3 ; ascii[4]=Unite+0x30; // affiche les mV ldd _Unite addd #48 stab _ascii+4 ; ascii[5]='V'; // affiche le V de Volt ldab #86 stab _ascii+5 ; } L19: .dbline 0 ; func end rts _acquisition:: ; /**********************************************************/ ; void acquisition(void) ; { ; ATDCTL5 = 0x90; // lance la conversion ldab #144 stab 0x125 L26: L27: ; ; while ((ADSTAT0 & 0x80) == 0 ) ; /* attendre la fin de la conversion */ brclr 0x126,#128,L26 ; canal[0] = ADR0; ; vol ldy 0x130 sty _canal ; canal[1] = ADR1; ; vol ldy 0x132 sty _canal+2 ; canal[2] = ADR2; ; vol ldy 0x134 sty _canal+4 ; canal[3] = ADR3; ; vol ldy 0x136 sty _canal+6 ; canal[4] = ADR4; ; vol ldy 0x138 sty _canal+8 ; canal[5] = ADR5; ; vol ldy 0x13a sty _canal+10 ; canal[6] = ADR6; ; vol ldy 0x13c sty _canal+12 ; canal[7] = ADR7; ; vol ldy 0x13e sty _canal+14 ; } L25: .dbline 0 ; func end rts _traitement:: ; /**************************************************************************/ ; void traitement(void) ; { ; ; // lire le r�sultat + stockage ; canal[6]= ADR6; ; vol ldy 0x13c sty _canal+12 ; ; val= (ADR6 * 4888)/10000; ldd #4888 ; vol ldy 0x13c emul ldy #10000 exg x,y idiv exg x,y sty _val ; ; } L36: .dbline 0 ; func end rts ; c -> 3,x _envoi_caractere:: pshd pshx tfr s,x ; /**************************************************************************/ ; void envoi_caractere(char c) ; { L39: L40: ; while( (SCISR1 & 0x80 )== 0 ); // attendre la mont�e du flag TDRE brclr 0xcc,#128,L39 ; SCIDRL = c; movb 3,x,0xcf ; ; } L38: tfr x,s pulx leas 2,sp .dbline 0 ; func end rts ; ptr -> -2,x ; str -> 2,x _envoi_chaine:: pshd pshx tfr s,x leas -2,sp ; /**********************************************************/ ; void envoi_chaine(char str[]) ; { ; char *ptr; ; ; for(ptr = str; *ptr != '\0' ; ptr++ ) movw 2,x,-2,x bra L46 L43: ldy -2,x ldab 0,y clra jsr _envoi_caractere L44: ldd -2,x addd #1 std -2,x L46: ldy -2,x tst 0,y bne L43 ; { envoi_caractere(*ptr); ; } ; } L42: tfr x,s pulx leas 2,sp .dbline 0 ; func end rts _transmettre_CRLF:: ; /**************************************************************************/ ; void transmettre_CRLF(void) ; { ; SCIDRL = 0x0A; // fin de ligne = end of line ldab #10 stab 0xcf L48: L49: ; while ( (SCISR1 & 0x80) == 0) ; // attendre le flag TDRE brclr 0xcc,#128,L48 ; SCIDRL = 0x0D; // retour � la ligne = line feed ldab #13 stab 0xcf L51: L52: ; while ( (SCISR1 & 0x80) == 0) ; // attendre le flag TDRE brclr 0xcc,#128,L51 ; ; } L47: .dbline 0 ; func end rts ; ptr -> -2,x _main:: pshx tfr s,x leas -2,sp ; /**************************************************************************/ ; void main(void) ; { ; /*char buffer[10]=""; ; ; char v; ; char *ptr; ; ; buffer[0]='A'; ; buffer[1]='b'; ; buffer[2]='c'; ; buffer[3]='d'; ; ; v=buffer[2]; ; p=ascii; ; ecrire_chaine(p);*/ ; ; char *ptr; ; ; COPCTL=0x00; clr 0x3c ; init_ADC(); jsr _init_ADC ; init_SCI(9600); ldd #9600 jsr _init_SCI bra L56 L55: jsr _transmettre_CRLF jsr _acquisition jsr _traitement jsr _conversion_decimal jsr _conversion_Ascii ldd #_ascii std -2,x ldd -2,x jsr _envoi_chaine L56: ; ; while(1) bra L55 X0: ; { transmettre_CRLF(); ; acquisition(); ; traitement(); ; conversion_decimal(); ; conversion_Ascii(); ; ptr=ascii; ; envoi_chaine(ptr); ; } ; } L54: tfr x,s pulx .dbline 0 ; func end rts .area bss _ascii:: .blkb 8 _canal:: .blkb 16 _val:: .blkb 2 _Unite:: .blkb 2 _Dizaine:: .blkb 2 _Centaine:: .blkb 2 _Mille:: .blkb 2