www.pudn.com > 149spi.rar > spi.c
#includevoid main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog P1OUT = 0x00; // P1.0 setup for LED output P1DIR |= 0x03; P5SEL |= 0x0E; // P5.1,2,3 SPI option select P5OUT &= ~0x01; P5DIR |= 0x01; //Reset Slave P5DIR &= ~0x01; U1CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master U1TCTL = CKPL + SSEL1 + STC; // Polarity, SMCLK, 3-wire U1BR0 = 0x02; // SPICLK = SMCLK/2 U1BR1 = 0x00; U1MCTL = 0x00; ME2 |= USPIE1; // Module enable U1CTL &= ~SWRST; // SPI enable IE2 |= URXIE1 + UTXIE1; // RX and TX interrupt enable for (i = 0xFFF; i > 0; i--); // Time for slave to ready _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt } #pragma vector=USART1RX_VECTOR __interrupt void SPI1_rx (void) { P1OUT = RXBUF1; // RXBUF1 to TXBUF1 } #pragma vector=USART1TX_VECTOR __interrupt void SPI1_tx (void) { unsigned int i; i = P1IN; i = i >> 4; TXBUF1 = i; // Transmit character }