#include <msp430x24x.h> #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;} }*/
msp430 timerA interrupt
最新推荐文章于 2024-09-12 08:14:36 发布