新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MEGA16單片機定時器(16位)源代碼

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

        作者: 時間:2016-12-01 來源:網絡 收藏
        /*
        程序名: mega16a 芯片16位定時計數器;
        概括: 學會了控制8位定時器,16位定時器和它如出一轍,Its 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; //此語句很重要!!!!!!溢出標志位只有置一才會自動清零;
        }
        }
        }


        關鍵詞: MEGA16單片機定時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 上饶市| 宽甸| 洪洞县| 平舆县| 南投县| 广德县| 临漳县| 洛宁县| 泾阳县| 辽源市| 扶风县| 寿阳县| 逊克县| 新干县| 昌邑市| 怀宁县| 泰顺县| 惠东县| 大渡口区| 德庆县| 涟水县| 望都县| 广西| 孝感市| 平陆县| 长沙市| 苗栗县| 资源县| 双鸭山市| SHOW| 江门市| 泾川县| 介休市| 高要市| 南涧| 绍兴市| 嵊泗县| 罗山县| 吴川市| 马龙县| 青川县|