#include <msp430.h>
#include "Pwm.h"
#include "Uart.h"
int main(void)
{
WDTCTL = WDTPW | WDTHOLD;
P1DIR |= 0x01;
P4DIR |= 0x80;
P1DIR &= ~(0x01 << 1);
P1OUT = 0x02;
P1REN |= 0x01 << 1;
P2DIR &= ~(0x01 << 1);
P2OUT = 0x02;
P2REN |= 0x01 << 1;
PWM_Init();
TimerA1_Init();
Uart_Init();
_EINT();
P4OUT &= 0x7F;
while(1)
{
if(P2IN & 0x02)
{
if(P1IN & 0x02)
{
TA0CCR3 = 52;
P4OUT &= 0x7F;
}
else
{
TA0CCR3 = 36;
P1OUT &= 0xFE;
P4OUT |= 0x80;
}
}
else
{
TA0CCR3 = 68;
P1OUT |= 0x01;
P4OUT &= 0x7F;
}
}
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TimerA1_isr(void)
{
TA1CTL &= 0xFFFE;
P1OUT ^= 0x01;
return ;
}
#pragma vector=USCI_A0_VECTOR
__interrupt void UsartA0_isr(void)
{
unsigned char i;
UCA0IFG = 0;
i = UCA0RXBUF;
P4OUT |= 0x80;
UCA0TXBUF = i;
return;
}
#include "Uart.h"
void Uart_Init()
{
P3SEL |= 0x38;
UCA0CTL1 |= 0x01;
UCA0CTL1 |= 0x40;
UCA0BR0 = 3;
UCA0BR1 = 0;
UCA0MCTL = 3 << 1;
UCA0CTL1 &= 0xFE;
UCA0IE = 1;
return;
}
#include "Pwm.h"
void PWM_Init()
{
TA0CTL = 0x0110;
TA0CCR0 = 655;
TA0CCTL3 = 0x00E0;
TA0CCR3 = 33;
TA0CCTL4 = 0x00E0;
TA0CCR4 = 48;
P1DIR |= 0x30;
P1SEL |= 0x30;
TA0CTL |= 1 << 2;
}
void TimerA1_Init()
{
TA1CTL = 0x0112;
TA1CCR0 = 32767;
TA1CTL |= 1 << 2;
}