久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2240|回復: 4
打印 上一主題 下一主題
收起左側

單片機兩路延時時間 存儲的程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:405193 發表于 2019-7-17 12:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位師傅您們好,我用STC15W404AS和TM1650編程兩路延時程序,不能存儲兩個時間,哪位師傅幫我看看,怎樣修改,非常感謝。

if(key_timeto)//如果按鍵掃描時間到,此變量在定時器中會被每隔60ms置1一次
                    {                 
                                 key_L = key;
                                     key_timeto = 0; //清0
                                     key = Scan_Key();//讀按鍵
                                     //第一個按鍵按下
                                     if(key == 0x44)   //此鍵值和數據手冊上對應
                                     {
                                      if(key_ok==0) //按鍵按下
                                       {
                                         key_ok = 1;
                                        mode = (mode+1)%2;//切換模式
                                       }
                                     }
                                    //第二個按鍵按下
                                    else if(key == 0x4c)
                                     {        if(mode == 0)//模式0為設置模式
                                       {
                                         if(time2<999)
                                        time2 = (time2+1);//按此鍵加時間
                                       }
                                      if(mode == 1)//模式1為設置模式
                                       {
                                         if(time1<999)
                                        time1 = (time1+1);//按此鍵加時間
                                       }
                                    
                                     timea=time1;
                                        IapEraseSector(0);//保持改變后的時間值
                                    IapProgramByte(0,(timea>>8));
                                    IapProgramByte(1,(uchar)timea);
                                     timeb=time2;
                                        IapEraseSector(1);//保持改變后的時間值
                                    IapProgramByte(1,(timea>>8));
                                    IapProgramByte(2,(uchar)timea);
                                       
                                        }
                                    //第三個按鍵按下
                                   else if(key == 0x54)
                                   {  if(mode == 0)//模式0
                                       {
                                         if(time2>0)
                                         {
                                           time2--;//減時間
                                         }
                                       }
                                   
                                    
                                    if(mode == 1)//模式1
                                    {
                                     if(time1>0)
                                      {
                                       time1--;//減時間
                                      }
                                    }
                                   
                                     timea=time1;
                                        IapEraseSector(0); //保存時間
                                    IapProgramByte(0,(timea>>8));
                                    IapProgramByte(1,(uchar)timea);
                                            timeb=time2;
                                           IapEraseSector(1); //保存時間
                                    IapProgramByte(1,(timeb>>8));
                                    IapProgramByte(2,(uchar)timeb);
                                   }
                                   else
                                   {
                                    key_ok = 0;
                                    }
                  
                  
                   }
        if(update_dis) //30ms到,更新顯示
         {
                        update_dis = 0;
                        TM1650_Set(0x48,0x11);

                        if(stat ==0)
                          {
                            if(mode == 1)//如果是模式1
                              {
                                                TM1650_Set(0x68,CODE[timea/100]);        //顯示
                                                TM1650_Set(0x6A,CODE[timea/10%10]);
                                                TM1650_Set(0x6C,CODE[timea%10]);
                                                
                             }
                           else if(mode == 0)
                              {
                                           TM1650_Set(0x68,CODE[timeb/100]);
                                           TM1650_Set(0x6A,CODE[timeb/10%10]);
                                           TM1650_Set(0x6C,CODE[timeb%10]);
                                          
                              }
                           }
                        else if(stat == 1)//最后倒計時完后顯示的內容
                          {         
                            timea=time1;
                                TM1650_Set(0x68,CODE[timea/100]);
                                TM1650_Set(0x6A,CODE[timea/10%10]);
                                TM1650_Set(0x6C,CODE[timea%10]);         
                                stat=0;         
                          }  
         }

   }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:405193 發表于 2019-7-17 12:13 | 只看該作者
初始化:uchar key,key_L,key_ok;
          TM1650_Set(0x48,0x11);//初始化數碼管
          TM1650_Set(0x68,CODE[0]);//初始化后要把顯存先寫數據就能顯示
          TM1650_Set(0x6A,CODE[0]);
          TM1650_Set(0x6C,CODE[0]);
       
          time1 = (IapReadByte(0)<<8)+IapReadByte(1);//讀eeproM中數據,初始化時間初值
          time2 = (IapReadByte(0)<<8)+IapReadByte(2);//讀eeproM中數據,初始化時間初值
          if(time1 >= 999)//如果時間值大于999則是第一次上電
           {
             time1 = 000;//則為默認值
                 time2 = 002;
           }
         Timer0Init();//定時器初始化
         timea = time1;//初始化時間
         timeb = time2;
回復

使用道具 舉報

板凳
ID:405193 發表于 2019-7-18 13:48 | 只看該作者
有哪位師傅可以幫忙看看嗎?
回復

使用道具 舉報

地板
ID:388197 發表于 2019-7-19 23:22 | 只看該作者
程序有點長,代碼得一行行看,挺費腦筋的.這里只說說思路吧.
粗略看了下,你這程序大概是利用TM1650讀按鍵,根據輸入來決定具體操作,保存之類的.
既然程序存儲有問題,而且是根據輸入的東西來決定保存,那么影響它不能保存的可能是輸入狀態的那部分代碼沒寫好導致保存的代碼沒有得到執行,或者用于保存的那部分代碼沒寫好.你可以先另建個工程,寫個很簡單的小程序.建立個兩個常量比如 0xa3和0xb4把他保存到FLASH的某個地址里,然后再從這個地址里讀出來,假如讀出來的數字也是0XA3和0xb4,那么就點亮LED1,如果不是 就點亮LED2.這樣很容易驗證你保存的代碼是否有誤.
用類似的辦法,也很容易驗證輸入部分的代碼有無出錯了.
兩者都調試完,整合一下就可以了.
或者會用單步調試的話,用單步調試也是不錯的辦法.(51的單步調試以前學的時候沒怎么研究過,現在也很少用51,所以懶得去研究了)

評分

參與人數 1黑幣 +10 收起 理由
yong761228 + 10 贊一個!

查看全部評分

回復

使用道具 舉報

5#
ID:405193 發表于 2019-7-20 06:14 | 只看該作者
cjm82 發表于 2019-7-19 23:22
程序有點長,代碼得一行行看,挺費腦筋的.這里只說說思路吧.
粗略看了下,你這程序大概是利用TM1650讀按鍵,根 ...

非常感謝師傅,我昨晚已經搞好了,就是根據您的類似方法,我先存儲1個時間,沒問題了,再存儲第二個時間。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 最近中文字幕免费 | 久久国产区 | 91久久国产综合久久 | 国产精品1区2区3区 国产在线观看一区 | 亚洲欧美综合网 | 欧洲视频一区二区 | 亚洲欧美一区二区三区情侣bbw | 国产视频观看 | 久久99久久99精品免视看婷婷 | 一区二区三区国产视频 | 免费在线观看成人 | 欧美高清一区 | 精品久久久久久亚洲综合网 | 国产精品久久久久久久岛一牛影视 | 久久99精品久久久久 | 久草影视在线 | 激情网站在线 | 第一色在线 | 欧美一区二区在线 | 国产午夜精品一区二区三区四区 | 91在线播 | 国产欧美在线视频 | 久久福利电影 | 成人欧美日韩一区二区三区 | 一级片网址 | 91视频一区二区三区 | 97色在线视频 | 国产免费a | 激情五月婷婷综合 | 综合中文字幕 | 365夜爽爽欧美性午夜免费视频 | 日韩欧美一区二区在线播放 | 成人福利网 | 毛片一级电影 | 毛片在线免费播放 | 一区影视| 日韩精品视频在线观看一区二区三区 | 99久久中文字幕三级久久日本 | 先锋资源吧 | 久久99精品视频 | 中文字幕不卡在线88 |