star 发表于 2012-8-21 18:18:10

RA1电平中断唤醒 zhuan

;********************************************************************                                       
    list      p=16F676,R=DEC          ; list directive to define processor
    #include <p16F676.inc>      ; processor specific variable definitions
   ; errorlevel-302            ; suppress message 302 from list file
    __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;**********************************************************************
ORG   0      ; processor reset vector
      GOTO INIT         ; go to beginning of program
ORG   4      ; interrupt vector location
      RETFIE
;---------------------
IINIT
   BCF   STATUS,RP0
MOVLW 00010000B
MOVWF PORTA
MOVLW 00111000B
MOVWF PORTC
      CALL    0x3FF             ; retrieve factory calibration value
      BSF   STATUS,RP0      ; set file register bank to 1
      MOVWF   OSCCAL            ; update register with factory cal value
               ; set file register bank to 0
MOVLW 10H
MOVWF ANSEL
   MOVLW 00001010B;A0,A5,INPUT
   MOVWF TRISA
MOVLW 00000001B;
   MOVWF TRISC


   MOVLW 07H    ;1:128,up_enable
MOVWF OPTION_REG
MOVLW 00000010B
MOVWF WPUA
MOVLW 00000010B
MOVWF IOCA

MOVLW   01010000B
    MOVWF   ADCON1          ;FOSC/16
   
CLRWDT
BCF   STATUS,RP0
MOVLW 07H;
   MOVWF CMCON   ;io set digital
MOVLW   10010001B
    MOVWF   ADCON0
MOVLW 08H   ; RAIE
MOVWF INTCON
NOP
BTFSS PORTA,1
GOTO $-1
MOVF PORTA,0
      BCF INTCON,RAIF    ;要清中断

nop
sleep
nop
BSF PORTA,0
GOTO $


;------------------------------------------
      END                     ; directive 'end of program'
页: [1]
查看完整版本: RA1电平中断唤醒 zhuan