不可能的,是不是你的编译有错的啊我改的晶振12M,在KEIL 4.0 里面编译的,为你得出的结果最大也就是40ms,这是软件的原因,不可能出现100ms那么大的差距,是你的软件的原因。不信你实际编写一个秒钟,利用原理计算编写一个烧进单片机和利用软件测试的秒程序烧进单片机,你会发现原理计算的程序是正确的
void delay(unsigned int x) //延时 x ms { unsigned int i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } 延时1ms 即为使x=1; 这程序延时约1ms(x=1时用keil测出来约 0.96831272ms,近似1ms),用c语言很难做到准确的1ms。注意晶振为11.0592MHZ的时候用~ 晶振为12MHZ时 把 i=120 近似值1ms
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。
2、#include "reg51.h"首先写出单片机的头函数。
5、输入主函数,定义单片机的端口,写入延时函数。
6、中断跳转,使流水灯运行起来。