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

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

        MEGA16單片機定時器(16位)源代碼

        作者:肖邦   來源:本站原創   點擊數:  更新時間:2014年03月10日   【字體:
        /*
                 程序名:  mega16a 芯片16位定時計數器;
         
         概括:  學會了控制8位定時器,16位定時器和它如出一轍,It's a piece of cake!
            在芯片開發板上實現精確一秒閃爍...
         
                            心得 :   電子技術和音樂一樣 ,都是一門藝術,令人回味...
         
                      finish time:  2014年3月8日19:33:10;
               作者 :  肖邦;
         
        */
         
        #include <avr/io.h>                       //頭文件;
        typedef unsigned char uint8 ;    //在程序中用 uint8  相當于寫 unsigned char ;
        typedef unsigned int  uint16;    //用法同上;
         
         
         
        void reset_io(void)     //初始化所有io口;
        {
          DDRA=0XFF;
          PORTA=0X00;
          
          DDRB=0XFF;
          PORTB=0X00;
          
          DDRC=0XFF;
          PORTC=0X00;
          PORTC|=1<<5;  //12864液晶屏復位引腳置1;
          PORTC&=~(1<<5);   //12864 清零 (復位) ;
          PORTC|=1<<5;  //12864液晶屏復位引腳置1;
         
          DDRD=0XFF;
          PORTD=0X00;
         
        }
         
         
         
        int main(void)         //主函數!!!!!
        {
         
          uint16 num=0;
           reset_io(); //初始化io口;
         
           TCNT1=0xff44; //設置定時器初始值,1毫秒溢出一次  0xff45==65536-(12兆/64分頻*0.001秒);
           TCCR1B=0x03; //( 64分頻 )設置定時器分頻并開啟定時器;
           PORTB=1<<2;
           while(1)
            {
          if(TIFR&0X04)       //一旦溢出標志位置一,就進入;  
           {
         // PORTA^=0XFF;  //物理引腳PA口跳變,此語句沒用;   
                   num++;
         
          if(num==1000) {PORTA^=0XFF;num=0;}   每一毫秒num變量加一,加1000次是你秒;
          TCNT1=0XFF44;  //回復初始值;
          TIFR|=0X04;   //此語句很重要!!!!!!溢出標志位只有置一才會自動清零;
         
        }
         
         
        }
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮