弱问:PIC16的指令周期?

2020-02-06 10:12发布

例如        :
0x47: MOVLP 0x1
0x48: CALL 0x1B1
0x49: MOVLP 0x0

其中"0x49: MOVLP 0x0"
执行这么一步需要多少个时钟上升沿?

入门级都算不上的问题,让大家见笑了.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
waterghost
1楼-- · 2020-02-06 13:08
你里面一个CALL 都不知道运行多长程序了。
JYX2015
2楼-- · 2020-02-06 18:27
 精彩回答 2  元偷偷看……
alias
3楼-- · 2020-02-06 21:05
JYX2015 发表于 2015-8-17 15:17
明白了,就是说这些指令执行是不固定的,要具体情况具体分析,对吧?

>> 这些指令执行是不固定的,

绝对不是。

楼主先要分清时钟周期及指令周期。

在PIC16,一个指令周期要占用四个时钟周期,而AVR则一个指令周期等同一个时钟周期。

对PIC16而言,除了跳转指令要用二个指令周期外,其它的都是单指令周期。

例:Call + Return = 4 指令周期(即16个时钟周期);
      MOVWF,MOVF、、、等都是单指令周期(即4个时钟周期)
JYX2015
4楼-- · 2020-02-06 22:43
alias 发表于 2015-8-17 15:44
>> 这些指令执行是不固定的,

绝对不是。

对不起,我表述错误,我想说的是不同的指令占用时钟周期是不同的。

现在看来也不完全是这样。PIC的大部分指令都占用4个时钟周期,也就是说执行大部分指令,
需要4个外部晶振的上升沿(虽然是正弦波),但也有个别的指令并非如此。

不知道我的理解是否有误,请进一步指点。
alias
5楼-- · 2020-02-07 00:40
个别 测试/跳转 指令像BTFSS, BTFSC, INCFSZ及DECFSZ,不跳转时需要4个外部晶振的上升沿,但跳转却需要8个晶振的上升沿。
JYX2015
6楼-- · 2020-02-07 04:45
alias 发表于 2015-8-17 15:56
个别 测试/跳转 指令像BTFSS, BTFSC, INCFSZ及DECFSZ,不跳转时需要4个外部晶振的上升沿,但跳转却需要8个 ...

非常感谢你详尽的回答

一周热门 更多>