51单片机中按键程序用C怎么写

就是按下然后弹起LED亮的时间加一秒... 就是 按下然后弹起 LED亮的时间加一秒 展开
 我来答
Small_tiny
推荐于2017-11-24 · 超过28用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:75.9万
展开全部
这个太简单了吧,记住写程序定时器要一直跑,建立一个时基,像个手表的时间一样要一乎指直跑,即有time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour等时间变量建立时基一直走。其它程序可以分时扫描也可以轮流扫描,不能停留死等,像电脑里的程序改逗一样表面看起来各个程序是一直运行的,即各个程序中不能有delay_1ms之类的函数,如果要定时应该申请一个变量在时基里处理,如等待2s可以这么写
if(step==0){ time=2,time_100ms=0,step=1;}
if((step==1)&&(time==0)){//2s到
//等待2s后要执行的代码
}
在时基时每1s把time减1,减到0为止即if(time)time--;
对按键的写法一般用采集的方法如按键后IO为低
if(!IO){ //低电平,有按键
key_time++;
if((key_time==100)&&(!key_flag)){ //已经赋值了就不再赋值了
key_flag=1;
key_flag_bak=1;
}
else{ //无按键
key_time=0;
key_flag_bak=0;
}

if(key_flag&&(!key_flag_bak)){ //有岁歼配按键并松开,即松开响应
time=2; //亮2s
key_flag=0;//把键值清0

if(time){
LED_ON;//灯亮
}
else LED_OFF;
786308695
2011-11-29 · TA获得超过110个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:91.6万
展开全部
用一个定时器,先赋值一个num,当num=20的时候,LED亮的时间是1s,当按铅和备下键,让num+20(槐毁12M的晶振棚渣)在定义一个a,判断a是否与num相等。这样试试呢....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式