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),只有两个在流水!但是单步执行是没问题的。实在是不明白为什么会这样!!!请指教啊!急!!! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。