#include "msp430.h" org 0x4400 ;* main: // DINT ;* disabilita gli interrupt MOV.W #0x2400,SP ;* INIZIALIZZA LO STACK POINTER //;*** INIZIALIZZAZIONE REGISTRI OSCILLATORE ************** ;*********** INIZIALIZZAZIONE I/O *********************** MOV.B #00010000b,&P1OUT;* PORTA 1 MOV.B #00000000b,&P2OUT;* PORTA 2 MOV.B #00000000b,&P3OUT;* PORTA 3 MOV.B #00001100b,&P4OUT;* PORTA 4 MOV.B #00000000b,&P5OUT;* PORTA 5 MOV.B #00000000b,&P6OUT;* PORTA 6 MOV.B #00011111b,&P7OUT;* PORTA 7 MOV.B #00000000b,&P9OUT;* PORTA 9 MOV.W #00000000b,&PJOUT;* TUTTE LE USCITE AD OFF MOV.B #11110000b,&P1DIR;* SP EGNE I DIGIT DEL DISPLAY CON MOV.B #00001101b,&P2DIR;* TUTTE LE USCITE AD OFF MOV.B #11111111b,&P3DIR;* TUTTE LE USCITE AD OFF MOV.B #01111111b,&P4DIR;* TUTTE LE USCITE AD OFF MOV.B #10000000b,&P5DIR;* TUTTE LE USCITE AD OFF MOV.B #11111111b,&P6DIR;* TUTTE LE USCITE AD OFF MOV.B #11111111b,&P7DIR;* TUTTE LE USCITE AD OFF MOV.B #10001111b,&P9DIR;* TUTTE LE USCITE AD OFF MOV.W #11110000b,&PJDIR;* TUTTE LE USCITE AD OFF ;* MOV.W #11110010b,&PJDIR;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJSEL0*/ MOV.B #00001111b,&P1SEL0;* 4 A TO D MOV.B #00001111b,&P1SEL1;* 4 A TO D MOV.B #00000011b,&P2SEL0;* RS2332 MOV.B #00000000b,&P2SEL1;* RS2332 MOV.B #00000000b,&P3SEL0;* MOV.B #00000000b,&P3SEL1 MOV.B #00000000b,&P4SEL0;* SPI MOV.B #11110000b,&P4SEL1;* SPI MOV.B #00000000b,&P5SEL0;* MOV.B #00000000b,&P5SEL1;* MOV.B #00000000b,&P6SEL0;* MOV.B #00000000b,&P6SEL1;* MOV.B #00000000b,&P7SEL0;* MOV.B #00000000b,&P7SEL1;* MOV.B #00000000b,&P9SEL0;* MOV.B #00000000b,&P9SEL1;* MOV.W #11110000b,&PJSEL0;* ;* MOV.W #11110010b,&PJSEL0;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJDIR*/ MOV.W #00000000b,&PJSEL1;* // ??? MOV.B #11111111B,&P3REN;* PULL UP DOWN BIC.W #LOCKLPM5,&PM5CTL0;* ATTIVA GLI I/O ALTRIMENTI SONO IN TRISTATE MOV.B #00H,&P3OUT ;* ??? NOP #define CS_OUT BIT5 BIS.B CS_OUT,&P1OUT NOP NOP BIC.B CS_OUT,&P1OUT OFF_COLONNE // ??? /******************************************************************************/ MOV.W #FRCTLPW+NWAITS1,&FRCTL0 /* WAIT STATES 1 */ MOV.W #WDTPW|WDTHOLD,&WDTCTL // ??? clr_ramandreg: // ??? MOV.W #0x1C00,R14 MOV.W #0x2400,R15 loop: MOV.W #0,0(R14) ADD.W #2,R14 CMP.W R14,R15 JNZ loop MOV.W #0,R15 // ??? ... MOV.W #0,R14 MOV.W #0,R13 MOV.W #0,R12 MOV.W #0,R11 MOV.W #0,R10 MOV.W #0,R9 MOV.W #0,R8 MOV.W #0,R7 MOV.W #0,R6 MOV.W #0,R5 MOV.W #0,R4 // ... ??? /********************* ATTIVAZIONE BASE TIMER **********************/ MOV.W #(TASSEL1+TACLR+MC__UP),&TA0CTL ;SOURCE FROM SMCLK ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ??? MOV.W #0xF000-1,&TA0CCR0 // ??? // MOV.W #(CCIE),&TA0CCTL0 // !!! MOV.W #(TASSEL0+TACLR+MC__UP+ID0+ID1),&TA1CTL ;SOURCE FROM ACLK / 8 ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ??? MOV.W #0x1000-1,&TA1CCR0 // ??? // MOV.W #(CCIE),&TA1CCTL0 // !!! /******************************************************************************************/ MOV.W #(REFVSEL0+REFVSEL1+REFGENOT+REFBGOT+REFON),&REFCTL0 /* 2,5 VOLT INTERNAL REFERENCE */ // !!! BIS.W #(ADC12CONSEQ0+ADC12SHP),&ADC12CTL1 /* SINGOLA CONVERSIONE DI SEQUENZA DI CANALI */ BIS.W #ADC12RES1,&ADC12CTL2 BIS.W #(ADC12TCMAP+ADC12BATMAP),&ADC12CTL3 BIS.W #(ADC12VRSEL0),&ADC12MCTL0 BIS.W #(ADC12VRSEL0+ADC12INCH0),&ADC12MCTL1 BIS.W #(ADC12VRSEL0+ADC12INCH1),&ADC12MCTL2 BIS.W #(ADC12VRSEL0+ADC12INCH0+ADC12INCH1+ADC12EOS),&ADC12MCTL3 BIS.W #(ADC12MSC+ADC12ON),&ADC12CTL0 // !!! do this last // MOV.W #00H,&ADC12IER0 // BIS.W #ADC12IE3,&ADC12IER0 /* ABILITA L'INTERRUPT DEL CANALE 3 */ /******************************************************************************************/ /******************************** LAMP TEST DEL DISPLAY ***************************************/ flip: XOR.B #BITx,&PyOUT // !!! ??? !!! ??? !!! ??? flip LED lamp wait: BIT.W #CCIFG,&TA0CCTL0 JZ wait BIC.W #CCIFG,&TA0CCTL0 JMP flip NOP org 0xFFFE DW main END