1. 設定TRISA輸入
2. 設定WPUA提昇電阻
3. 設定IOCAx正緣、負緣觸發
4. 開啟GPE、IOC中斷
5. 進入中斷後,清除IOC以及IOCA旗標




main.s
list p=12f1822, r=hex
#include <p12f1822.inc>
__config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _MCLRE_OFF
__config _CONFIG2, _LVP_OFF
#define tmp 0x20
org 0x0000
goto start
org 0x0004
goto myisr
org 0x0100
myisr:
banksel INTCON
bcf INTCON, 7
bcf INTCON, 0
banksel IOCAF
movlw 0xff
xorwf IOCAF, w
andwf IOCAF, f
banksel tmp
btfss tmp, 0
bcf PORTA, 0
btfsc tmp, 0
bsf PORTA, 0
movlw 0xff
xorwf tmp, f
banksel INTCON
bsf INTCON, 7
retfie
start:
banksel TRISA
bcf TRISA, 0
bsf TRISA, 3
banksel OPTION_REG
bcf OPTION_REG, 7
banksel WPUA
bsf WPUA, 3
banksel PORTA
bsf PORTA, 0
banksel tmp
clrf tmp
banksel IOCAN
bsf IOCAN, 3
banksel INTCON
bsf INTCON, 7
bsf INTCON, 3
bcf INTCON, 0
goto $
end
編譯
$ gpasm main.s
完成
