hongli3154 发表于 2013-1-23 12:22:21

51翻转速度有这么慢吗?

本帖最后由 hongli3154 于 2013-1-23 12:23 编辑

单片机最小系统(24M)程序如下:
#include<reg52.h>
sbbit l=P1.0
void main()
{
         while(1)
{
            l=!l;

}
}
用示波器测只有333k。(电源曾经接反过一次难道是被烧坏了?STC的片子)

jiangshui_642 发表于 2013-1-23 12:35:52

以下是官方的说法

javabean 发表于 2013-1-23 12:59:54

内部设定一个变量,反转变量值,输出到管脚。
不要直接读出管脚的值,首先读出的数据在低电平的时候可能不正确,另外读出也是需要时间的。
如果你有兴趣测试反转速度,程序就用汇编写

xinfa190 发表于 2013-1-23 13:47:17

这个问题前几天讨论过,你搜一下

tomy 发表于 2013-1-23 14:46:55

同意3楼的观点。

测试的代码还是用汇编写的比较精准一些。

shiy 发表于 2013-1-23 17:01:36

IO速度我这测过,AVR的明显快不少,有压摆率限制应该。

bbssilverkey 发表于 2013-1-23 17:24:34

那实际到底多少呢?

wgui 发表于 2013-1-24 03:08:37



sbit P1_0=P1^0;

void main()
{
while(1)
{
P1_0=0;
P1_0=1;
}
}


stc12c5a60s2/24m可输出2M以上,示波器实测。{:smile:}

wx85105157 发表于 2013-1-25 12:47:33

wgui 发表于 2013-1-24 03:08 static/image/common/back.gif
sbit P1_0=P1^0;

void main()


{:titter:} 你这样占空比不是50%而是36%

woshigeshuai 发表于 2013-1-25 13:04:56

本帖最后由 woshigeshuai 于 2013-1-25 13:08 编辑

LZ的代码转换成汇编应该就是
WHILE:
       CPL      P1.0      ; 1周期
       AJMP    WHILE   ; 2周期
3+3 =一个频率 ,一个频率时间是6*(12/24)=3us注:24是晶振

1秒=1 000 000us 除以3=333333.33333

laodangong 发表于 2013-1-25 14:24:41

本帖最后由 laodangong 于 2013-1-25 14:29 编辑

woshigeshuai 发表于 2013-1-25 13:04 LZ的代码转换成汇编应该就是 WHILE: CPL P1.0 ; 1周期 ajmp 是三个时钟吧?
页: [1]
查看完整版本: 51翻转速度有这么慢吗?