#include #include #include "../dconsole/dconsole.h" #define NBIT BIT3 #define PBIT BIT4 #define OUTBIT BIT5 #define OUTBIT 0 #define interrupt(x) void __attribute__((interrupt (x))) void delay_ms(uint16_t ms) { while (ms--) __delay_cycles(16000); } void uart_putc(char data) { UCA0TXBUF = data; while (!(IFG2 & UCA0TXIFG)) ; } void uart_printn(uint16_t n) { char buf[10]; int p = 0; while (p == 0 || n) { buf[p] = '0' + (n % 10); p++; n /= 10; } p--; while (p >= 0) { uart_putc(buf[p]); p--; } uart_putc('\n'); } int main() { uint16_t i; // Disable watchdog WDTCTL = WDTPW | WDTHOLD; // 1MHz internal timer BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; // P2 (XOUT/XIN) as GPIO P2SEL = 0x00; P2SEL2 = 0x00; // UART on P1.2 P1SEL |= 0x02 | 0x04; P1SEL2 |= 0x02 | 0x04; UCA0CTL1 |= UCSSEL_2; // SMCLK clock // http://mspgcc.sourceforge.net/cgi-bin/msp-uart.pl?clock=16000000&baud=9600&submit=calculate //UCA0BR0 = 0x82; //UCA0BR1 = 0x06; //UCA0MCTL = 0x5B; UCA0BR0 = 0x82; UCA0BR1 = 0x06; UCA0MCTL = UCBRS_6; UCA0CTL1 &= ~UCSWRST; uart_putc('\n'); uart_putc('h'); uart_putc('i'); uart_putc('\n'); for (;;) { P1DIR = NBIT | PBIT | OUTBIT; P1OUT &= ~PBIT; P1OUT |= NBIT; __delay_cycles(1000); P1DIR = PBIT | OUTBIT; P1OUT &= ~NBIT; for (i = 0; i < 65000 && (P1IN & NBIT); i++) ; P1DIR = NBIT | PBIT | OUTBIT; if (i < 1000) P1OUT |= PBIT; //P1OUT |= PBIT; /*if (i >= 30000) P1OUT &= ~OUTBIT; else P1OUT |= OUTBIT;*/ __delay_cycles(1000); uart_printn(i); P1OUT &= ~PBIT; //debug_prints(i); //debug_print("\n"); __delay_cycles(1000); } return 0; }