您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于MSP430的计时器程序
#includemsp430x14x.h#definekeyin(P3IN&0x00)typedefunsignedcharuchar;typedefunsignedintuint;uintfen=0;uintmiao=0;uinti=0;ucharshuzi[10]={0x3c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intv)/*去抖延时&扫描函数*/{while(v!=0)v--;}ucharshedingmiao()/*秒的设定*/{if(i!=4){if(miao==59)miao=0;elsemiao++;}returnmiao;}ucharshedingfen()/*分的设定*/{if(i!=3){if(fen==59)fen=0;elsefen++;}returnfen;}voiddisplay(ucharf,ucharm){P1OUT=shuzi[f/10];P6OUT|=0x02;P6OUT&=0xfd;/*分十位显示*/P1OUT=0x01;P6OUT|=0x01;P6OUT&=0xfeE;delay(900);P1OUT=shuzi[f%10];P6OUT|=0x02;P6OUT&=0xfd;/*分个位显示*/P1OUT=0x02;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m/10];P6OUT|=0x02;P6OUT&=0xfd;/*秒十位显示*/P1OUT=0x04;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m%10];P6OUT|=0x02;P6OUT&=0xfd;/*秒个位显示*/P1OUT=0x08;P6OUT|=0x01;P6OUT&=0xfe;delay(900);}voidmain(){uchartemp;WDTCTL=WDTPW+WDTHOLD;P6DIR=0xff;/*控制段位*/P3DIR=0x00;/*控制时间设定*/P1DIR=0xff;/*控制输出显示*/CCTL0=CCIE;CCR0=4095;TACTL=TASSEL_2+MC_2;_EINT();if(i!=1){fen=0;miao=0;}elsefen=shedingfen();miao=shedingmiao();while(1){if(keyin!=0x00)//如果有键被按下{delay(12000);//延时消抖if(keyin!=0x00)//再次检测按键状态{temp=keyin;switch(temp)//转换键值{case0x80:i=1;break;case0x40:i=2;break;case0x20:i=3;break;case0x10:i=4;break;default:i=0;break;}}}display(fen,miao);LPM3;}}#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){CCR0+=4095;if(i!=2){if(miao==0){miao=59;fen--;{if(fen==0)fen=59;}}elsemiao--;}}#includemsp430x14x.h#definekeyin(P3IN&0x00)typedefunsignedcharuchar;typedefunsignedintuint;uintfen=0;uintmiao=0;uinti=0;ucharshuzi[10]={0x3c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intv)/*去抖延时&扫描函数*/{while(v!=0)v--;}ucharshedingmiao()/*秒的设定*/{if(i!=4){if(miao==59)miao=0;elsemiao++;}returnmiao;}ucharshedingfen()/*分的设定*/{if(i!=3){if(fen==59)fen=0;elsefen++;}returnfen;}voiddisplay(ucharf,ucharm){P1OUT=shuzi[f/10];P6OUT|=0x02;P6OUT&=0xfd;/*分十位显示*/P1OUT=0x01;P6OUT|=0x01;P6OUT&=0xfeE;delay(900);P1OUT=shuzi[f%10];P6OUT|=0x02;P6OUT&=0xfd;/*分个位显示*/P1OUT=0x02;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m/10];P6OUT|=0x02;P6OUT&=0xfd;/*秒十位显示*/P1OUT=0x04;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m%10];P6OUT|=0x02;P6OUT&=0xfd;/*秒个位显示*/P1OUT=0x08;P6OUT|=0x01;P6OUT&=0xfe;delay(900);}voidmain(){uchartemp;WDTCTL=WDTPW+WDTHOLD;P6DIR=0xff;/*控制段位*/P3DIR=0x00;/*控制时间设定*/P1DIR=0xff;/*控制输出显示*/CCTL0=CCIE;CCR0=4095;TACTL=TASSEL_2+MC_2;_EINT();if(i!=1){fen=0;miao=0;}elsefen=shedingfen();miao=shedingmiao();while(1){if(keyin!=0x00)//如果有键被按下{delay(12000);//延时消抖if(keyin!=0x00)//再次检测按键状态{temp=keyin;switch(temp)//转换键值{case0x80:i=1;break;case0x40:i=2;break;case0x20:i=3;break;case0x10:i=4;break;default:i=0;break;}}}display(fen,miao);LPM3;}}#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){CCR0+=4095;if(i!=2){if(miao==0){miao=59;fen--;{if(fen==0)fen=59;}}elsemiao--;}}#includemsp430x14x.h#definekeyin(P3IN&0x00)typedefunsignedcharuchar;typedefunsignedintuint;uintfen=0;uintmiao=0;uinti=0;ucharshuzi[10]={0x3c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intv)/*去抖延时&扫描函数*/{while(v!=0)v--;}ucharshedingmiao()/*秒的设定*/{if(i!=4){if(miao==59)miao=0;elsemiao++;}returnmiao;}ucharshedingfen()/*分的设定*/{if(i!=3){if(fen==59)fen=0;elsefen++;}returnfen;}voiddisplay(ucharf,ucharm){P1OUT=shuzi[f/10];P6OUT|=0x02;P6OUT&=0xfd;/*分十位显示*/P1OUT=0x01;P6OUT|=0x01;P6OUT&=0xfeE;delay(900);P1OUT=shuzi[f%10];P6OUT|=0x02;P6OUT&=0xfd;/*分个位显示*/P1OUT=0x02;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m/10];P6OUT|=0x02;P6OUT&=0xfd;/*秒十位显示*/P1OUT=0x04;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m%10];P6OUT|=0x02;P6OUT&=0xfd;/*秒个位显示*/P1OUT=0x08;P6OUT|=0x01;P6OUT&=0xfe;delay(900);}voidmain(){uchartemp;WDTCTL=WDTPW+WDTHOLD;P6DIR=0xff;/*控制段位*/P3DIR=0x00;/*控制时间设定*/P1DIR=0xff;/*控制输出显示*/CCTL0=CCIE;CCR0=4095;TACTL=TASSEL_2+MC_2;_EINT();if(i!=1){fen=0;miao=0;}elsefen=shedingfen();miao=shedingmiao();while(1){if(keyin!=0x00)//如果有键被按下{delay(12000);//延时消抖if(keyin!=0x00)//再次检测按键状态{temp=keyin;switch(temp)//转换键值{case0x80:i=1;break;case0x40:i=2;break;case0x20:i=3;break;case0x10:i=4;break;default:i=0;break;}}}display(fen,miao);LPM3;}}#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){CCR0+=4095;if(i!=2){if(miao==0){miao=59;fen--;{if(fen==0)fen=59;}}elsemiao--;}}#includemsp430x14x.h#definekeyin(P3IN&0x00)typedefunsignedcharuchar;typedefunsignedintuint;uintfen=0;uintmiao=0;uinti=0;ucharshuzi[10]={0x3c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intv)/*去抖延时&扫描函数*/{while(v!=0)v--;}ucharshedingmiao()/*秒的设定*/{if(i!=4){if(miao==59)miao=0;elsemiao++;}returnmiao;}ucharshedingfen()/*分的设定*/{if(i!=3){if(fen==59)fen=0;elsefen++;}returnfen;}voiddisplay(ucharf,ucharm){P1OUT=shuzi[f/10];P6OUT|=0x02;P6OUT&=0xfd;/*分十位显示*/P1OUT=0x01;P6OUT|=0x01;P6OUT&=0xfeE;delay(900);P1OUT=shuzi[f%10];P6OUT|=0x02;P6OUT&=0xfd;/*分个位显示*/P1OUT=0x02;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m/10];P6OUT|=0x02;P6OUT&=0xfd;/*秒十位显示*/P1OUT=0x04;P6OUT|=0x01;P6OUT&=0xfe;delay(900);P1OUT=shuzi[m%10];P6OUT|=0x02;P6OUT&=0xfd;/*秒个位显示*/P1OUT=0x08;P6OUT|=0x01;P6OUT&=0xfe;delay(900);}voidmain(){uchartemp;WDTCTL=WDTPW+WDTH
本文标题:基于MSP430的计时器程序
链接地址:https://www.777doc.com/doc-2403970 .html