#include
#define uchar unsigned char
#define uint unsigned int
uchar table[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar position[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar count=1,count1=0,i,j;
void show(uchar pos,uchar num)
{
P4OUT = 0x00; // tobe all turn off
P6OUT |= 0x40; // DUAN 1
P4OUT = table[num]; //DUAN NUM
P6OUT &= 0XBF; // DUAN 0
P4OUT = 0XFF;
P5OUT |= 0X20;
P4OUT &= position[pos];
P5OUT &= 0XDF;
}
void delayms(uint t)
{
uint i;
while(t--)
for(i=1330;i>0;i--);//进过参数的调整
}
int main(){
WDTCTL = WDTPW + WDTHOLD;
P6DIR |= 0X40; // p6^6 output
P5DIR |=0X20; // P5^5 OUTPUT
P4DIR = 0XFF; // P4 OUTPUT
TACTL = TASSEL_2+MC_2; // mclock ,递增计数0···0xffff
CCTL2 = CCIE ; // 开中断
CCTL1 = CCIE ;
CCR1 = 50000 ;
CCR2 = 25000 ;
_EINT();
while(1)
{
show(0,i);
delayms(10);
show(1,j);
delayms(10);
}
}
#pragma vector = TIMERA1_VECTOR
__interrupt void timer(void)
{
switch(TAIV){ //当访问了taiv 后,taccr1 ccifg自动清零。
case TAIV_TACCR1: count++; if(count==20)
{i++; count = 0; if(i==10)i=0;} break;
case TAIV_TACCR2: count1++; if(count1==10)
{j++; count1 = 0; if(j==10)j=0;} break;
}
}
/*
//wdt timer
int main(){
P6DIR |= 0X40; // p6^6 output
P5DIR |=0X20; // P5^5 OUTPUT
P4DIR = 0XFF; // P4 OUTPUT
WDTCTL = WDT_MDLY_32;
IE1 |= WDTIE;
_EINT();
while(1)
{
show(0,i);
delayms(10);
}
}
#pragma vector = WDT_VECTOR
__interrupt void timer(void)
{
// IFG1 &= ~WDTIFG; 可以不加,自动清零
count++;
if(count ==20) {i++; count =0;if(i==10) i=0;}
}
*/
/*控制led 运用ccr0,ccifg中断
int main(){
P6DIR |= 0X40; // p6^6 output
P5DIR |=0X20; // P5^5 OUTPUT
P4DIR = 0XFF; // P4 OUTPUT
WDTCTL = WDTPW + WDTHOLD;
TACTL = TASSEL_2+MC_3;
//TACTL = 0X0220;
CCTL0 |= BIT4;
CCR0 = 50000;
_EINT();
while(1)
{
show(0,i);
delayms(10);
}
}
#pragma vector = TIMERA0_VECTOR
__interrupt void timer(void)
{
//CCR0+=50000;
count++;
if(count ==20) {i++; count =0;if(i==10) i=0;}
}*/
/*运用溢出中断 taifg ,中断向量timerA1
int main(){
P6DIR |= 0X40; // p6^6 output
P5DIR |=0X20; // P5^5 OUTPUT
P4DIR = 0XFF; // P4 OUTPUT
WDTCTL = WDTPW + WDTHOLD;
TACTL = TASSEL_2+MC_1+TAIE;
CCR0 = 25000;
_EINT();
while(1)
{
show(0,i);
delayms(10);
}
}
#pragma vector = TIMERA1_VECTOR
//#pragma vector = TIMERA0_VECTOR
__interrupt void timer(void)
{
//CCR0+=50000;
TACTL &= ~0X01;
count++;
if(count ==20) {i++; count =0;if(i==10) i=0;}
}*/
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』