晨星 发表于 2017-11-9 18:04:17

PIC16系列单片机switch 语句运行时间的疑惑

本帖最后由 晨星 于 2017-11-9 18:05 编辑


我这里面switch 里面的PluseMode =2,我用示波器测RC7=0到rc7=1用了18us,我用的pic16系列的单 片机,晶振4Mhz
正常的话时间 会有这么长吗?

yoursnemo 发表于 2017-11-9 18:32:02

如果C编译器不是PRO版本是有可能的,从检测是是否为0是否为1是否为2这三个,一个算为6us,单指令周期为1us,双指令周期为2us。
每一次检测编译出来差不多是用了MOVLW(1us) SUBWF(1us) BTFSS(1us or 2us) GOTO(2us)这几个指令,开销也就差不多是这个时间了。
你可以对比一下反汇编出来的汇编码,看看就知道对不对了。

khuohuo 发表于 2017-11-9 20:22:48

看汇编码.

晨星 发表于 2017-11-10 08:53:04

yoursnemo 发表于 2017-11-9 18:32
如果C编译器不是PRO版本是有可能的,从检测是是否为0是否为1是否为2这三个,一个算为6us,单指令周期为1us ...

这是我编译生成的汇编,我不太懂汇编。你能帮我看下从RC7=0到RC7=1执行了那些汇编指令吗,PulseMode=2

晨星 发表于 2017-11-10 08:54:41

khuohuo 发表于 2017-11-9 20:22
看汇编码.

这是我编译生成的汇编,我不太懂汇编。你能帮我看下从RC7=0到RC7=1执行了那些汇编指令吗,PulseMode=2
页: [1]
查看完整版本: PIC16系列单片机switch 语句运行时间的疑惑