简单了解了单片机,今天用到延时程序,12MHz的C51单片机延时程序通常写成下面这样
void delayms(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } }
真是百思不得其解啊,12MHz执行1条语句为1us,循环120次,应该只有120us啊,怎么就成了1ms呢。查了半天
才明白,原来这是在keil上调试时得到的时间。为了记忆深刻,自己整理了一遍,希望可以帮助一些我这样的
小白们
右键Target 1 选择Option for Target’Targe 1’,如下图所示:
设置单片机的晶振如下图所示:
编写程序,并对程序进行编译,编译成功后在程序中设置断点
点击Debug 选择Start/Stop Debug Session
程序运行到第一个断点,记住此时的时间 sec=0.00038900s
再次选择Debug 选择Go 程序运行到下一个断点,再次记录时间 Sec=0.00137600s
两次时间的差0.000987即为delayms(1)所用的时间,约为1ms。所以用12MHz的晶振时,
延时1ms的程序经常写为开头那样!
那贴我帮你删除了啊。。支持原创