新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stc12c單片機掉電模式

        stc12c單片機掉電模式

        作者: 時間:2016-12-03 來源:網絡 收藏

        POF:是判斷是上電復位還是中斷復位和看門狗復位;

        本文引用地址:http://www.104case.com/article/201612/325231.htm
        PD:置1時,進入power down模式,可由外部中斷低電平觸發或下降沿觸發中斷模式喚醒,也可啟動掉電喚醒專用定時器喚醒。喚醒引腳有:INT0/P3.2 ,INT1/P3.3 ,INT/T0/P3.4 ,INT/T1/P3.5 ,/INT/RXD/P3.0 ...
        IDL:置位,進入IDLE模式,除CPU不工作外,其余繼續工作,可由任何一個中斷喚醒
        GF1,GF0:兩個通用工作標志位,用戶可由任意使用
        SMOD:波特率倍速位,置1,串口通訊波特率快一倍
        外部中斷喚醒:
        #include
        uchar temp=0xf0; //指示標志
        //外部中斷初始化
        void InitInterrupt()
        {
        EX0=1;
        IT0=1;
        IT1=1;
        EX1=1;
        EA=1;
        }
        //延時函數1s
        void delay(void) //誤差 0us
        {
        unsigned char a,b,c;
        for(c=167;c>0;c--)
        for(b=171;b>0;b--)
        for(a=86;a>0;a--);
        // _nop_; //if Keil,require use intrins.h
        }
        //主函數
        void main()
        {

        uchar num; //指示變量,用于賦值給p2口
        InitInterrupt(); //中斷初始化
        while(1)
        {
        num++; //每次睡眠喚醒加1
        P2=~num; //用p2口顯示出來
        PCON=0X02; //進入睡眠模式
        }
        }
        //外部中斷0
        void inter0() interrupt 0
        {
        temp=~temp;
        P1=temp;
        delay();
        }
        //外部中斷1
        void inter1() interrupt 1
        {
        temp=~temp;
        P1=temp;
        delay();
        }
        //工作在空閑模式,可以使用定時器
        #include
        uchar temp=0xf0; //指示標志
        //外部中斷初始化
        //延時函數1s
        void delay(void) //誤差 0us
        {
        unsigned char a,b,c;
        for(c=167;c>0;c--)
        for(b=171;b>0;b--)
        for(a=86;a>0;a--);
        // _nop_; //if Keil,require use intrins.h
        }

        void InitTimer0(void)
        {
        TMOD = 0x01;
        TH0 = 0x4C;
        TL0 = 0x00;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
        }
        //主函數
        void main()
        {

        uchar num; //指示變量,用于賦值給p2口
        InitTimer0();
        while(1)
        {
        num++; //每次睡眠喚醒加1
        P2=~num; //用p2口顯示出來
        PCON=0X01; //進入睡眠模式
        }
        }
        void Timer0Interrupt(void) interrupt 1
        {
        TH0 = 0x4C;
        TL0 = 0x00;
        temp=~temp;
        P1=temp;
        delay();
        //add your code here!
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 林州市| 乌拉特中旗| 武穴市| 锡林浩特市| 贵南县| 南溪县| 砀山县| 哈巴河县| 竹溪县| 永平县| 绍兴县| 荔浦县| 五指山市| 江孜县| 田阳县| 九寨沟县| 奈曼旗| 定襄县| 类乌齐县| 蒙自县| 洛南县| 栖霞市| 蕉岭县| 怀宁县| 靖宇县| 镇雄县| 确山县| 沈阳市| 扎囊县| 静安区| 隆昌县| 泗洪县| 延安市| 元氏县| 东方市| 德昌县| 南郑县| 开远市| 湾仔区| 大荔县| 石景山区|