新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC18F458單片機休眠狀態工作方式與激活

        PIC18F458單片機休眠狀態工作方式與激活

        作者: 時間:2012-12-11 來源:網絡 收藏

        /*該程序實現工作方式,并由實驗板上的按鍵產生"電平變化中斷"將其從。休眠與的狀態由與D口相連的8個LED顯示。休眠時高4個
        LED發光,低4個LED熄滅; 以后高4個LED熄滅,低4個LED發光*/

        #include"p18f458.h"

        unsignedlong i;

        /*系統初始化子程序*/
        void initial()
        {
        INTCON=0x08;/*全局中斷禁止,"電平變化中斷"只執行喚醒功能*/
        /*清除B口電平變化中斷標志*/
        TRISA=0x00;/*A口設置為輸出*/
        TRISB=0XF0;/*RB1輸出,RB4輸入*/
        TRISD=0X00;/*D口為輸出*/
        TRISE=0x00;/*E口設置為輸出*/
        PORTBbits.RB1=0;
        PORTAbits.RA3=0;
        PORTE=0;/*將K1,K2,K3,K4四條列線置0*/
        PORTB=PORTB;/*讀PORTB的值,鎖存舊值,也為“電平變化
        中斷”作準備*/
        }

        void SLEEP()
        {
        _asm
        SLEEP /*進入*/
        _endasm
        }

        /*主程序*/
        main ()
        {
        initial();/*初始化*/
        PORTD=0X0F;/*高4個LED燈亮*/
        SLEEP();/*單片機開始進入休眠狀態*/
        PORTD=0XF0;/*激活后,低4個LED燈亮*/
        while(1)
        {
        ;
        }

        }
        完畢!
        -----------匯編語言編寫的單片機休眠狀態工作方式與激活-----------------------
        ;該程序實現的休眠工作方式,
        ;http://www.51hei.com已用本站單片機實驗板測試通過本程序
        ;并由實驗板上的按鍵產生"電平變化中斷"將其從休眠狀態中激活.

        LISTP=18F458
        INCLUDE"P18F458.INC"

        COUNTEQU0X20

        ORG0X00
        GOTOMAIN
        ORG0X30

        ;************顯示子程序***************
        DISPLAY
        CLRFPORTA
        MOVWFSSPBUF
        LOOPNOP
        BTFSS PIR1,SSPIF
        GOTO LOOP
        NOP
        BCFPIR1,SSPIF
        BSFPORTA,5;詳細程序語句請參考3. 1. 3節
        RETURN

        ;**********初始化子程序*************
        INITIAL
        BCFINTCON,GIE;全局中斷禁止,"電平變化中斷"只執行喚醒功能
        BSFINTCON,RBIE;PORTB口電平變化中斷允許
        BCFINTCON,RBIF;清除B口電平變化中斷標志
        BCFTRISA,5 ;置RA5為輸出方式,以輸出鎖存信號
        BCFTRISB,1
        BCFTRISA,3
        BCFTRISE,0
        BCFTRISE,1
        BSFTRISB,4 ;設置與鍵盤有關的各口的輸入輸出方式
        BCFTRISC,5
        BCFTRISC,3 ;設置SCK與SDO為輸出方式
        MOVLW0XC0
        MOVWFSSPSTAT ;設置SSPSTAT寄存器
        MOVLW0X30
        MOVWFSSPCON1 ;設置SPI的控制方式,允許SSP方式,并且時鐘下降沿
        ;發送,與"74HC595當其SCLK從低到高平跳變時,串行
        ;輸入數據(DI)移入寄存器"的特點相對應
        BCFPORTB,1
        BCFPORTA,3
        BCFPORTE,0
        BCFPORTE,1;K1,K2,K3,K4四條列線置0, 為電平變化中斷的產生
        ;創造初始條件
        RETURN ;返回

        ;****************************************
        MAINNOP
        CALLINITIAL;初始化
        MOVLW0X08
        MOVWFCOUNT
        MOVLW0XFF;"FF"為"DARK"字符的顯示段碼
        NEXT1
        CALLDISPLAY;在休眠之前使8各LED全顯示"DARK"
        DECFCOUNT,1
        BTFSSSTATUS,Z
        GOTONEXT1
        SLEEP;PIC16F877進入"休眠工作方式"
        NOP
        MOVLW0X08
        MOVWFCOUNT
        MOVLW0X90;"90"為"9"的顯示段碼
        NEXT
        CALLDISPLAY;休眠喚醒之后顯示8個字符"9"
        DECFCOUNT,1
        BTFSSSTATUS,Z
        GOTONEXT
        NOP
        END



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荆州市| 营口市| 安徽省| 金寨县| 中超| 竹溪县| 广平县| 安阳市| 普安县| 山丹县| 大宁县| 固始县| 五莲县| 资源县| 梓潼县| 雅江县| 蓬溪县| 华安县| 常山县| 专栏| 桐梓县| 宿松县| 拜城县| 江北区| 平定县| 县级市| 中卫市| 宝丰县| 张家口市| 姚安县| 汤阴县| 香格里拉县| 西充县| 裕民县| 方山县| 东阳市| 芜湖县| 乐业县| 阳山县| 会泽县| 和静县|