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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 16F870單片機(jī)的中斷應(yīng)用程序

          16F870單片機(jī)的中斷應(yīng)用程序

          作者: 時(shí)間:2011-02-24 來源:網(wǎng)絡(luò) 收藏
          ; Filename: WK_PCHG.asm *
          ; Date: Mar/13/2001 *

          ;**********************************************************************
          list p=16f870
          #include p16f870.inc>

          ; __CONFIG _CP_OFF _WDT_ON _BODEN_ON _PWRTE_ON _RC_OSC _WRT_ENABLE_ON _LVP_OFF _CPD_OFF


          FLAG EQU 0x20
          Var1 EQU 0x21
          Var2 EQU 0x22

          INT_Var1 EQU 0x30
          INT_Var2 EQU 0x31

          W_Temp EQU 0x72
          STATUS_Temp EQU 0x73
          FSR_Temp EQU 0x74

          #define VAL_1MS .248

          #define FLAG_INC 0
          #define FLAG_DEC 1


          org 0x00 ; RESET  0x000
          nop
          clrf PCLATH
          goto Main

          org 0x004
          INT_ISRs
          ;***************************************************************
          movwf W_Temp ; save off current W register contents
          movf STATUS,W ; move status register into W register
          bcf STATUS,RP0 ; ensure file register bank set to 0
          movwf STATUS_Temp ; save off contents of STATUS register
          movf FSR,W
          movwf FSR_Temp

          BANKSEL PORTB
          movf PORTB,W
          bcf INTCON,RBIF
          bcf INTCON,RBIE ; RBIE Disable

          call Bounce_Delay

          btfsc PORTB,4
          goto Check_DEC_KEY

          bsf FLAG,FLAG_INC ; FLAG_INC  1
          goto Exit_ISRs

          Check_DEC_KEY
          btfss PORTB,5
          bsf FLAG,FLAG_DEC

          Exit_ISRs
          movf FSR_Temp,W
          movwf FSR
          bcf STATUS,RP0 ; ensure file register bank set to 0
          movf STATUS_Temp,w ; retrieve copy of STATUS register
          movwf STATUS ; restore pre-isr STATUS register contents
          swapf W_Temp,F
          swapf W_Temp,W ; restore pre-isr W register contents
          retfie ; return from interrupt

          ;******************************************************************************
          ;**** Delay 10 ms 
          ;******************************************************************************
          Bounce_Delay
          movlw .10
          movwf INT_Var1

          Bounce_Loop1
          movlw .248
          movwf INT_Var2
          Bounce_Loop2
          nop
          decfsz INT_Var2,F
          goto Bounce_Loop2
          decfsz INT_Var1,F
          goto Bounce_Loop1
          return

          ******************************************
          Main

          BANKSEL TRISB
          movlw B'11110000'
          movwf TRISB ; RB4..RB7
          clrf TRISC
          movlw B'00000000' ; Enable PORTB  Pull UP
          movwf OPTION_REG

          BANKSEL PORTB
          movlw B'11111111'
          movwf PORTB
          clrf PORTC

          bsf INTCON,GIE
          clrf FLAG
          bsf FLAG,FLAG_INC

          Prog_Loop
          btfss FLAG,FLAG_INC
          goto Dec_Process

          Inc_Process
          call Delay_50ms
          incfsz PORTC,F
          goto Inc_Process
          goto SLEEP_Process

          Dec_Process
          call Delay_50ms
          decfsz PORTC,F
          goto Dec_Process

          SLEEP_Process
          clrf PORTC
          clrf FLAG
          movf PORTB,W
          bcf INTCON,RBIF
          bsf INTCON,RBIE
          SLEEP
          nop
          nop
          goto Prog_Loop


          ;****************************************************************************
          ;**** Delay 50ms 
          ;****************************************************************************
          Delay_50ms
          movlw .50
          movwf Var2
          Delay_200ms_Loop
          call Delay_1ms
          decfsz Var2,F
          goto Delay_200ms_Loop
          return

          ;****************************************************************************
          ;**** Delay 1ms 
          ;****************************************************************************
          Delay_1ms
          nop
          nop
          nop
          movlw VAL_1MS
          movwf Var1
          Delay_1ms_Loop nop
          decfsz Var1,F
          goto Delay_1ms_Loop
          return


          END




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();