标题写在前面
淦!!!这个程序已经卡了三天了,终于在看完了宋雪松老师的《手把手教你C51单片机》后,受到了一点启发。
单片机晶振的频率
首先,在KEIL C 软件中的魔法棒菜单中选中TARGET,将时钟频率调整到12MHz,这个是一个比较重要的步骤,我在调整完之后,还尝试进行了宋老师所用的“Use semulator”,能够查看C语言程序中对应汇编语句的运行时间。
调整延时函数
之前我一直使用的是do{}while()
嵌套延时函数,从某种思路上来,这个延时函数在我的程序编译中,一定是错误的。(其实,不用从思路上来解释,我在整个项目的实际连线以及实际的程序中,多次失败。淦!!!)
所以,今天简化思路,使用简单的思路来编写延时函数。
void delays(xms)
{
unsigned char i;
for(i=0;i<30000;i++)
;
}
其中,for循环语句中的判断语句可以进行更换,从我现在的学习进度,我无法进行精确的延时函数,但是,可以根据与开发板上程序的实际运行来判断延时函数的效果,我们可以进行大略的调整。
多余的思考
在我编写函数的过程中,依据老师的讲解,我们消除抖动所需要的时间大约为20ms,但是,我们如何将程序的精度调整到20ms呢?
我现在已知单片机的执行程序是依据晶振的不断抖动进行的。所以,我们采取11.0592MHz的晶振频率,我们能够知道,单片机每执行一步的所需的时间为1μs。
但是执行for循环语句时,我们写的30000,与实际运行中体现出来时间感觉相差巨大。
为什么???