新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16F877A 看門狗定時器實驗

        PIC16F877A 看門狗定時器實驗

        作者: 時間:2016-11-11 來源:網絡 收藏
        //*******************PIC16F877A 看門狗定時器實驗*******************

        //
        //PORTA,PORTB,PORTC,PORTD,PORTE復位時為輸入狀態
        //PORTA.4(RA4)為開漏輸出
        //
        //WDT運行于獨立的內部RC振蕩器,即使器件時鐘停振,WDT仍正常工作
        //PIC16F877A單片機的WDT只能在燒寫芯片時通過配置位啟動或停止
        //WDT基本溢出時間為18ms,由于溫度影響,該值在7-33ms之間變化
        //WDT和TMR0共用一個預分頻器
        //PSA=1; //預分頻器分配給WDT使用
        //PS2 PS1 PS0 WDT
        // 0 0 0 1 分頻
        // 0 0 1 2 分頻
        // 0 1 0 4 分頻
        // 0 1 1 8 分頻
        // 1 0 0 16 分頻
        // 1 0 1 32 分頻
        // 1 1 0 64 分頻
        // 1 1 1 128分頻
        //
        //mcu: PIC16F877A 12MHz
        //2010年7月11日8:03:01
        //****************************************************************

        本文引用地址:http://www.104case.com/article/201611/316850.htm

        #include
        __CONFIG(HS&WDTEN&LVPDIS&PWRTEN);
        //HS振蕩,打開看門狗,低壓編程關閉,啟動延時定時器

        //********************函數定義*********************
        void delay1ms(uint DelayTime);

        //*************** 主程序 ********************
        void main(void)
        {
        PSA=1; //預分頻器分配給WDT使用
        PS2=1;
        PS1=1;
        PS0=1; //預分頻器128分頻
        TRISC=0x00; //PORTC口設置為輸出
        PORTC=0x00;
        CLRWDT(); //清看門狗

        while(1)
        {
        PORTC++;
        delay1ms(200);
        }
        }

        //***************延時 n*1ms 12MHz***************
        void delay1ms(uint DelayTime)
        { uint temp;
        for(;DelayTime>0;DelayTime--)
        { for(temp=0;temp<270;temp++)
        {;}
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 西乌珠穆沁旗| 巩留县| 台南县| 鸡西市| 五河县| 盐津县| 阿克| 青岛市| 宝鸡市| 营口市| 梅州市| 共和县| 安塞县| 仁布县| 伽师县| 洛隆县| 边坝县| 五指山市| 宣恩县| 龙山县| 北安市| 清原| 红河县| 黄梅县| 吉林省| 独山县| 长乐市| 视频| 青川县| 乌兰浩特市| 平顺县| 柘荣县| 长武县| 安平县| 林州市| 白玉县| 康马县| 板桥市| 龙江县| 沈阳市| 东丰县|