找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 924|回复: 5
收起左侧

单片机C语言按键连加连减不是1,如何处理?

[复制链接]
ID:686513 发表于 2022-4-3 11:54 | 显示全部楼层 |阅读模式
比如我要加或减到1000,我每按下一次按键加5或减5,单片机C语言程序该如何修改?
  switch(key_scan(100))  //key_scan()按键判断
                {
                        
                case 1:
                          switch(wnd)   //wnd为四个窗口中之一的加键显示
                          {                                                
                                       
                        case 0:parm1 = IapRead(0x0400); parm1++;if(parm1>150) parm1=150; IapErase(0x0400);IapProgram(0x0400, parm1);break;        
                        case 1:parm2 = IapRead(0x0500); parm2++;if(parm2>150) parm2=150; IapErase(0x0500);IapProgram(0x0500, parm2);break;  
                        case 2:parm3 = IapRead(0x0600); parm3++;if(parm3>995) parm3=955; IapErase(0x0600);IapProgram(0x0600, parm3);break;      
                        case 3:parm4 = IapRead(0x0700); parm4++;if(parm4>250) parm4=250; IapErase(0x0700);IapProgram(0x0700, parm4);break;                                                            
                        }                                       
                        break;
   
回复

使用道具 举报

ID:96744 发表于 2022-4-3 15:39 | 显示全部楼层
最简单的,就是 parm1++改成 parm1=parm1+5;

评分

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

查看全部评分

回复

使用道具 举报

ID:686513 发表于 2022-4-6 08:48 | 显示全部楼层
alunli 发表于 2022-4-3 15:39
最简单的,就是 parm1++改成 parm1=parm1+5;

谢谢了,一开始也是这样改的,不行才问,现在好了!
回复

使用道具 举报

ID:1016026 发表于 2022-4-6 09:54 | 显示全部楼层
可以通过按键时间来判断吗,原来1s加1.改成200ms加1的话行不行呢
回复

使用道具 举报

ID:686513 发表于 2022-4-7 11:35 | 显示全部楼层
本帖最后由 zhth1979 于 2022-4-7 11:39 编辑
zhth1979 发表于 2022-4-6 08:48
谢谢了,一开始也是这样改的,不行才问,现在好了!

只有三位数码管显示,如果从0到1000为:parm1=parm1+5;(显示两位整数+一位小数)。大于1000,parm1=parm1/10    (parm1缩小10,只显示三位整数,小数位去掉)这时parm1不加5加1,parm1++,parm1加到150时等于150.如何实现?
void key_Service()
{         
        switch(key_scan(170))
                {                        
                        case 1:
                                  switch(wnd)
                                  {                                                                                       
                                        case 0:T1Cnt=epxs_short; parm1 = Read_EEPROM_u16(0x0400);  parm1 = parm1+5; if(parm1>1000) {parm1=parm1/10;parm1++;} if (parm1>1500) parm1=1500;Save_EEPROM_u16(0x0400, parm1); break;     这样改后大于1000时(只显示三位整数时还是加5不是加1)   
回复

使用道具 举报

ID:686513 发表于 2022-4-8 08:22 | 显示全部楼层
zhth1979 发表于 2022-4-7 11:35
只有三位数码管显示,如果从0到1000为:parm1=parm1+5;(显示两位整数+一位小数)。大于1000,parm1=parm ...

自己已经搞定了,不需要回复了!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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