单片机汇编语言的编程问题!

2024-11-18 00:41:28
推荐回答(3个)
回答1:

首先教你如何理解JNB和JB,
JNB就是Jump Not Bit,这样不好理解,解释一下就明白了:jump表示跳转,not表示0,bit表示该位。它实际是条件判断语句,意思是:如果该为为0则跳转,否则继续下一条。
例:JNB P1.1,mark[如果P1.1位为零则跳转到mark标志指向的指令,否则继续执行下一行]
JB则与JNB相反,即判断0变为1,表示:如果该为为0则跳转,否则继续下一条。
助记口诀是:JNB为0跳转,否继续;JB为1跳转,否继续。
下面实现你要的流水灯程序,假定P1口低六位接灯,高电平时亮。
ORG 0000H
MOV P1,00H
MOV A,11111110B
LOOP:
RLC ACC
JNB ACC.0,ENABLEBIT1
JNB ACC.1,ENABLEBIT2
JNB ACC.2,ENABLEBIT3
JNB ACC.3,ENABLEBIT4
JNB ACC.4,ENABLEBIT5
JNB ACC.5,ENABLEBIT6
ENABLEBIT1:
MOV P1,00000001B
JMP LOOP
ENABLEBIT2:
MOV P1,00000010B
JMP LOOP
ENABLEBIT3:
MOV P1,00000100B
JMP LOOP
ENABLEBIT4:
MOV P1,00001000B
JMP LOOP
ENABLEBIT5:
MOV P1,00010000B
JMP LOOP
ENABLEBIT6:
MOV P1,00100000B
JMP LOOP
不想逐行解释了,自己看吧
大概意思是这样,不严谨,自己实际操作中完善吧

回答2:

JNB bit,rel;如果寻址位为0 则转移。比如JNB P1.0,0080H
JB,就是寻址位为1 转移。。。

回答3:

得需要具体的IO口啊
具体思路就是 让IO口的电平不断的实现高低变化,
还是查一下 针对具体单片机型号的 数据手册。