下面的代码是一个简单的例子:
#include
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF)
cblock 0x20
Delay1
Delay2
Delay3
endc
org 0
Start:
bsf STATUS,RP0
clrf TRISIO
bcf STATUS,RP0
clrf Delay1
clrf Delay2
clrf Delay3
movlw 0xD0
movwf B'100000'
movlw .7
movwf CMCON
MainLoop:
bsf GPIO,GP1
bsf 0x21,5
EastLoop:
nop
decfsz Delay1,f
goto EastLoop
decfsz Delay2,f
goto EastLoop
movwf Delay3
bcf 0x05,1
bsf 0x05,4
decf Delay3,0
bsf 0x20,7
bsf 0x20,3
bsf O'40',1
comf .32,1
NordLoop:
decfsz Delay1,f
goto NordLoop
btfsc GPIO,GP1
goto SetStep
bsf GPIO,GP1
goto SetSStep
SetStep:
bcf GPIO,GP1
SetSStep:
decfsz Delay3,f
goto NordLoop
bcf 0x05,1
bcf 0x05,4
end
有人能解释一下吗?
2条答案
按热度按时间ikfrs5lh1#
处理器在不同的指令周期中执行汇编指令(根据指令的复杂性)。您可以通过阅读the datasheet了解指令周期。根据程序逻辑,指令周期总数是所有指令周期的总和。根据数据手册,上述部分命令的指令周期如下:
| 助记符|循环次数|
| - -|- -|
| 无|一个|
| DECFSZ公司|第一届会议 |
| 后藤|2个|
| 移动工作站|一个|
| 生物浓缩因子|一个|
| 生物安全因子|一个|
| DECF公司|一个|
| 通信管理文件|一个|
()
DECFSZ
→如果结果为0,则执行NOP
,使其成为2 TCY
指令。相关链接
dauxcl2d2#
我猜你正在使用MPLABx。在这种情况下,你可以用模拟器的秒表来计算指令周期数:
Eastloop
的顶部