msp430 timerA interrupt

来源:互联网 发布:魔法王座升阶数据汇总 编辑:程序博客网 时间:2024/05/21 17:48
#include <msp430x24x.h>#define uchar unsigned char#define uint unsigned intuchar   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 1P4OUT  = table[num];  //DUAN NUMP6OUT &= 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 ,中断向量timerA1int 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;} }*/


	
				
		
原创粉丝点击