|
|
楼主 |
发表于 2016-9-3 12:48:41
|
显示全部楼层
本帖最后由 我爱萝丽爱萝丽 于 2016-9-4 11:29 编辑
1.3 延时函数
我们要想让单片机正确的做事,必须要知道什么时间去做。比如现在客户有一个要求,按下按钮以后,灯泡亮一秒自动熄灭。
怎样知道时间过去了一秒呢?最简单的方法:软件延时。
STC单片机有一个好处,就是下载软件自带程序生成器,我们可以用这个功能方便的创建不同时间的延时函数。
打开STC-ISP软件,找到软件延时计算器;
系统频率选择12Mhz,我们以后写程序都默认这个频率;
定时时间选择1000毫秒(ms),就是1秒(s)。1毫秒(ms)等于1000微妙(us);
指令集选择Y5,代表STC15系列单片机;
点击生成代码,然后复制到你自己的程序里就可以了。
- #include<reg51.h>
- void Delay1000ms() //@12.000MHz
- {
- unsigned char i, j, k;
- //_nop_();
- //_nop_(); 这两个用不到,直接删掉
- i = 46;
- j = 153;
- k = 245;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- //此为分界线,函数的具体内容写在上面;
- //下面是具体的程序,写函数名字就可以调用了。
- main()
- {
-
- while(1)
- {
- Delay1000ms();//每一行程序结尾要加分号
- }
-
- }
复制代码
知识点(4) 延时函数原理
可以看到自动生成的延时函数里有很多密密麻麻的东西,不要感到恐惧,其实它就是靠反复执行那些无用的东西浪费时间,才有了延时效果。
现在先不用管是怎么写的,现在只需会用就行了。
知识点(5) 声明函数
在函数调用之前,要先声明,所以要放在主函数之前。
知识点(6) 调用函数
只有在程序中调用了函数,它才会实际生效。
知识点(7) 程序注释
这段函数什么意思?如果怕自己忘了或别人看不懂,可以在函数中添加注释,注释可以用汉字。
格式:
//注释内容
具体原理是:“//”符号后面的东西Keil软件就当做不存在,只有人类才能看见哦
现在的程序就是在反复执行延时1秒的函数,赶快编译试一下吧!
|
| |