#define USE_MSP_UART //promicro board JP6 (right side) //1 //2 gnd Awire //3 reset //4 vcc //5 //6 //7 //8 //9 sck //10 miso //11 mosi //12 //msp //p1.4 to mosi //p1.5 to miso //p1.6 to sck //p1.7 to reset extern void asmdelay ( unsigned short ); #define WDTCTL (*((volatile unsigned short *)0x0120)) #define CALBC1_1MHZ (*((volatile unsigned char *)0x10FF)) #define CALDCO_1MHZ (*((volatile unsigned char *)0x10FE)) #define CALBC1_8MHZ (*((volatile unsigned char *)0x10FD)) #define CALDCO_8MHZ (*((volatile unsigned char *)0x10FC)) #define CALBC1_12MHZ (*((volatile unsigned char *)0x10FB)) #define CALDCO_12MHZ (*((volatile unsigned char *)0x10FA)) #define CALBC1_16MHZ (*((volatile unsigned char *)0x10F9)) #define CALDCO_16MHZ (*((volatile unsigned char *)0x10F8)) #define DCOCTL (*((volatile unsigned char *)0x56)) #define BCSCTL1 (*((volatile unsigned char *)0x57)) #define BCSCTL2 (*((volatile unsigned char *)0x58)) #define TACTL (*((volatile unsigned short *)0x0160)) #define TAR (*((volatile unsigned short *)0x0170)) #define TACCR0 (*((volatile unsigned short *)0x0172)) #define TACCTL0 (*((volatile unsigned short *)0x0162)) #ifdef USE_MSP_UART #define UCA0CTL0 (*((volatile unsigned char *)0x060 )) #define UCA0CTL1 (*((volatile unsigned char *)0x061 )) #define UCA0BR0 (*((volatile unsigned char *)0x062 )) #define UCA0BR1 (*((volatile unsigned char *)0x063 )) #define UCA0MCTL (*((volatile unsigned char *)0x064 )) #define UCA0STAT (*((volatile unsigned char *)0x065 )) #define UCA0RXBUF (*((volatile unsigned char *)0x066 )) #define UCA0TXBUF (*((volatile unsigned char *)0x067 )) #define UCA0ABCTL (*((volatile unsigned char *)0x05D )) #define UCA0IRTCTL (*((volatile unsigned char *)0x05E )) #define UCA0IRRCTL (*((volatile unsigned char *)0x05F )) #define IE2 (*((volatile unsigned char *)0x001 )) #define UCA0IFG (*((volatile unsigned char *)0x003 )) #endif #define P1IN (*((volatile unsigned char *)0x0020)) #define P1OUT (*((volatile unsigned char *)0x0021)) #define P1DIR (*((volatile unsigned char *)0x0022)) #define P1REN (*((volatile unsigned char *)0x0027)) #define P1SEL (*((volatile unsigned char *)0x0026)) #define P1SEL2 (*((volatile unsigned char *)0x0041)) #define P2IN (*((volatile unsigned char *)0x0028)) #define P2OUT (*((volatile unsigned char *)0x0029)) #define P2DIR (*((volatile unsigned char *)0x002A)) #define P2REN (*((volatile unsigned char *)0x002F)) #define P2SEL (*((volatile unsigned char *)0x002E)) #define P2SEL2 (*((volatile unsigned char *)0x0042)) //TRST output p2.0 //TDI output p2.1 //TMS output p2.2 //TCK output p2.3 //TDO input p2.4 //SRST output p2.5 #define PIN_TRST 0 #define PIN_TDI 1 #define PIN_TMS 2 #define PIN_TCK 3 #define PIN_TDO 4 #define PIN_SRST 5 //------------------------------------------------------------------- void uart_init ( void ) { BCSCTL2 &=~0x06; UCA0CTL0 = 0x00; UCA0CTL1 = 0xC0; UCA0BR0 = 0x08; UCA0BR1 = 0x00; UCA0MCTL = 0xB1; UCA0STAT = 0x00; UCA0ABCTL = 0x00; IE2 = 0x00; P1SEL |= 0x06; P1SEL2 |= 0x06; } //------------------------------------------------------------------- void uart_putc ( unsigned char c ) { while((UCA0IFG&0x02)==0) continue; UCA0TXBUF=c; } //------------------------------------------------------------------- unsigned char uart_getc ( void ) { while((UCA0IFG&0x01)==0) continue; return(UCA0RXBUF); } //------------------------------------------------------------------- void hexstrings ( unsigned short d ) { //unsigned short ra; unsigned short rb; unsigned short rc; rb=16; while(1) { rb-=4; rc=(d>>rb)&0xF; if(rc>9) rc+=0x37; else rc+=0x30; uart_putc(rc); if(rb==0) break; } uart_putc(0x20); } //------------------------------------------------------------------- void hexstring ( unsigned short d ) { #ifdef USE_MSP_UART hexstrings(d); uart_putc(0x0D); uart_putc(0x0A); #endif } //------------------------------------------------------------------- //------------------------------------------------------------------- #define SET_MOSI P1OUT|=(1<