打印

求助:stc12C5608运行速度慢的问题

[复制链接]
2349|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzhongmoshui|  楼主 | 2013-6-24 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
fp123123| | 2013-6-24 11:19 | 只看该作者
这个速度正常的,看看编译出来的汇编代码就知道了,while(1)是一个跳转,翻转1次是几条指令,不清楚STC有没有中断捕获,有的话可以用这个配合计数器在做,不然就要提高主频才行

使用特权

评论回复
板凳
coody| | 2013-6-24 11:56 | 只看该作者
比如:
while(1)
{
   P10 = ~P10;  //翻转
}

编译后将是:
L1:
CPL  P1.0   ;4T
SJMP  L1    ;3T

那么,输出频率就是 Fosc / 7 / 2, 假设fosc是14MHZ, 则输出频率为1MHZ。

使用特权

评论回复
地板
chunyang| | 2013-6-24 16:44 | 只看该作者
对于时序要求很严格的应用场合应该使用汇编编程,否则具体时间是不好确定的。

使用特权

评论回复
5
fp123123| | 2013-6-24 16:57 | 只看该作者
楼上的代码,用软件方式产生脉冲,最快也只能是这样了,STC的1T型号,凡是对直接地址的操作,都需要4个时钟周期

5us的脉冲,对于5M的主频,只有25个时钟周期,用软件查询的方法时间太短,不可靠

看了一下这个型号STC的PDF,它的PCA模块支持捕获模式,有4个PCA模块,可以用来检测5us的脉冲。方法是把1路PCA设置为捕获脉冲上升沿,另1路PCA设置为捕获脉冲下降沿同时发出中断,在中断函数里读出2个PCA的捕获寄存器CCAPnL/CCAPnH,把数值相减就可以知道脉冲长度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

19

帖子

0

粉丝