#include <msp430g2553.h>
int i=0,count=0,d1=0,d2=0,d3=0;
int num[10]= {0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
void main()
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
TACTL = TASSEL_2 + MC_1 + ID_3; // SMCLK/8, upmode
CCR0 = 313; // 400 Hz->313
CCTL0 = CCIE; // CCR0 interrupt enabled
P1DIR |= 0xFF; // All P1 pins output
P1OUT = 0x00;
_BIS_SR( GIE);
P2DIR=0xFF;
// P2SEL=0xFF;
P2OUT=0xFF;
while(1)
{
for (count=0;count<999;count++)
{
d1++;
if(d1>8)
{
d1=0;
d2++;
if(d2>8)
{
d2=0;
d3++;
}
}
_delay_cycles(500000);
}
d1=0;
d2=0;
d3=0;
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
if(i==0)
{
P1OUT=num[d1];
//i++;
P2OUT|=BIT2;
P2OUT&=~BIT1;
i=1;
}
else if(i==1)
{
P1OUT=num[d2];
//i++;
P2OUT|=BIT1;
P2OUT&=~BIT0;
i=2;
}
else if(i==2)
{
P1OUT=num[d3];
//i++;
P2OUT|=BIT0;
P2OUT&=~BIT2;
i=0;
}
}