教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

(1小时学会C语言51单片机)C语言入门教程 - - - - 免费下载(7)

来源:网络收集 时间:2026-09-21
导读: (八)//以上的文字写于2005年5月,由于时间关系,一直未能将此完成,最近闲着无聊又接着写了些文字,以下写于2006年6月5日! 在这里我想对上面一点,作个简单的说明,如果你是刚学单片机,那么你写的代码是VERY GOOD的

(八)//以上的文字写于2005年5月,由于时间关系,一直未能将此完成,最近闲着无聊又接着写了些文字,以下写于2006年6月5日!

在这里我想对上面一点,作个简单的说明,如果你是刚学单片机,那么你写的代码是VERY GOOD的,但是如果把上面的代码应用于产品的话,那么我可以告诉你,上面所写的按键识别代码全部是垃圾代码,^_^,这下傻了吧,呵呵。为什么?我的按键不是可以正常工作吗?

请看这里:

if(P1_0 == 0) {

Delay(10);//问题就在这里,你让CPU在这里空转? if(P1_0 == 0) {

//...add your code here. }

}

进入第1个if判断语句后,就进入了Delay(10);再看Delay函数,完全让CPU执行(;空语句),所以在做大的产品或者代码时,这个是非常耗费单片机内部资源的。有什么办法吗?呵呵,那是肯定的。

解决方法大致有如下2种:

1.将延时函数放在中断中,在中断里查询延时的标志位。/*不仅仅用于键盘识别,亦可以用于其他的延时代码,见EX1*/

2.直接在中断中查询按键的标志位.//见EX2。 EX1:

unsigned char Delaytime;

void Delay(unsigned char Delaytime)//

{

while(Delaytime !=0 );//等在这里,直到Delaytime为0。 }

void Timer0_interrupt(void) interrupt 1 using 2 {

if(Delaytime != ) Delaytime--;

//...add your other code here

}

Delay函数具体延时多长时间,就要看你设定的T0定时器中断和Delaytime的乘积,比如你的定时器中断为50MS,Delaytime为20的话,那么50MS*20=1S。

(1小时学会C语言51单片机)C语言入门教程 - - - - 免费下载(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/604254.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)