void TimerA_UART_printHex(char hexValue) { unsigned char temp = 0; temp = hexValue & 0xF0; temp >>= 4; if(temp >= 10 ) // letter { temp += 55; } else { temp += 48; } TimerA_UART_tx(temp); temp = hexValue & 0x0F; //temp >>= 4; if(temp >= 10 ) // letter { temp += 55; } else { temp += 48; } TimerA_UART_tx(temp); }
void main(int argc, char *argv[]) { CSL_init(); TACCTL0 &= ~CCIE; // Disable GRACE enabled interrupt // for application specific code TimerA_UART_print("G2xx2 TimerA UART\r\n"); TimerA_UART_print("READY.\r\n"); while (1) { // Wait for incoming character __bis_SR_register(LPM0_bits); // Update board outputs according to received byte if (rxBuffer & 0x01) P1OUT |= 0x01; else P1OUT &= ~0x01; // P1.0 if (rxBuffer & 0x02) P1OUT |= 0x08; else P1OUT &= ~0x08; // P1.3 if (rxBuffer & 0x04) P1OUT |= 0x10; else P1OUT &= ~0x10; // P1.4 if (rxBuffer & 0x08) P1OUT |= 0x20; else P1OUT &= ~0x20; // P1.5 if (rxBuffer & 0x10) P1OUT |= 0x40; else P1OUT &= ~0x40; // P1.6 if (rxBuffer & 0x20) P1OUT |= 0x80; else P1OUT &= ~0x80; // P1.7 if (rxBuffer & 0x40) P2OUT |= 0x40; else P2OUT &= ~0x40; // P2.6 if (rxBuffer & 0x80) P2OUT |= 0x80; else P2OUT &= ~0x80; // P2.7 // Echo received character TimerA_UART_tx(rxBuffer); } }
int checkSerial() { int i; int retvalue = -1; // Iterate trough the received characters for(;rxEchoPos<rxBuffLen;rxEchoPos++) { // if it is not an Enter if(rxBuffer[rxEchoPos] != 13) { // Echo the char back TimerA_UART_tx(rxBuffer[rxEchoPos]); } else { // Echo back correct Enter for the terminal TimerA_UART_print("\r\n"); retvalue = 0; // iterate trough the received characters for(i = 0; i < rxBuffLen-1; i++) { // if it is a number if(rxBuffer[i] > 47 && rxBuffer[i] < 58) { // add to the return value retvalue = retvalue * 10 + rxBuffer[i] - 48; } } // reset the receive buffer rxEchoPos = -1; rxBuffLen = 0; } } return retvalue; }
//------------------------------------------------------------------------------ // main() //------------------------------------------------------------------------------ void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer DCOCTL = 0x00; // Set DCOCLK to 1MHz BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1OUT = 0x00; // Initialize all GPIO P1SEL = UART_TXD + UART_RXD; // Timer function for TXD/RXD pins P1DIR = 0xFF & ~UART_RXD; // Set all pins but RXD to output P2OUT = 0x00; P2SEL = 0x00; P2DIR = 0xFF; __enable_interrupt(); TimerA_UART_init(); // Start Timer_A UART TimerA_UART_print("G2xx1 TimerA UART\r\n"); TimerA_UART_print("READY.\r\n"); for (;;) { // Wait for incoming character __bis_SR_register(LPM0_bits); // Update board outputs according to received byte if (rxBuffer & 0x01) P1OUT |= 0x01; else P1OUT &= ~0x01; // P1.0 if (rxBuffer & 0x02) P1OUT |= 0x08; else P1OUT &= ~0x08; // P1.3 if (rxBuffer & 0x04) P1OUT |= 0x10; else P1OUT &= ~0x10; // P1.4 if (rxBuffer & 0x08) P1OUT |= 0x20; else P1OUT &= ~0x20; // P1.5 if (rxBuffer & 0x10) P1OUT |= 0x40; else P1OUT &= ~0x40; // P1.6 if (rxBuffer & 0x20) P1OUT |= 0x80; else P1OUT &= ~0x80; // P1.7 if (rxBuffer & 0x40) P2OUT |= 0x40; else P2OUT &= ~0x40; // P2.6 if (rxBuffer & 0x80) P2OUT |= 0x80; else P2OUT &= ~0x80; // P2.7 // Echo received character TimerA_UART_tx(rxBuffer); } }
//------------------------------------------------------------------------------ // Prints a string over using the Timer_A UART //------------------------------------------------------------------------------ void TimerA_UART_print(char *string) { while (*string) { TimerA_UART_tx(*string++); } }
void putc(unsigned s) { TimerA_UART_tx(s); }
void TimerA_UART_print(char *string) { // Prints a string using the Timer_A UART while (*string) TimerA_UART_tx(*string++); }
void SendByte(unsigned char touch) { TimerA_UART_init(); TimerA_UART_tx(touch); TimerA_UART_shutdown(); }