刚学习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),只有两个在流水!但是单步执行是没问题的。实在是不明白为什么会这样!!!请指教啊!急!!!
|