历史上的今天
今天是:2025年08月16日(星期六)
2021年08月16日 | 51单片机-延时1秒
2021-08-16 来源:eefocus
1.准确延时
学会了上一讲的软件调试教学,我们现在用软件调试出延时很接近1毫秒的代码:
for(j=115;j>0;j--);
如果要延时1秒,那是不是循环1000次这条语句呢?
for(i=0;i<1000;i++)
{
for(j=115;j>0;j--);
}
可是这段代码在软件调试中发现循环1000次这个1毫秒的延时语句时却跟1秒差距有点大(大于5ms对于单片机来说是一个很大的误差),在《手把手教你学51单片机》文档的4.4节也提到C 语言的延时时间是不能通过程序看出来的,所以我们只能在软件中继续调试新的延时1秒的代码。
这里调试出很接近1秒的延时代码如下
for(i=0;i<19601;i++)
{
for(j=5;j>0;j--);
}
这里需要变量i和j都必须是unsigned int类型才调试得出准确延时1秒。
2.LED间隔1秒闪烁
用本教程的开发板实现LED亮一秒灭一秒闪烁循环的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { unsigned int i,j;//定义两个16位的变量 ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 = 1;//************************** ADDR1 = 1;//让三八译码器的IO6输出低电平 ADDR0 = 0;//************************** while (1) { LED2=0;//点亮最右端的灯 for(i=0;i<19601;i++)//延时1s { for(j=5;j>0;j--); } LED2=1;//熄灭最右端的灯 for(i=0;i<19601;i++)//延时1s { for(j=5;j>0;j--); } } } |
如果把j定义为unsigned char类型,那这一段延时代码就不是1秒了,读者可以测试一下。所以说真的不能用常识来分析代码呀。
还有笔者发现这个代码在实验现象上有说不出的怪样,如果大家拿手机的秒表计时与灯的闪烁对比,即使我们给单片机上电的瞬间立马同步按下手机秒表计时按键,发现刚开始灯的闪烁与计时器还同步,后面过了几秒发现灯的状态跳变与秒表的数字跳变不同步了,软件仿真发现的确循环一次之后时间会加多。
可如果我们像下面这样三种写法
仅在后面加多一条简单的语句,上面所说的现象就消失了,也就是灯的跳变和计时的数字跳变是同步的,这个问题笔者还在查找原因,我们姑且先放一下这个纠结,继续往下学习先。
此时读者需要自己加入语句后拿手机秒表计时观察,看看是否灯的跳变与秒表数字的跳变同步,在此之前要保证手机的计时与单片机上电时间同步。
上一篇:51单片机-软件调试查看运行时间
下一篇:51单片机-函数封装
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 02:54 编辑 包括测试程序,原理图,是买的一块开发板上给的。 [ 本帖最后由 chbaaic 于 2008-10-30 11:52 编辑 ] … 查看全部问答> |
|
大家好,昨天我去一家民营企业的笔试,前面几道题都是关于技术的。 但是后面又2道题是测试个人能力的,1是问:8个球中有1个较轻,用天平称2次把它找出来,这个简单,我觉得个人智商还行,回答的挺好的。 2是问:团队里出现了消极怠工的员工,你作 ...… 查看全部问答> |
|
采用生物识别技术的门禁系统在安防行业应用已经越来越多,包括银行、监狱、部队等单位已经采用生物识别的门禁系统来加强其管理的安全性和使用的方便性。由于生物识别技术已经开始达到大规模的应用水平,包括产品价格、品质和技术都已经相对成熟 ...… 查看全部问答> |
|
大家好: 请教大家一个问题: 在微软window mobile 的windows media player下的右软键菜单下添加一个菜单项,该怎么添加? 微软是否提供相应的接口? 有谁知道 ...… 查看全部问答> |
|
公司名称: Carrier Access 公司网址: http://www.carrieraccess.com 电子邮箱: lshi@carrieraccess.com,简历请注明信息出处 工作地点: 上海 外语要求: 英文良好 简历接收方式: 英文及中文 学历: 本科以上 职位描述: -Candidates will ha ...… 查看全部问答> |




