在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吧,
知道的朋友都別吝嗇,多指點指點
樓上的斑竹的意思是 TempData[0]=dofly_DuanMa[num/100];
TempData[1]=dofly_DuanMa[(num%100)/10];
TempData[2]=dofly_DuanMa[(num%100)%10];
讓我保存他們的每一位?是這樣嗎
我把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];
//主循環中添加其他需要一直工作的程序
}
}
zacharias 發表于 2017-6-28 17:43
大神可以把 I2C.H 發我一下嗎
1.15 KB, 下載次數: 22, 下載積分: 黑幣 -5
iic
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |