关于实现步进点亮8位LED模组的思考(二)

标题写在前面

淦!!!这个程序已经卡了三天了,终于在看完了宋雪松老师的《手把手教你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,与实际运行中体现出来时间感觉相差巨大。
为什么???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值