net20 发表于 2015-12-4 18:31:01

51单片机I/O管脚最快翻转速度

本帖最后由 net20 于 2015-12-4 18:39 编辑

单片机晶振11.0592MHz,单片机型号:STC89C52RC
#include <reg52.h>
sbit pulse1=P2^0;
main()
{
        pulse1=1;
       
        while(1)
        {
        pulse1=~pulse1;
       
        };
       
}

用福禄克124示波表测了一下,输出频率为153.6KHz
当ISP下载软件“使能6T(双倍速)模式(相当于晶振是22.1184
MHz)”,单片机输出频率还是153KHz左右,没有变化。

net20 发表于 2015-12-4 18:36:29

是否可以认为最快翻转速度是153KHz , 即6.535947712us
不知道有没有51单片机I/O翻转速度相关说明...

20061002838 发表于 2015-12-4 19:05:25

C语言的一句话,跟汇编的一条指令是两码事

ayumi8 发表于 2015-12-4 19:17:39

STC89C52   没有双倍速吧   15   12C 系列 才有

-阿发- 发表于 2015-12-4 19:20:00

51的好像没有设置倍频的锁存器,只能用外部晶振,最大速度取决于晶振,而且C语言跟汇编也是两码事,不知道使能6T具体是干嘛的。

NJ8888 发表于 2015-12-4 19:45:01

你反一次转移一次,影响严重,你复制1000个翻转放到while中再测量

小李非刀 发表于 2015-12-4 22:19:38

LZ测得不够仔细,STC89C52RC在6T模式下速度翻翻,等效于12T的22.1184MHZ,你要下载后重新上电才起作用。

while(1)
{
      pulse1=~pulse1;
};
C语言编译后,等效为:
L_Loop:
      CPL    pulse   ; 12T 或 6T
      SJMPL_Loop; 24T 或 12T

11059200 12T时输出频率就是 11059200 / 2 / 36 = 153600HZ。
如果用6T,频率加倍。
你可以使用Timer2输出更快的时钟,不需要中断,可以输出fosc/24/N(12T时)或fosc/12/N,N为T2的16位重装值。

对于STC15系列,则翻转速度更快:
L_Loop:
      CPL    pulse   ; 3T
      SJMPL_Loop; 3T
11059200时输出频率就是 11059200 / 2 / 6 = 921600HZ。
你可以使用任何一个Timer输出更快的时钟,不需要中断,可以输出fosc/2/N,N为Timer的16位重装值。比如11059200主频,可以用任何Timer输出高达11059200/2 = 5529600HZ的方波。

对于将要推出的STC15H系列,则翻转速度更快:
L_Loop:
      CPL    pulse   ; 1T
      SJMPL_Loop; 3T
11059200时输出频率就是 11059200 / 2 / 4 = 1382400HZ。
如果这样的话,可以输出高达fosc/2的翻转速度(忽略随后的跳转指令的话)。
while(1)
{
      pulse1=~pulse1;
      pulse1=~pulse1;
      pulse1=~pulse1;
      pulse1=~pulse1;
      pulse1=~pulse1;
      pulse1=~pulse1;
};

你同样可以使用任何一个Timer输出更快的时钟,不需要中断,可以输出fosc/2/N,N为Timer的16位重装值。


net20 发表于 2015-12-5 08:26:26

本帖最后由 net20 于 2015-12-5 08:31 编辑

小李非刀 发表于 2015-12-4 22:19
LZ测得不够仔细,STC89C52RC在6T模式下速度翻翻,等效于12T的22.1184MHZ,你要下载后重新上电才起作用。

...

受教了~!
使能6T模式后,从新上电,频率变为307KHz

liudingding 发表于 2015-12-6 11:04:33

NJ8888 发表于 2015-12-4 19:45
你反一次转移一次,影响严重,你复制1000个翻转放到while中再测量

可能这样最快

desertsailor 发表于 2015-12-6 12:38:07

循环判断占用时间了。

lzg 发表于 2015-12-6 13:09:05

直接输出高,输出低,这样,不要用翻转。
页: [1]
查看完整版本: 51单片机I/O管脚最快翻转速度