打印

STC89C52的IO口的电平输出时间

[复制链接]
4316|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风溪香士|  楼主 | 2013-4-19 19:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STC89C52调制38khz的红外载波,就是让一个IO口输出38khz的方波,但是无法达到38khz。
晶振是12Mhz,输出方波时就是用定时器定时,计时满就进入定时器中断函数让IO口电平翻转,但是,就算是把TH1和TL1均置为255,即是一个机器周期翻转一次,用示波器观察也达不到38KHz。我想知道时间被花在哪了,是进入定时器中断函数花了时间,还是IO口电平的输出需要时间?
请各位指点一下。

相关帖子

沙发
airwill| | 2013-4-19 22:22 | 只看该作者
想必是定时中断函数, 还有可能是更高优先级的中断函数. 或者看门狗复位了

使用特权

评论回复
板凳
风溪香士|  楼主 | 2013-4-19 22:33 | 只看该作者
airwill 发表于 2013-4-19 22:22
想必是定时中断函数, 还有可能是更高优先级的中断函数. 或者看门狗复位了

没有其他中断函数了,也没有开看门狗。我想知道,从给IO口赋值的指令执行到IO口输出电平,需要多长时间,我在STC89C52的技术手册上也没看到这方面的内容。

使用特权

评论回复
地板
airwill| | 2013-4-20 00:06 | 只看该作者
51 没有流水线, 一个指令周期就能完成.
可能是1个或2个机器周期, 看是用的什么指令了

使用特权

评论回复
5
lyjian| | 2013-4-20 09:37 | 只看该作者
风溪香士 发表于 2013-4-19 22:30
如果中断响应8个机器周期,我定时1us,那么差不多10us IO口电平翻转一次,周期20us,频率也有50khz。 ...

建议你把程序的汇编代码贴出来算一算。
如果是用Keil C51写的中断程序,那么你的中断程序不一定就只有两条指令。
最快的中断程序:
    CPL IO
         RETI

这就要3个机器周期了。

使用特权

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

本版积分规则

个人签名:我命由我不由天!

13

主题

82

帖子

1

粉丝