[求助] 51单片机可以输出多高频率的方波???

taylda   2016-5-18 22:38 楼主
我用89C52,12M晶振。网上查了说理论上可以到500KHZ,但我怎么只能到50KHZ

为了最大化频率,用8位自动填充定时器,中断只写一句,P1=~P1;定时器初值设到255,频率只能到50KHZ啊  这个到底是怎么回事??? 希望有大神指教

我发现(软件调试)需要5~6个时钟周期才能进中断,中断内也需要几个时钟周期。。我调定时器初值TH0从255到246都是输出50KHZ的方波,这是为什么啊啊

我做的东西现在频率不够,已经卡住好久了。。。老师要达 5KHZ,我的程序才300HZ左右。。。肿么破

回复评论 (17)

换1T型号的单片机,或者其他系列单片机,如ARM
点赞  2016-5-18 22:55
楼主浪费的机时太多了。
晶体为12MHz,那么51单片机的单周期指令需要1us,要达到500kHz输出,只能用两条单周期指令。这就根本不可能使用定时器,也绝对不可能使用中断。
两条单周期指令,一条是某引脚取反,另一条是短跳转。这只有用汇编语言才能够写出来。
点赞  2016-5-18 22:55
找个带PWM功能的单片机。。。
点赞  2016-5-18 23:46
能输出多大,这个片子好久没有用了。但是楼主你要使用定时器的,这个定时器的时间与你的方波的频率密切相关的哦
点赞  2016-5-19 00:18
如果沒有其他限制要求,考慮ALE輸出再做四分頻,絕對可以做到500KHZ,
点赞  2016-5-19 00:51
STM32F0 或者F1 比 51 价钱也高不了多少,楼主换主控吧 ,,
分享铸就美好未来。。。
点赞  2016-5-19 07:03
感觉说的很矛盾啊,最后说“老师要达 5KHZ,我的程序才300HZ左右。。。”,可是前面说已经可以到50k了。看晕了
点赞  2016-5-19 07:52
频率不变方波的输出自然简单,软件实现500K肯定没问题,定时器自动重装模式中断里翻转io,再高就用ALE的分频输出用晶振往上凑。
点赞  2016-5-19 10:30
因為你要做到500khz所以mcu已無時間去做中斷或其他,所以只需要如圖片那樣短短5行就ok,只需要在主循環一句取反就ok。如果要求精度就如6樓我說的用ale輸出做4分頻。
  • 500Khz.png
点赞  2016-5-19 11:27
学习了,谢谢分享
点赞  2016-5-19 22:15


定时器设定有点失控,th0从255到246都是一个值,是因为中断也要反应这么长时间吗
点赞  2016-5-20 11:05
兄弟,换stc15w系列的芯片,不需要外置晶振,频率可以设置到30M,且是1T的,轻松输出1M的方波。
点赞  2016-5-20 20:58
C8051F系列单片机或者ARM都有可编程频率部件。占用软件开销很小。完全可以满足你的要求。
点赞  2016-5-22 11:43
直接控制IO口翻转应该会快一点
点赞  2016-5-22 12:37
不行就上高级点STC吧,例如STC12或者15系列
点赞  2016-5-25 17:22
你应该用汇编语言写,C调用的东东比较多,占时间了
点赞  2016-5-25 21:28
晶振频率提高试试。
点赞  2016-5-27 08:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复