51 IO 的翻转速率最大能到多少?

2020-01-23 14:33发布

我实测的时候发现连512Khz都到不了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
饭桶
1楼-- · 2020-01-25 23:15
要不然别用51,上ARM,但是按照库函数那么玩也未必能快多少。曾经JAVA编写一个控制手机闪光灯的程序,上K都不行,而且不同手机出来频率都不同,直接晕死了。
takashiki
2楼-- · 2020-01-26 00:44
 精彩回答 2  元偷偷看……
煮酒fu
3楼-- · 2020-01-26 02:43
takashiki 发表于 2014-7-3 08:55
你用的时钟频率多高?那个帖子说他的是24M的,我都是基于他的前提分析的。你不要弄个32M的和我这个比较。 ...

我的22.1184.
modbus
4楼-- · 2020-01-26 05:38
中断里翻转肯定慢了,如果是输出脉冲可用定时器时钟输出功能或PCA高速输出。
takashiki
5楼-- · 2020-01-26 06:35
煮酒fu 发表于 2014-7-3 09:55
我的22.1184.

22.1184M的理论最大IO翻转速率(仅对STC的负责,其他的有快有慢,但计算方法是一样的):
12T:22.1184/12/2=0.9216MHz(直接对IO位取反)
6T:22.1184/6/2=1.8432MHz(直接对IO位取反)
1T:22.1184/3/2=3.6864MHz(对整个IO端口赋值,位操作要慢不少)

测量IO翻转不能有循环不能有中断,因为这些都会打断IO翻转的流程白白消耗CPU时间,从而使得输出变慢。
dz20062008
6楼-- · 2020-01-26 11:33
本帖最后由 dz20062008 于 2014-7-3 12:39 编辑
takashiki 发表于 2014-7-3 06:08
测IO翻转不是这么测得,你这个也太瞧不起51了。
应该是用CPL P0.0填满整个ROM,不用循环指令,因为循环指 ...


是的,不用循环的确快。但是执行到rom末尾咋办,会自己跑到ooooh吗?我估计pc会从o到64k的最大地址,然后pc翻转为o接着执行。如果用的单片机rom小于64k就会出现出现超出的执行nop指令,无法连续输出。对于擦除了的标准51单片机通电后CPU在干嘛这个的确是个问题,经过实验除了P0端口其它的基都高电平没啥变化。P0每一个脚有不同的连续波形出现。
假设对I5处理器直接编程输出方波估计GPIO的速度达不到要求。这就是考验内核性能与IO性能的问题。以前是晶振太快,于是有了12T的51单片机,现在工艺牛逼了,出现了6T  1T单片机。说不定那天就上锁相环倍频了。

一周热门 更多>