• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 准格尔旗| 安徽省| 恩施市| 深州市| 霍邱县| 天峨县| 宁陕县| 文成县| 休宁县| 新昌县| 城固县| 曲沃县| 兴化市| 中超| 金湖县| 德令哈市| 多伦县| 土默特右旗| 昌乐县| 宿迁市| 舟曲县| 南开区| 托里县| 吉木萨尔县| 广丰县| 长汀县| 万全县| 石门县| 南溪县| 昌都县| 双鸭山市| 光山县| 芦山县| 万州区| 科技| 怀集县| 梧州市| 达尔| 弥渡县| 滕州市| 卢湾区|