<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        MSP430F5529/G2553單片機頻率設置程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年08月31日   【字體:

        MSP430F5529/G2553單片機的頻率設置c語言程序:

        #include "msp430F5529.h"

        #define P15_H    (P1IN & BIT5);
        #define P15_L   (P1OUT & (~BIT5));
        int tt=0,temp,kk,i;
        void delay(int ns)
        {
          int kk;
          while(ns--)
            for(kk=0;kk<120;kk++);
        }
        //******A/D轉換函數設置*****//
        void adc1()
        {
         P1SEL |=BIT6;       //轉換模擬信號從P1.6輸入,內部集成了轉換模塊
         ADC12CTL0 =ADC12ON  + ADC12SHT02 + ADC12MSC;
         ADC12CTL1 =ADC12SHP + ADC12CONSEQ_2;
         ADC12MCTL0=ADC12SREF_0+ADC12INCH_6;
         ADC12CTL0 |=ADC12ENC;
        //////一次轉換結束后產生轉換中斷調用ADC中斷函數////
        }
        void MainFre24M(void)
        {
           UCSCTL3 |=SELREF__REFOCLK;
           __bis_SR_register(SCG0);     //disable the FLL control loop
           UCSCTL0=0X0000;//            //Set lowest possible DCOx,MODxSCG0
           UCSCTL1=DCORSEL_6;           //Select DCO range 24MHz opreation
                                       //DCORSEL_x,其中x可選3、4、5、6、7
           UCSCTL3=FLLD_0+731;          //Set DCO Multiplier for 24MHz
                                        //(N+1)*FLLRef=Fdco
                                        //(731+1)*32768=24MHz
                                       //Set FLL DIV =fDCOCLK/2
           __bis_SR_register(SCG0);                 //Enable the FLL control loopSCG0
           UCSCTL4 |=SELA__DCOCLK+SELS__XT1CLK+SELM__DCOCLK;//MCLK Source select
           UCSCTL5 |=DIVPA_2;                       //ACLK output divide
           UCSCTL6 |=XT1DRIVE_3+XCAP_0;             //XT1 cap
        }
        int main(void)
         {
           WDTCTL = WDTPW + WDTHOLD;   // Stop WDT
           MainFre24M();
           UCSCTL3=FLLD_0+731;
           UCSCTL1=DCORSEL_7;
           P1REN |=BIT7;
           P1OUT |=BIT7;
           P1IE |=BIT7;
           P1IES|=BIT7;
           P1IFG&=~BIT7;
          
           P2REN |=BIT2;
           P2OUT |=BIT2;
           P2IE |=BIT2;
           P2IES|=BIT2;
           P2IFG&=~BIT2;
           __enable_interrupt();
           P1DIR |= 0x3f;
           P1DS  |= 0x3f;
           while(1)
             {
               UCSCTL1=DCORSEL_3;
               P1OUT |=BIT5;
               delay(1000);
               P1OUT &=~BIT5;
               delay(1000);     
             }  
         }
        #pragma vector=PORT1_VECTOR
        __interrupt void PORT17ISR(void)
        {
         int i;
         UCSCTL1=DCORSEL_7;
         UCSCTL3=FLLD_7+730;
         for(i=0;i<40;i++)
             {     
               P1OUT |=BIT0;
               delay(1000);
               P1OUT &= ~BIT0;
               delay(1000);     
             }
         P1IFG &=~BIT7;
        }
        #pragma vector=PORT2_VECTOR
        __interrupt void PORT22ISR(void)
        {
         int i;
         UCSCTL1=DCORSEL_7;
         UCSCTL3=FLLD_7+730;
         for(i=0;i<40;i++)
             {     
               P1OUT |=BIT3;
               delay(1000);
               P1OUT &= ~BIT3;
               delay(1000);     
             }
         P2IFG &=~BIT2;
        }
         
        ============風洞=========================
        #include "msp430G2553.h"
        int tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
        int key,temp,time=0,tt=0,m;
        //毫秒延遲函數
        void delay(int ms)
        {
          int i;
          while(ms--)
           for(i=0;i<120;i++);
        }
        //納米延遲函數
        void delayns(int ns)
        {
          while(ns--);
        }
        void qidong()
        {
         if(P1IN==0xff)
            if(P1IN==0x7f)
              if(P1IN==0xbf)
                if(P1IN==0x9f)time=360;
        }
        void xianshi(void)
        {
         // if(m==0xfe)
        }
        void display(temp)//現實位置P2.0=SH;P2.1=ST;P2,2=DS
        {
          int k,temp1,temp2;
           for(k=7;k>=0;k--)
             {
               temp1=1<<k;
               temp2=temp & temp1;
               if(temp2==temp1)
                   {
                     P2OUT |=BIT2;
                   }
               else
                   {
                     P2OUT &=~BIT2;
                   }
               P2OUT &=~BIT0;
               delayns(10);
               P2OUT |=BIT0;
             }
           P2OUT &=~BIT1;
           delayns(10);
           P2OUT |=BIT1;
        }
        int main( void )
        {
          // Stop watchdog timer to prevent time out reset
          WDTCTL = WDTPW + WDTHOLD;
          DCOCTL =CALDCO_16MHZ;
          BCSCTL1=CALBC1_16MHZ;
          BCSCTL2|=SELM_1+DIVM_0;
          P2DIR |=0x0f;//顯示I2C輸出
          P1DIR =0x00;//開啟P1作為位置檢查輸入
         
          int m,temp;
             //顯示
            temp=tab[0];//個位
            display(temp);
            temp=tab[0];//十位
            display(temp);
            tt=0;
             while(1)
             {
              
               m=P1IN;
               qidong();
               xianshi();
               P2OUT |=BIT3;
               delay(time);
               P2OUT &=~BIT3;
               delay(500);
           
             }
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮