字體:小 中 大 | |
|
|
2015/05/22 18:46:57瀏覽831|回應0|推薦0 | |
I2C 24c02讀存取對應位址之資料
修改LY-51S單晶片學習器的I2C 24C02之範例程式,讓使用者可以依按鍵的加減位址來讀取24C02記憶體內的指定位址之資料內容. 獨立按鍵區KEY2 : 位址值加一 獨立按鍵區KEY3 : 位址值減一 獨立按鍵區KEY4 : 資料值加一 獨立按鍵區KEY5 : 資料值減一 所顯示的的值均以十進位方式顯示,以下是主程式 /*----------------------------------------------- 名稱:I2C協定 24c02依位址去讀存取內容資料,並顯示之 內容:用按鍵加減操作一個數位,數位變化後寫入24c02, 用操作位址加減,去讀取對應位址的資料 ------------------------------------------------*/ #include #include "i2c.c" #include "delay.c" #include "display.c" sbit KEY_ADD=P3^3; //定義按鍵輸入埠 sbit KEY_DEC=P3^4; sbit KEY_ADR_P=P3^1; //位址增加 sbit KEY_ADR_N=P3^2; //位址減少 unsigned int i2c_adr=0; /*----------------------------------------------- 主程式 ------------------------------------------------*/ main() { unsigned char num=0; Init_Timer0(); IRcvStr(0xae,i2c_adr,&num,1); KEY_ADD=1; //按鍵輸入埠電平置於H KEY_DEC=1; i2c_adr=127; while (1) //主迴圈 { if(!KEY_ADR_P) { DelayMs(10); //延時去除按鍵抖動,一般10-20ms if(!KEY_ADR_P) { while(!KEY_ADR_P) { if(i2c_adr<255) o:p=""> { i2c_adr++; } A: if(!KEY_ADR_P) goto A; //等待按鍵鬆開 } } } if(!KEY_ADR_N) { DelayMs(10); //延時去除按鍵抖動,一般10-20ms if(!KEY_ADR_N) { while(!KEY_ADR_N) { if(i2c_adr>0) { i2c_adr--; } B: if(!KEY_ADR_N) goto B; //等待按鍵鬆開 } } } if(!KEY_ADD) //如果檢測到低電平,說明按鍵按下 { DelayMs(10); //延時去除按鍵抖動,一般10-20ms if(!KEY_ADD) //再次確認按鍵是否按下,沒有按下則退出 { while(!KEY_ADD);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待 { if(num<999) span="" style="mso-spacerun: yes;" data-mce-style="mso-spacerun: yes;"> //加一操作 { num++; ISendStr(0xae,i2c_adr,&num,1); //寫入24c02 DelayMs(10); } } } } if(!KEY_DEC) //如果檢測到低電平,說明按鍵按下 { DelayMs(10); //延時去除按鍵抖動,一般10-20ms if(!KEY_DEC) //再次確認按鍵是否按下,沒有按下則退出 { while(!KEY_DEC);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待 { if(num>0) //減一操作 { num--; ISendStr(0xae,i2c_adr,&num,1); //寫入24c02 DelayMs(10); } } } } IRcvStr(0xae,i2c_adr,&num,1); //再次讀取位址內的資料 TempData[0]=dofly_DuanMa[i2c_adr/100]; //顯示位址值 TempData[1]=dofly_DuanMa[(i2c_adr%100)/10]; TempData[2]=dofly_DuanMa[(i2c_adr%100)%10]; TempData[3]=dofly_DuanMa[10]; TempData[4]=dofly_DuanMa[num/100]; //顯示資料內容 TempData[5]=dofly_DuanMa[(num%100)/10]; TempData[6]=dofly_DuanMa[(num%100)%10]; //主迴圈中添加其他需要一直工作的程式 } } |
|
( 興趣嗜好|其他 ) |