DZ60流水灯延时问题

2019-03-26 08:03发布

刚学习freecalce单片机,DZ60的一个开发板,外部晶振是8M的,写了一个最简单的流水灯代码。可以实现功能,但有一些问题搞不明白。 先把代码放在下面 #include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<210;t++);
}

void main(void) {
  EnableInterrupts; /* enable interrupts */
  /* include your code here */
PTDDD = 0xFF;
PTDD = 0x00;                 
  for (;;)
  {
    int i,k;
    k=0;
    for(i=0;i<8;i++) { 
    PTDD=0x01<<k++ ; 
          
    DelayMS(1000);
    
    }
  }
}
 
    可以流水,但时间太快了,大概不到1/3秒。想要它慢一点流水。于是改t值,比如改成250,但问题来了!8个灯居然只有7个在流水,另一个一直不亮。或者改delayms(2000),居然只有4个灯在流水。改成delayms(4000),只有两个在流水!但是单步执行是没问题的。实在是不明白为什么会这样!!!请指教啊!急!!! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
kwq498901
1楼-- · 2019-03-26 09:33
 精彩回答 2  元偷偷看……
chenyankun
2楼-- · 2019-03-26 15:30
楼主这程序不设置时钟,不关闭软件Watchdog,也能流水,牛
myblues
3楼-- · 2019-03-26 21:28

原帖由 chenyankun 于 2012-6-23 00:53 发表 楼主这程序不设置时钟,不关闭软件Watchdog,也能流水,牛

 

发了三个月的帖子,您才回答到正点上。对待初学者就是这样啊?唉,无语。

一周热门 更多>