一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4348|回复: 7

[51单片机] 新人求助:STC12单片机的延时程序问题

[复制链接]
发表于 2012-4-18 16:20 | 显示全部楼层 |阅读模式
学单片机,前一阵中了doyoung和STC的毒,买回来STC12C5A60S2和STC2052AD各一个及配件若干,一开始学习的就是通过led的亮灭的时间间隔来实现不同的亮度以及LED的闪烁,这就涉及到C语言里的延时程序,刚开始学不会什么定时器,也不想用什么pwm,就想把延时程序搞个明白,但又不想去学习很深的时钟周期什么的(上学的时候微机原理都学不好),只想找一个准确点的函数当模版来使用,使用情况是:12M的晶体,1ms的延时程序。网上有很多51的程序,都是12T的,现在用的这个STC12的,就不知道延时这部分该怎么改了。
1.用单片机小精灵1.2 1.3,不知道STC12系列的单片机在时钟周期那里到底该选1T还是STC1T?(这两个的区别是1T的时钟周期是0.08333us,STC1T的时钟周期是0.125us。)

2.由于是新手,并不会在C语言程序里设置1T还是12T模式,不设置的话,STC12系列单片机出厂默认设置的是1T还是12T模式呢?

3.在baidu上搜,看了半天,有人说汇编语言编的延时程序比较准,C语言靠for循环编的误差较大,不知这种说法是否正确?能不能在C语言里引用一点汇编的模块,从而提高精度降低误差?《单片机小精灵》里无论用什么编,注释里的误差都是0us,可能是0us么?

4.有以下几个延时程序,请大家帮我推荐一个精度较高的(使用环境:12M的晶体,1ms的延时,STC12系列单片机出厂默认的时钟周期,自己没改过,目前也不会改):
A:doyoung老师的教材里延时程序是这样的:
void delay (unsigned int a)
{                                // 1ms延时程序
unsigned int i;
while( --a != 0)
   {
   for(i = 0; i < 600; i++);    //STC单片机在外部晶振为12MHz时i值上限为600
   }                                   //AT89C51单片机在外部晶振为12MHz时i值上限为125
}
doyoung老师说这个延时程序1小时后快10秒

B:《单片机小精灵》12MHz,1T模式:
void delay1ms(void)   //误差 0us
{
    unsigned char a,b;
    for(b=129;b>0;b--)
        for(a=45;a>0;a--);
}

C:《单片机小精灵》12MHz,STC1T模式:
void delay1ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=222;b>0;b--)
            for(a=12;a>0;a--);
}

D:网上找到的一个C语言延时程序:
/********************(STC12C5608AD  12MHZ z=1时精确延时1ms)*******************/
void delay_1ms(uint z)
{
uint x,y;
for(x=z; x>0; x--)
  for(y=920; y>0; y--);
}

E:网上找到的一个C语言延时程序:
void delay1ms(uint p)//12mhz
{ uchar i,j;
for(i=0;i<p;i++)
{
  for(j=0;j<124;j++)
  {;}
}
}
每个里面的数都不一样,头大啊,请大家给推荐一个正确的,精确度高的,谢谢!
发表于 2012-4-18 17:59 | 显示全部楼层
这种延时怎么可能达到高精度呢,建议汇编
回复

使用道具 举报

发表于 2012-4-18 18:55 | 显示全部楼层
1、既然是学习又不想输入探究时钟数,那就随便用一个吧,别在上面钻牛角尖
2、建议还是用定时器中断实现较为精确定时。
回复

使用道具 举报

发表于 2012-4-18 18:57 | 显示全部楼层
有个单片机小助手  专门有个 STC12C的
回复

使用道具 举报

发表于 2012-4-18 19:53 | 显示全部楼层
stc 靠循环延时精度不用太在意
回复

使用道具 举报

发表于 2012-4-18 21:01 | 显示全部楼层
循环的出来的定时本身就不可能很精确的哦。
回复

使用道具 举报

 楼主| 发表于 2012-4-19 08:38 | 显示全部楼层
回复 4# ayumi7


    您说的就是《单片机小精灵》吧
回复

使用道具 举报

发表于 2012-4-20 18:14 | 显示全部楼层
貌似是的哈  这个貌似还可以啦  我用过挺好滴
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-4 20:02 , Processed in 0.033059 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表