找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1635|回复: 8
收起左侧

单片机数码管程序递加找不出错在哪里

[复制链接]
ID:275852 发表于 2019-12-25 12:13 | 显示全部楼层 |阅读模式
                if(STARflag)//如果按下了启动按钮,置位
                                {   
                                         Morebyte_Readluf(0x2200);//读EEPROM中的luf数组中的数据
                                        LL=luf[1]*256;
                                        LL=LL+luf[0];
                                    BL=LL;
                                    Morebyte_Readcuf(0x2400);//读EEPROM中的cuf数组中的数据
                                    CC=cuf[1]*256;
                                        CC=CC+cuf[0];
                                        numc=CC;
                                        numc+=BL;//每按一次按钮numc就增加BL值
                                    if(numc>9998)
                                             {
                                               numc=0;
                                             }
                                        CC=numc;
                                                
                                    dct[0]=CC%256; //BB的低八位
                                        dct[1]=CC/256; //BB的高八位
                                        Sector_Erase(0x2400);//擦除扇区
                                    Morebyte_Program(0x2400,dct);//将numc写入EEPROM中
                                 
                                      SMGBUFFER[4][0]=DuanMa[numc%10]; //四位数码管待显示数据
                                    SMGBUFFER[4][1]=DuanMa[numc/10%10];
                                    SMGBUFFER[4][2]=DuanMa[numc/100%10];
                                   SMGBUFFER[4][3]=DuanMa[numc/1000%10];

                                 DISPLAY(4);//显示函数
                                STARflag=0;//按键复位
                                 
           }
求高手指导一下,为什么我的数码管显示一直是每按一次加1,而不是加10(BL值我设置为10),谢谢了!!!
回复

使用道具 举报

ID:213173 发表于 2019-12-25 14:10 | 显示全部楼层
本帖最后由 wulin 于 2019-12-25 15:33 编辑

16位数据可以按字节存EEPROM同一扇区不同地址,读取后再合并还原为16位数据。
        if(STARflag)//如果按下了启动按钮,置位
        {   
                luf[0]=Morebyte_Readluf(0x2200);//读EEPROM保存的低八位放在在luf[0]缓存数组中
                luf[1]=Morebyte_Readluf(0x2200+1);//读EEPROM保存的高八位放在在luf[1]缓存数组中
                numc=luf[1]<<8|luf[0];//合并为16位数据
       
                numc+=BL;//每按一次按钮numc就增加BL值
                if(numc>9998)
                {
                        numc=0;
                }
                dct[0]=numc;                 //缓存低八位,高位溢出
                dct[1]=numc>>8;         //缓存高八位
                Sector_Erase(0x2200);//擦除扇区
                Morebyte_Program(0x2200,dct[0]);//将numc低八位写入EEPROM中
                Morebyte_Program(0x2200+1,dct[1]);//将numc高八位写入EEPROM中
       
                SMGBUFFER[4][0]=DuanMa[numc%10]; //四位数码管待显示数据
                SMGBUFFER[4][1]=DuanMa[numc/10%10];
                SMGBUFFER[4][2]=DuanMa[numc/100%10];
                SMGBUFFER[4][3]=DuanMa[numc/1000%10];
               
                DISPLAY(4);//显示函数
                STARflag=0;//按键复位
        }

回复

使用道具 举报

ID:239611 发表于 2019-12-25 14:19 | 显示全部楼层
BL是从EEPROM读出来的,这里看不到你怎么设置BL的,设置后是否写到EEPROM中?
回复

使用道具 举报

ID:275852 发表于 2019-12-25 15:30 来自手机 | 显示全部楼层
botgs 发表于 2019-12-25 14:19
BL是从EEPROM读出来的,这里看不到你怎么设置BL的,设置后是否写到EEPROM中?

BL我有设置过并确认己经写入了EEPRPM的,因为我用另一个按键可以调阅已设置好的参数,并在数码管显示,结果没错,谢谢你的答复
回复

使用道具 举报

ID:275852 发表于 2019-12-25 17:18 | 显示全部楼层
问题找出来了,问题出在哪里呢?显示的条件是: if(STARflag),可是最后把这个条件否定了:STARflag=0;//按键复位,造成了瞬间显示,根本看不出显示效果,应该延时一些时间再退出,谢谢回复我的朋友!!!
回复

使用道具 举报

ID:437615 发表于 2019-12-25 17:22 | 显示全部楼层
BL=LL;  LL=luf[1]*256+luf[0];是多少
回复

使用道具 举报

ID:668457 发表于 2019-12-25 17:34 | 显示全部楼层
luf[1]和luf[0]是多少啊
回复

使用道具 举报

ID:275852 发表于 2019-12-25 22:50 | 显示全部楼层
zhy123654 发表于 2019-12-25 17:22
BL=LL;  LL=luf[1]*256+luf[0];是多少

具体值有按键驱动函数设置,谢谢!
回复

使用道具 举报

ID:275852 发表于 2019-12-25 22:52 | 显示全部楼层
未成为大佬 发表于 2019-12-25 17:34
luf[1]和luf[0]是多少啊

具体值有按键驱动函数设置,谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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