请高人注释一下这一段汇编代码 要详细点 不胜感激

2025-02-28 00:15:27
推荐回答(1个)
回答1:

KEYSCAN ;按键扫描例程

BCF STATUS,RP1;
BSF STATUS,RP0; ;bank切换
BCF OPTION_REG,7; ;上升沿触发有效
MOVLW 0FH; ;D端口方向置位
MOVWF TRISD; ;
MOVLW 0FFH;
MOVWF TRISB; ;B端口方向置位
BCF STATUS,RP0; ;bank切换
MOVLW 00H;
MOVWF PORTD; ;端口清零初始化
NOP;
NOP;
MOVF PORTB,0; ;端口判断操作,放W寄存器,一般不这么写0
ANDLW 0FH; ;与操作
MOVWF VALUE;
XORLW 0FH;
BTFSC STATUS,Z;
GOTO NOKEY; ;就是看了下有没有按到,没有按到直接跳转
BSF STATUS,RP0;
MOVLW 0F0H; ;更换了I/O的输出输入状态
MOVWF TRISD;
MOVLW 0F0H;
MOVWF TRISB; ;更换了I/O的输出输入状态
BCF STATUS,RP0;
MOVF VALUE,0;
MOVWF PORTB;

NOP;
NOP;
MOVF PORTD,0;
ANDLW 0F0H;
IORWF VALUE,1;
RETURN;
NOKEY
MOVLW 0FFH;
MOVWF VALUE;
RETURN;

TRANSLATE ;按键的读取
MOVLW 40H ;40地址的间接寻址
MOVWF FSR
LOOPT1
MOVF 0,0 ;这么写很奇葩
XORWF VALUE, 0 ;寻址完后和VALUE值异或
BTFSC STATUS,Z ;判0,就是判断值是否等
GOTO LOOPT2
INCF FSR,1
BTFSS FSR,4
GOTO LOOPT1
MOVLW 0AAH
MOVWF FSR
RETURN
LOOPT2
BCF FSR,6
RETURNl
;这程序得有图纸才行,简单注释也没有什么意义。。。