Sunteți pe pagina 1din 2

#include "io430.h" short int i=1; void envia(char *msg); void main( void ) { UCA0CTL1_bit.UCSWRST=1;//setando UCSWRST.

// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //configurao dos pinos Rx e Tx P1SEL_bit.P1=1; // Pino p1.1 como Rx, USCI, UART mode P1SEL2_bit.P1=1; CAPD_bit.CAPD1=0; P1SEL_bit.P2=1; //Pino 1.2 como TX P1SEL2_bit.P2=1; P1DIR_bit.P3=0; // configura como entrada P1DIR_bit.P4=1; //Pino 1.4 sada--> funo: acender um led na p1.4 P1REN_bit.P4=1; // habilita o resistor de pull-up. //configurao do clock BCSCTL1 = CALBC1_8MHZ; //Configura o clock para 8MHz DCOCTL = CALDCO_8MHZ; //---------------configurao da USCIA0----------------------------UCA0CTL0_bit.UCPEN=0;// sem paridade. UCA0CTL0_bit.UC7BIT=0;// oito bits de dados. UCA0CTL0_bit.UCMODE0=0;// modo assncrono. UCA0CTL0_bit.UCMODE1=0; UCA0CTL0_bit.UCSPB=0;//um bit de stop. UCA0CTL1_bit.UCSSEL0=0;//configurao so SMCLK. UCA0CTL1_bit.UCSSEL1=1; //-------------------- configurao de baud rate (9600)-----------------------UCA0BR0=0x41; UCA0BR1=0x03; UCA0MCTL_bit.UCBRF0=0; UCA0MCTL_bit.UCBRF1=0; UCA0MCTL_bit.UCBRF2=0; UCA0MCTL_bit.UCOS16=0; UCA0CTL1_bit.UCSWRST=0;//resetando UCSWRST. //-----------------------interrupes----------------------------------------__enable_interrupt(); IE2_bit.UCA0RXIE=1;// habilitao da interrupo da recepo serial. IE2_bit.UCA0TXIE=1; // habilitao da interrupo da transmisso serial. //IFG2_bit.UCA0TXIFG=1, isso ocorre quando a transmisso foi completa e no h mais n ada em UCA0TXBUF. //IFG2_bit.UCA0RxIFG=1, isso ocorre quando tiver sido recebido um caractere comp leto. while(1){ if(i==1){ envia("prog");} } } void envia(char *msg){ i++; UCA0TXBUF='A'; while(*msg){ UCA0TXBUF=*(msg);//aponta para o conteudo do caractere

msg++;// novo caractere a ser enviado while(!IFG2_bit.UCA0TXIFG){//espera a transmisso estar completa} } } IFG2_bit.UCA0TXIFG=0;// zera a flag pra habilitar uma nova interrupo }

S-ar putea să vă placă și