※ 引述《wasidada (dada)》之铭言:
: 最近因为工作需要开始要碰触 PIC18系列的ASM
: 在判断式这边搞不懂 无论我的累加器设定多少 总是会执行Action_1和Action_2
: 请问有谁可以帮忙指点一下是哪一边有打错
: 谢谢
我也刚好要接触PIC18
1. 不知道这样会不会比较好? 我猜是主程序结束端没有挡一下,继续跑下去
我另外好奇你有试过>25的值吗?例如说30,
也许只会执行Act1但后面可能会挂掉,或是一直执行无法返回
MOVLW 000h
MOVWF TRISD
MOVLW .23
CPFSGT .20
call Action_1
CPFSGT .25
call Action_2
goto Finish
Action_1:
BCF LATD,5
return
Action_2:
BCF LATD,6
return
Finish
END
2. 另外,PIC的世界里,好像label不用冒号,
不确定是否为真,可能要麻烦你试一下
3. 刚才又查了一下CPFSGT,他的下两行是关联的,照你的原code逻辑
大概是这样
CPFSGT .20
call Action_1 (不成立,PC从此行开始跑,等等return回来继续下一行)
CPFSGT .25 (成立,PC跳过上一行,从这行开始)
call Action_2
Action_1
..........
或这样
CPFSGT .20
call Action_1
CPFSGT .25
call Action_2 (不成立,PC从此行开始跑,等等回来会继续下一行...=,=;;)
Action_1 (成立,PC跳过上一行,从这行开始...遇到return可能会挫起来~)
BCF LATD,5
return
结果
Value: 19, A1 A2都会做
23, A2 A1都会做
30, A1 做完,可能挂掉或是PC不知道跑哪去了
参考资料:
http://goo.gl/1K0zJj