标题: 51单片机C语言增加数值问题 [打印本页]

作者: 1454512618    时间: 2023-7-25 09:24
标题: 51单片机C语言增加数值问题
   请教各位大佬,如何使用C语言对51单片机对一个数进行固定步长的增加,每按一下增加按钮加1,长按加5。问题在于如何每次增加都要是5 10 15以此类推,比如:01. 02 03...小于五的时候长按要变成05 大于等于5的时候长按变成10。描述能力有限,表达不是很清晰,求大佬解答,先谢谢了。


作者: 热度三分    时间: 2023-7-25 14:32
也就是说你每次长按增加按钮数值必须为5的倍数是吧,短按则在原变量上加1。短按比较简单直接在原变量上加1即可,长按我的思路是先判断变量大小,如果小于5直接赋值5即可,第二种情况大于等于5,先将变量除以5取余,然后再用变量+(5-余数)=变量即可。例如已经短按加到了7,7除5取余等于2,最终结果应该是7+(5-2)=10.这样就达成要求啦
作者: zsyzdx    时间: 2023-7-25 15:59
正常加,比如短按+1,长按的时候+5,长按的数据除以5的余数,得到余数后用5减,得到的数和原来的数相加就可以了。
作者: 1454512618    时间: 2023-7-25 16:22
zsyzdx 发表于 2023-7-25 15:59
正常加,比如短按+1,长按的时候+5,长按的数据除以5的余数,得到余数后用5减,得到的数和原来的数相加就可 ...

谢谢解答
作者: 1454512618    时间: 2023-7-25 16:23
热度三分 发表于 2023-7-25 14:32
也就是说你每次长按增加按钮数值必须为5的倍数是吧,短按则在原变量上加1。短按比较简单直接在原变量上加1 ...

谢谢解答
作者: lkc8210    时间: 2023-7-25 22:09
  1. if(KeyVal==Press_Short)
  2. {
  3.         KeyVal=Press_Null;
  4.         TarVal++;       
  5. }else if(KeyVal==Press_Long)
  6. {
  7.         uint i = 5;
  8.         KeyVal=Press_Null;
  9.         while(TarVal>=i)
  10.         {
  11.                 i+=5;
  12.         }
  13.         TarVal=i;       
  14. }
复制代码

作者: wulin    时间: 2023-7-25 22:18
num不等于5的整数倍+-到5的整数倍
长按+5操作 num-=num%5;num+=5;
长按-5操作 if(num%5==0)num-=5;else num-=num%5;
作者: hy47566398    时间: 2023-7-26 02:24
FiveNum = FiveNum  - FiveNum%5;
or
FiveNum = FiveNum - FiveNum%5 + 5;
作者: 1454512618    时间: 2023-7-26 08:20
wulin 发表于 2023-7-25 22:18
num不等于5的整数倍+-到5的整数倍
长按+5操作 num-=num%5;num+=5;
长按-5操作 if(num%5==0)num-=5;else n ...

谢谢解答
作者: 1454512618    时间: 2023-7-26 08:21
hy47566398 发表于 2023-7-26 02:24
FiveNum = FiveNum  - FiveNum%5;
or
FiveNum = FiveNum - FiveNum%5 + 5;

谢谢解答




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1