
请高人注释一下这一段汇编代码 要详细点 不胜感激
KEYSCANBCFSTATUS,RP1;BSFSTATUS,RP0;恢复体0BCFOPTION_REG,7;上升沿触发有效MOVLW0FH;MOVWFTRISD;MOV...
KEYSCAN
BCF STATUS,RP1;
BSF STATUS,RP0; 恢复体0
BCF OPTION_REG,7; 上升沿触发有效
MOVLW 0FH;
MOVWF TRISD;
MOVLW 0FFH;
MOVWF TRISB;
BCF STATUS,RP0;
MOVLW 00H;
MOVWF PORTD;
NOP;
NOP;
MOVF PORTB,0;
ANDLW 0FH;
MOVWF VALUE;
XORLW 0FH;
BTFSC STATUS,Z;
GOTO NOKEY;
BSF STATUS,RP0;
MOVLW 0F0H;
MOVWF TRISD;
MOVLW 0F0H;
MOVWF TRISB;
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
MOVWF FSR
LOOPT1
MOVF 0,0
XORWF VALUE,0
BTFSC STATUS,Z
GOTO LOOPT2
INCF FSR,1
BTFSS FSR,4
GOTO LOOPT1
MOVLW 0AAH
MOVWF FSR
RETURN
LOOPT2
BCF FSR,6
RETURN 展开
BCF STATUS,RP1;
BSF STATUS,RP0; 恢复体0
BCF OPTION_REG,7; 上升沿触发有效
MOVLW 0FH;
MOVWF TRISD;
MOVLW 0FFH;
MOVWF TRISB;
BCF STATUS,RP0;
MOVLW 00H;
MOVWF PORTD;
NOP;
NOP;
MOVF PORTB,0;
ANDLW 0FH;
MOVWF VALUE;
XORLW 0FH;
BTFSC STATUS,Z;
GOTO NOKEY;
BSF STATUS,RP0;
MOVLW 0F0H;
MOVWF TRISD;
MOVLW 0F0H;
MOVWF TRISB;
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
MOVWF FSR
LOOPT1
MOVF 0,0
XORWF VALUE,0
BTFSC STATUS,Z
GOTO LOOPT2
INCF FSR,1
BTFSS FSR,4
GOTO LOOPT1
MOVLW 0AAH
MOVWF FSR
RETURN
LOOPT2
BCF FSR,6
RETURN 展开
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
;这程序得有图纸才行,简单注释也没有什么意义。。。
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
;这程序得有图纸才行,简单注释也没有什么意义。。。

2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询