分享:
▲
答案都在 指令集 的说明上 我也只学过, 但没很了解.....
setb p2.1 这行, 要先查 SETB 这指令, 他是将某一个 bit(位元)设定成1
SETB p2.1
8051 有数个 io port 分别是由 Px.0~Px.7 (8 bits)
比较难理解的是 sw12: jnb p3.0,[B]$[/B]
至于JB/JNB/SETB/JMP/CALL 指令, 还是看指令集说明比较好, 了解过后,自然就看的懂一部份了,
学的不多,只能提供一点心得... 仅供参考~~~
[Reference] SETB :位元设定运算
将位址20H的第0 Bit设定为1,可以写成下面两种方式: SETP 00H ;位元定址 SETB 20H.0;第20H位元组的第0位元
1.AJMP :绝对跳跃 (Absolute jump)
跳到此 11 bit 位址范围,暨跳跃范围据此指令 2 K byte 的距离
2.LJMP :长程跳跃 (Long jump)
跳到此 16 bit 位址范围,暨跳跃范围据此指令 64 K byte 的距离
3.SJMP :短程跳跃 (Short jump)
跳到 相对位址范围,暨跳跃范围据此指令前 128 byte 后127 byte 的距离
4.JMP :间接跳跃 ( Jump indirect),Ex :JMP @A+DPTR
PC 值变更为累积器 Acc 内容值与 DPTR 内容值之和
有条件跳跃指令 1.JC :若 进位旗标 C = 1 就跳至相对位址去执行 2.JNC :若进位旗标 C = 0 就跳至相对位址去执行 3.JB :若 bit = 1 就跳至相对位址去执行 4.JNB :若 bit = 0 就跳至相对位址去执行 5.JBC :若 bit = 1 就跳至相对位址去执行,同时清除此 bit 为 0 6.JZ :若 累积器 A 等于 0 就跳至相对位址去执行 7.JNZ :若 累积器 A 不等于 0 就跳至相对位址去执行 8.CJNE :若 累积器 A 不等于 直接定址资料值,就跳至相对位址rel去执行 9.DJNZ :若 暂存器 Rn 不等于 0 ,就跳至相对位址 rel 去执行
[ 此文章被philos在2007-05-02 14:40重新编辑 ]
|