刚学习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),只有两个在流水!但是单步执行是没问题的。实在是不明白为什么会这样!!!请指教啊!急!!!
此帖出自
小平头技术问答
一周热门 更多>