欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于24c02儲存一個多位數的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:41871 發表于 2012-6-18 17:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

在DOFLY的教學中有一個關于“記憶上次上次開機狀態“的程序:
教學源代碼如下:
#include <reg52.h>               
#include "i2c.h"
#include "delay.h"
#include "display.h"

sbit KEY_ADD=P3^3;  //定義按鍵輸入端口
sbit KEY_DEC=P3^4;

/*-----------------------------------------------
                     主函數
------------------------------------------------*/ 
main()
{
 unsigned char num=0;
 Init_Timer0();

 IRcvStr(0xae,0,&num,1);                               
               
 KEY_ADD=1; //按鍵輸入端口電平置高
 KEY_DEC=1;
while (1)         //主循環
  {
 
  if(!KEY_ADD)  //如果檢測到低電平,說明按鍵按下
    {
  DelayMs(10); //延時去抖,一般10-20ms
     if(!KEY_ADD)     //再次確認按鍵是否按下,沒有按下則退出
    {
        while(!KEY_ADD);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
        {
     if(num<999)    //加操作
            {
           num++;
              ISendStr(0xae,0,&num,1);  //寫入24c02
              DelayMs(10);
             }

    }
    }
 }

 if(!KEY_DEC)  //如果檢測到低電平,說明按鍵按下
    {
  DelayMs(10); //延時去抖,一般10-20ms
     if(!KEY_DEC)     //再次確認按鍵是否按下,沒有按下則退出
    {
        while(!KEY_DEC);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
        {
        if(num>0)  //減操作
           {
           num--;
              ISendStr(0xae,0,&num,1);  //寫入24c02
              DelayMs(10);
             }

    }
    }
 }
 TempData[0]=dofly_DuanMa[num/100];   
 TempData[1]=dofly_DuanMa[(num%100)/10];
 TempData[2]=dofly_DuanMa[(num%100)%10];
     //主循環中添加其他需要一直工作的程序
 
  }
}
里面unsigned char num=0;的范圍是0-255,我如果要保存一個大于255的數,比如9999,那該怎么改呢,我看過別的論壇上有的人說要把9999拆成2個99保存,我想一個char型的數據怎么拆,有沒有高手指點下,有沒有直接能改成int型保存的可能,不過24C02一個地址單元好像只能保存0-255吧,
知道的朋友都別吝嗇,多指點指點

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

使用道具 舉報

沙發
ID:27916 發表于 2012-6-19 09:18 | 只看該作者
CHAR貌似是一個8BIT的數據吧,不會出現9999的數據呢
回復

使用道具 舉報

板凳
ID:27916 發表于 2012-6-19 09:20 | 只看該作者
如果有大于2BITE的數據,你可以用除法和求余來得到高低位
回復

使用道具 舉報

地板
ID:41871 發表于 2012-6-19 11:11 | 只看該作者

樓上的斑竹的意思是 TempData[0]=dofly_DuanMa[num/100];   
 TempData[1]=dofly_DuanMa[(num%100)/10];
 TempData[2]=dofly_DuanMa[(num%100)%10];
讓我保存他們的每一位?是這樣嗎

回復

使用道具 舉報

5#
ID:41871 發表于 2012-6-22 14:22 | 只看該作者

我把int型拆分成2個CHAR還是不行,不知道是寫不進去還是讀不出來,幫我看看錯在哪了
#include <reg52.h>               
#include "i2c.h"
#include "delay.h"
#include "display.h"

sbit KEY_ADD=P3^3;  //定義按鍵輸入端口
sbit KEY_DEC=P3^4;

/*-----------------------------------------------
                     主函數
------------------------------------------------*/ 
main()
{   
 unsigned int num;
 unsigned char num1;
 unsigned char num2;
 num1=num/256;
 num2=num%256;
 num=num1*256+num2;
 Init_Timer0();

 IRcvStr(0xae,0,&num1,1);  
 IRcvStr(0xad,0,&num2,1);                             
               
 KEY_ADD=1; //按鍵輸入端口電平置高
 KEY_DEC=1;
while (1)         //主循環
  {
 
  if(!KEY_ADD)  //如果檢測到低電平,說明按鍵按下
    {
  DelayMs(10); //延時去抖,一般10-20ms
     if(!KEY_ADD)     //再次確認按鍵是否按下,沒有按下則退出
    {
        while(!KEY_ADD);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
        {
     if(num<9999)    //加操作
            {
           num++;
              ISendStr(0xae,0,&num1,1);  //寫入24c02
     ISendStr(0xde,0,&num2,1);
              DelayMs(10);
             }

    }
    }
 }

 if(!KEY_DEC)  //如果檢測到低電平,說明按鍵按下
    {
  DelayMs(10); //延時去抖,一般10-20ms
     if(!KEY_DEC)     //再次確認按鍵是否按下,沒有按下則退出
    {
        while(!KEY_DEC);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
        {
        if(num>0)  //減操作
           {
           num--;
              ISendStr(0xae,0,&num1,1);  //寫入24c02
      ISendStr(0xde,0,&num2,1);
              DelayMs(10);
             }

    }
    }
 }
 TempData[0]=dofly_DuanMa[num/100];   
 TempData[1]=dofly_DuanMa[(num%100)/10];
 TempData[2]=dofly_DuanMa[(num%100)%10];
     //主循環中添加其他需要一直工作的程序
 
  }
}

回復

使用道具 舉報

6#
ID:41871 發表于 2012-6-25 16:21 | 只看該作者
就這么沉了?
回復

使用道具 舉報

7#
ID:215565 發表于 2017-6-28 17:43 | 只看該作者
大神可以把 I2C.H  發我一下嗎
回復

使用道具 舉報

8#
ID:137676 發表于 2017-6-28 19:33 | 只看該作者
樓主你好!
IRcvStr(0xae,0,&num1,1);   
IRcvStr(0xad,0,&num2,1);
樓主的i2c設備有幾個啊!
0xae,我猜想應該是i2c設備地址,也就是說你向第一個設備寫數據后,又向第二個設備寫數據,
如果第一個數據能讀取,那么第二個估計就不行了吧!
回復

使用道具 舉報

9#
ID:137676 發表于 2017-6-29 00:50 | 只看該作者
zacharias 發表于 2017-6-28 17:43
大神可以把 I2C.H  發我一下嗎

希望對你有所幫助。

IIC.zip

1.15 KB, 下載次數: 22, 下載積分: 黑幣 -5

iic

回復

使用道具 舉報

10#
ID:188808 發表于 2017-6-29 14:34 | 只看該作者
建議拆分成高八位和低八位分別存儲在不同地址
回復

使用道具 舉報

11#
ID:168911 發表于 2020-6-12 21:36 來自觸屏版 | 只看該作者
我有24c02可以儲存多組多位斷電時儲存,平常計數不儲存,突然斷電時儲存一下,因為24c02有讀寫次數,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表