文档详情

基于msp430g2211实现的简易信号发生器sas65150【ppt】.ppt

发布:2018-08-28约1.02万字共45页下载文档
文本预览下载声明
定时器TA中断服务程序 产生正弦波 #pragma vector=TIMERA0_VECTOR __interrupt void TA_ISR (void) { if(WaveSelect==5)//Sine {Count_line++; if(Count_lineSin_line) {TACCR1=sin[M]; M+=Delt_M; if(M=1024) M=M-1024; Count_line=0; } } * if(WaveSelect==10)//Triangle { Count_line++; if(Count_line3) { if((Count=1405)(Rise==1))//三角波上升 { Count+=f_out; if(Count1405) { Count=2810-Count; Rise=0; TACCR1=Count; Count_line=0; return; } } * 定时器TA中断服务程序 产生三角波 if(Rise==0)//三角波下降 { if(Count=f_out)Count-=f_out; else { Count=f_out-Count; Rise=1; } } TACCR1=Count; Count_line=0; } } * 定时器TA中断服务程序 产生三角波 if(WaveSelect==15)//Sawtooth { Count_line++; if(Count_line6) { Count+=f_out; if(Count=1405)Count-=1405; TACCR1=Count; Count_line=0; } } } * 定时器TA中断服务程序 产生锯齿波 P1口中断服务程序 #pragma vector=PORT1_VECTOR __interrupt void P1_ISR_KEYS(void) { unsigned int i,Keytime1=0,Keytime2=0; unsigned char PushKey; PushKey=P1IFG(BIT6+BIT7); for(i=0;i1000;i++); if((P1INPushKey)==PushKey) { P1IFG=0;return; } if(PushKeyBIT6)//对应电路板上的S3 S3:Disable Output { TACCTL0|=CCIE;//开TA中断,允许输出信号 } * if(PushKeyBIT7)//对应电路板上的S4 S4:Sub { while((P1INBIT7)==0)//判断按键是否是长按 { Keytime1++; if(Keytime160000) { Keytime2++; Keytime1=0; if(Keytime210) { if(f_out) f_out-=5; Keytime2=0; } } } if(f_out) f_out-=1; } P1IFG=0; return; } * P1口中断服务程序 #pragma vector=PORT2_VECTOR __interrupt void P2_ISR_KEYS(void) { unsigned int i,Keytime1=0,Keytime2=0; unsigned char PushKey; PushKey=P2IFG(BIT6+BIT7); for(i=0;i1000;i++); if((P2INPushKey)==PushKey) { P2IFG=0;return; } if(PushKeyBIT6)//对应电路板上的S6 S6:Select Wave { TACCTL0=~CCIE; WaveSelect+=5; switch(WaveSelect) { case 5: TACCR0=255;P1OUT|=BIT5;P1OUT=~(BIT3+BIT4);break; case 10: TACCR0=1405;P1OUT|=BIT4;P1OUT=~(BIT3+BIT5);break; case 15: TACCR0=1405;P1OUT|=BIT3;P1OUT=~(BIT4+BIT5);break; //
显示全部
相似文档