找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2637|回复: 9
收起左侧

在15单片机中单个复位按钮按下不同次数有不同动作的程序怎么写?

[复制链接]
ID:441776 发表于 2018-12-25 10:42 | 显示全部楼层 |阅读模式
20黑币
在15单片机中单个复位按钮按下不同次数有不同动作的程序怎么写?

回复

使用道具 举报

ID:139945 发表于 2018-12-25 13:34 | 显示全部楼层
用一个计数变量,按键每次按下自加一次,然后在根据计数变量具体为多少,在相应处理对应的动作就可以了。
回复

使用道具 举报

ID:155507 发表于 2018-12-25 14:40 | 显示全部楼层
题主你好,你这样的提问。说明你不明白复位工作原理
回复

使用道具 举报

ID:134430 发表于 2018-12-25 21:48 | 显示全部楼层
复位按多少次都是一个结果:程序从新开始。
回复

使用道具 举报

ID:446674 发表于 2018-12-26 09:13 | 显示全部楼层
复位键的功能是防止运行的程序出现较大误差或不按照预期方向运行,一旦按下程序重新开始运行,所以如果你想用某一按键来控制选择程序的话,建议你使用其它按键
回复

使用道具 举报

ID:449525 发表于 2018-12-26 09:51 | 显示全部楼层
你这是准备玩bootlooder么?看看stm32的代码
回复

使用道具 举报

ID:451718 发表于 2018-12-26 11:08 | 显示全部楼层
你这个有点折腾,不过是可以实现的。 呵呵,51下的bootlooder。 可以通过bios的原理来实现的。  你的电路中一定要有个24C**的固件, 在固件里面设置一个地址用来累加手动复位flag, 每次启动第一件事就是检测PCON的POF状态,POF=1是上电复位,如果POF=0则对应手动复位flag++。标志位要从24C**里面读取,然后根据这个判断程序执行。
我没有折腾过哦,思路给你了,搞定了记得告诉我一下。
回复

使用道具 举报

ID:455309 发表于 2018-12-26 12:55 | 显示全部楼层
while(1)
{
     if( key==0)//按键按下
     {
         cnt++;

         if( cnt>300)
         {
            cnt=0;//到3秒,退出本循环进入下一段程序
             break;
}
         dely(10);//延时10毫秒
}
}  

while(1)
{
    ...//此为主程序段
}

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:455324 发表于 2018-12-26 13:04 | 显示全部楼层
先根据你要显示数字的个数定义一个unsigned char型的字符数组,调用扫描键盘函数,扫描到哪个键被按下的同时将键值存进对应的数组元素中,再调用液晶显示程序显示,液晶显示程序中显示的位数可变,可以
回复

使用道具 举报

ID:374015 发表于 2018-12-26 14:06 | 显示全部楼层
2种方案
方案一、计次。每次按下,次数加1,然后switch(次数)。这种方案,效果是,根据按键总次数,对应不同输出,依次循环切换。
方案二、计时计次。用定时器,测定在规定时间内,获取到的按键次数。然后switch(次数)。这种方案,效果是,根据每次的按键次数,直接选择对应的输出,对比方案一,不用循环,效率更高。但是需要记录各个次数对应的输出。
根据实际情况,选择不同方案。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表