<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC18F458單片機休眠狀態(tài)工作方式與激活

          PIC18F458單片機休眠狀態(tài)工作方式與激活

          作者: 時間:2012-12-11 來源:網(wǎng)絡 收藏

          /*該程序?qū)崿F(xiàn)工作方式,并由實驗板上的按鍵產(chǎn)生"電平變化中斷"將其從。休眠與的狀態(tài)由與D口相連的8個LED顯示。休眠時高4個
          LED發(fā)光,低4個LED熄滅; 以后高4個LED熄滅,低4個LED發(fā)光*/

          #include"p18f458.h"

          unsignedlong i;

          /*系統(tǒng)初始化子程序*/
          void initial()
          {
          INTCON=0x08;/*全局中斷禁止,"電平變化中斷"只執(zhí)行喚醒功能*/
          /*清除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();/*單片機開始進入休眠狀態(tài)*/
          PORTD=0XF0;/*激活后,低4個LED燈亮*/
          while(1)
          {
          ;
          }

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

          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節(jié)
          RETURN

          ;**********初始化子程序*************
          INITIAL
          BCFINTCON,GIE;全局中斷禁止,"電平變化中斷"只執(zhí)行喚醒功能
          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方式,并且時鐘下降沿
          ;發(fā)送,與"74HC595當其SCLK從低到高平跳變時,串行
          ;輸入數(shù)據(jù)(DI)移入寄存器"的特點相對應
          BCFPORTB,1
          BCFPORTA,3
          BCFPORTE,0
          BCFPORTE,1;K1,K2,K3,K4四條列線置0, 為電平變化中斷的產(chǎn)生
          ;創(chuàng)造初始條件
          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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();