📄 rb0int.asm
字号:
#include P16f877a.inc ;定义所用的单片机头文件
;变量保护,放在RAM的共享区,0X70为ICD2占用,某些MCU,0x71也为ICD2占用
;为保证代码移值性,从0x72单元开始安排
_WREG EQU 0X72
_STATUS EQU 0X73
_PCLATH
LIGHTNUM EQU 0X20
org 0x00
NOP;
movlw HIGH Start
movwf PCLATH
goto Start
org 0X04
bcf INTCON,GIE ;清总中断
INT_SAVE
movwf _WREG ; 存 WREG状态
swapf STATUS,W ; 存 STATUS
movwf _STATUS
SWAPF PCLATH,W;
MOVWF _PCLATH;
CLRF PCLATH;
CHANGE ;本中断程序仅用于演示,不做按键去抖动处理
BTFSS INTCON,INTF; 为INT中断,跳一行
GOTO INT_BACK; 非INT中断,不处理,返回
BCF INTCON,INTF;
COMF LIGHTNUM,F;
MOVF LIGHTNUM,W
MOVWF PORTA; 直接用"COMF PORTA" "读-修改-写"指令 对端口在某些情况会发生异常,尤其是20PIN以下MCU
INT_BACK
SWAPF _PCLATH,W
MOVWF PCLATH;
swapf _STATUS,W ; Restore STATUS
movwf STATUS
swapf _WREG,F ; Restore WREG w/o
swapf _WREG,W ; affecting STATUS
bsf INTCON,GIE;
RETFIE;
Start
clrf INTCON
clrf _WREG
CLRF _STATUS
MOVLW 0XF3;
MOVWF LIGHTNUM;
BSF STATUS,RP0;
movlw 0x0
movwf TRISA;
MOVLW B'0000001';RB0 INPUT
MOVWF TRISB;
MOVLW 0X07;
MOVWF ADCON1;MAKE SURE RA4-RA0 IS DIGITAL PORT;
BCF STATUS,RP1;
BCF STATUS,RP0;
MOVF LIGHTNUM,W
MOVWF PORTA;A口LED变化,RA3-RA0接LED
BSF INTCON,INTE;
BSF INTCON,GIE;
GOTO $;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -