① 单片机中JNB和 JNC到底是什么意思
这是51单片机的两条汇编指令,属于条件跳转指令。
JNB,是根据某一位的状态判断转移的,当检测位不是1(NB),即为0时就转移,通常用于判断引脚。例如:
JNB P1.0, TEST
功能是:当引脚P1.0为0时,就跳转到TEST。
JNC,是根据进位标志位Cy判断转移的,当不进位(NC),就跳转,可用可加/减法运算,例如
MOV A , R2
ADD A , R3
JNC NUM
意义是,R2+R3,如果未进位则跳转至NUM。
② 8051数码管显示程序显示一个数汇编语言
这是一个基于8051单片机的数码管显示程序,使用汇编语言编写。程序起始地址为0000H,跳转至BEGIN标签。在0030H地址处定义了一个表格TABLE,用于存储共阴极数码管的显示代码。具体代码如下:
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
在BEGIN标签处,程序开始执行。首先,将寄存器R2设置为9,进入一个循环LOOP。在每次循环中,将R2的值赋给累加器A,然后将指针DPTR指向TABLE地址,通过MOVC A,@A+DPTR指令读取对应的数码管代码,再将代码传输至P1端口。之后,调用DELAY子程序进行延时处理,确保数码管稳定显示。最后,通过DJNZ R2,LOOP指令重复循环,直到R2减至0。
DELAY子程序用于延时处理。首先将R3设置为200,进入一个内部循环DELAY1。在每次循环中,将R4设置为250,通过DJNZ R4,$指令实现250次循环。当R4减至0时,转向$地址继续循环,确保总延时达到所需时间。完成一次循环后,通过DJNZ R3,DELAY1指令重复内部循环,直到R3减至0,完成整个延时过程。
在每次显示数字后,程序将R2设置为9,再次进入LOOP循环,显示下一个数字,以此类推,实现连续显示数字的效果。
该程序通过巧妙地利用寄存器和指针,结合代码表和延时子程序,实现了8051单片机对数码管的高效显示功能。
③ 关于单片机查表指令时用RLC左移指令
【1】表格中存放了1024个数据,编号0-1023项。每个数据2个字节。
【2】R3,R2,构成16位的编号。二进制格式。编号为x。
【3】第x项的数据起始地址应为 TAB+(2*x)。
【4】2*x,其实就是左移一次x。由于x是16位的。但51没有16位循环左移指令。
【5】借助于A,利用带进位位循环左移RLC A指令,完成R3,R2左移一次。其中,低位的R2部分,左移时,R2最高位借助于Cy进位位补足到R3的最低位。
理解一下RLC A这条指令的功能,影响的标志位就可以了。
④ 关于单片机带借位减法指令
51单片机中带借位减法指令为:SUBB,使用该指令时一定要首先处理借位Cy,不然容易出错,得出与理想不一样的结果。比如:
MOV A,R2
SUBB A,R3
以上指令运行后,将的出不确定的结果,正确的处理方法为:
CLR C
MOV A,R2
SUBB A,R3