xinxin3219 发表于 2011-4-21 16:22:14

stc12c5a60s2的软件延时问题

以前51习惯以for(i=1;j>0;i--)
            for(j=110;j>0;j--);
来大概延时个1ms,现在换成stc12c5a60s2,说是要比传统法51快很多,我试了下,发现这个单片机编译
            for(i=1;j>0;i--)
            for(j=110;j>0;j--);
也差不多延时1ms,我用的是11.0592M的晶振,哪位开发过的大侠可否指导一二,我把传统51的程序弄到这个单片机中程序失效~~~

muzheyun 发表于 2011-4-21 17:34:46

个人感觉60S2在STC的1T当中算是最快的,但是由于指令周期不一致,有些快有些慢,很难算出具体的时间,一般能快5倍就很好了,你可以微调一下110这个值,时序要求不高的话调到500应该就差不多,也可以用单片机工具计算一下,比较精确。

xinxin3219 发表于 2011-4-22 10:30:54

回复【1楼】muzheyun
-----------------------------------------------------------------------

改1602液晶的程序的时候,我用一段延时来代替检查忙函数,普通51只需延时1ms,但60s2要延时8个1ms,延时程序是一样的,汗了,是什么原因呢,可是我KEIL仿真了下,都是延时1MS,没啥区别,难道是我仿真错了?

xinxin3219 发表于 2011-4-22 10:42:41

回复【1楼】muzheyun
-----------------------------------------------------------------------

还有单片机工具,是啥东东

muzheyun 发表于 2011-4-22 12:33:05

60s2是1T的单片机,而C52之类是12T的单片机,理论上比12T的单片机快12倍,keil的仿真是依据的12T,除非你用了STC的生产的那个什么玩意.
工具是这个玩意
点击此处下载 ourdev_632713DPDDL7.rar(文件大小:549K) (原文件名:mcuelf.rar)

hzr0071 发表于 2011-4-22 12:42:59

是块12倍。因为sct12c5a有3个定时器。所以我拿一个定时器做延时(可以设置1T或者12T模式),这样还可以在延时的时候干别的事。只要在延时之前把堆栈和pc值搞好就行了。

flyhouse 发表于 2011-4-22 14:17:48

回复 :【1楼】 muzheyun
------------------------------------------

keil的仿真1t的51时间就不要想了,keil现在没有把精力放在上面,不信你试试就知道,没有根据芯片核去调整仿真时间.

我试过一下选 megawin 82g516 DS89C450/这种1T的mcu,仿真_NOP_指令时候仍然是1us.而实际1T的这个指令只有(1/12)us

flyhouse 发表于 2011-4-22 14:24:45

一般都是拿示波器卡一下时间最可靠.

danceman_uk 发表于 2011-4-22 23:38:51

1602 12864在STC12下面就不要用延时了,请看杜洋作品的代码.可以用DB7做为测忙线.

jrcsh 发表于 2011-4-22 23:54:55

以示波器显示时间为准

chushu 发表于 2011-11-19 13:21:57

回复【9楼】jrcsh 邪恶的小会会
-----------------------------------------------------------------------

回复【5楼】hzr0071
-----------------------------------------------------------------------

我用PCA输出了2路PWM,还想用定时器0输出一路,就不行了是什么原因呢./emotion/em001.gif

putin 发表于 2011-12-15 13:12:49

个人觉得在精确掩饰用汇编比较准确,可以在c中嵌入一些汇编

上路新手 发表于 2012-11-29 18:49:29

404891290我也学stc12c5a60s2一起讨论下吧!!

liulangmao 发表于 2012-11-29 20:00:37

STC12C60S2   12MHz晶振,用示波器卡的1ms延时

//-----------------------------------------------------------------------------
//软件延迟
//-----------------------------------------------------------------------------
void Delay_Ms(unsigned int n)
{
        unsigned int x;
        while(n--)
        {
                x=628;
                while(x--);
        }
}

fhy-123 发表于 2013-4-12 18:28:29

我现在也遇到这样的问题,因为stc12c5a60s2的速度比stc89c52rc要快,所以延时要长一些,大概几倍左右吧,把延时子程序的参数增大应该可以解决这个问题,我的问题已经解决了,哈哈{:smile:}

步步高0217 发表于 2014-7-24 08:58:36

这个工具不错呢

craigtao 发表于 2014-7-24 09:38:58

muzheyun 发表于 2011-4-22 12:33
60s2是1T的单片机,而C52之类是12T的单片机,理论上比12T的单片机快12倍,keil的仿真是依据的12T,除非你用了ST ...

这个得赞一个啊,不错,
页: [1]
查看完整版本: stc12c5a60s2的软件延时问题