引用 | 编辑
j155002
2007-04-27 22:02 |
楼主
▼ |
||
x0
org 0sw11: jb p3.0,sw12 call delay jb p3.0,sw11 setb p2.0 sw12: jnb p3.0,$ call delay jnb p3.0,sw12 s .. 访客只能看到部份内容,免费 加入会员 x0
|
引用 | 编辑
philos
2007-05-02 12:57 |
1楼
▲ |
答案都在 指令集 的说明上
我也只学过, 但没很了解..... 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 去执行 x0 |