查看: 2954|回复: 1

[其他] DZ60的for循环延时问题

[复制链接]

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
1
最后登录
1970-1-1
发表于 2013-3-28 11:24:36 | 显示全部楼层 |阅读模式
 各位大神……小弟刚刚学习使用DZ60这款片子,想问各位大神在DZ60中用for循环实现us级别的延时,其中for循环这段程序的运行时间怎么在codewarrior中查看呀。程序如下:
void DZ60_Mcg(void)
{
 // MCGC1_IREFS=1;//只有这一句时可以不使用外部晶振,FEI模式产生16M总线频率。
  SOPT1 = 0x00; 
        MCGC2=0x36;//N=2*(3+2),R=2的1次方,输出=晶振频率*p*N/R,总线频率为输出的一半
        while(!MCGSC_OSCINIT);
        MCGC1=0xB8;//第七位设置P,使用高频晶振p=1-1;否者为0-64
        while(MCGSC_IREFST);
        while(!(MCGSC_CLKST==0b10));
        MCGC1=0x90;
        MCGC3=0x48;//最后四位*4对应倍频因子。
        while(!MCGSC_PLLST);
        while(!MCGSC_LOCK);
        MCGC1=0x12;
        while(!(MCGSC_CLKST==0b11));
}
 
 
 void delayus(uint us) 
{
  uint i,j;
   for (i=us;i>0;i--)
    {   
      for (j=100;j>0;j--)
        {
        ;
        }
    }
}
 
void main(void) {
  DisableInterrupts;
   DZ60_Mcg();
  EnableInterrupts; /* enable interrupts */
  /* include your code here */
  for(;;) 
  {
    uint i;
    i=1;
    delayus(1000);
    i=2;   
    
  } /* loop forever */
  /* please make sure that you never leave main */
}
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

8

主题

299

帖子

0

高级会员

Rank: 4

积分
653
最后登录
2018-12-14
发表于 2013-3-28 11:54:57 | 显示全部楼层

RE:DZ60的for循环延时问题

用C实现us级别的延时是非常不准确的。建议用汇编。
如果你用cw6.3, 在debugger 里有trace 模块, 可以查看代码执行时间
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 07:32 , Processed in 0.084770 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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