?? drv_at24c64.lst
字號:
C51 COMPILER V7.06 DRV_AT24C64 10/29/2006 14:34:14 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DRV_AT24C64
OBJECT MODULE PLACED IN Drv_At24c64.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Drv_At24c64.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <./Atmel/at89x52.h>
2 #include "source.h"
3 #define DEVICEID(A) (A&0XF0)
4 #define DEVICE_AT24C64 0xA0 //A1A2A1=0
5 #define DEVICE_SDA2000 0x60
6 extern TMDEV_OPS Opsgp;
7 unsigned int eeprom_last=0;
8 unsigned int eeprom_grid=0;
9 //*-----------------------------------------------------------------------------
10 //* 函數(shù)名稱 : At24c64_WriteAgain (I2Cdesc *I2C_pt, u_short loadAddress, u_char nbByte)
11 //* Object : I2C
12 //* 輸入?yún)?shù) : <I2C_pt> = 為I2C的描述指針,其結(jié)構(gòu)定義在source.h中
13 //* 輸出變量 : 無
14 //* 功能 :如果寫到AT2C64的數(shù)據(jù)長度大于一個頁,那么下次操作的要等5MS后在進行下次寫操作
15 //*-----------------------------------------------------------------------------
16 void At24c64_WriteAgain (I2Cdesc *I2C_pt){
17 1 unsigned int temp,adr;
18 1 if(eeprom_grid<eeprom_last){
19 2 adr=eeprom_grid;
20 2 eeprom_grid +=EEPROM_PAGE_LEN;
21 2 temp=eeprom_last>eeprom_grid?eeprom_grid:eeprom_last;
22 2 I2CWrite (&I2c,adr,temp-adr);
23 2 }
24 1 else{
25 2 Opsgp.eeprom_write_over=1;/*寫操作完畢*/
26 2 Opsgp.eeprom_read_ok=1;/*可以進行讀操作了*/
27 2 Opsgp.dealing=0;
28 2 Stop_I2c_Timer(); //Cnt Stop
29 2 }
30 1 }
*** WARNING C280 IN LINE 16 OF DRV_AT24C64.C: 'I2C_pt': unreferenced local variable
31 void At24c64_Finish (I2Cdesc *I2C_pt){
32 1 if(I2C_pt->operate==WRITE_BIT){//Call WriteAgain Wait for 5ms
33 2 Start_I2c_Timer(5000); //Modify the duration 5ms
34 2 I2C_pt->I2CTCHandler=At24c64_WriteAgain;
35 2 }
36 1 else{ //Read Finish Post Message
37 2 Opsgp.eeprom_read_over=1;/*讀操作完畢*/
38 2 Opsgp.dealing=0;
39 2 Stop_I2c_Timer(); //Cnt Stop
40 2 }
41 1 }
42 void no_handler_tc(I2Cdesc *I2C_pt) {
43 1 }
*** WARNING C280 IN LINE 42 OF DRV_AT24C64.C: 'I2C_pt': unreferenced local variable
44 void I2CError(I2Cdesc *I2C_pt) {
45 1 I2C_pt->Error=1;
46 1 if(I2c.operate==READ_BIT){
47 2 Opsgp.eeprom_read_over=2;
48 2 Opsgp.dealing=0;
49 2 Stop_I2c_Timer(); //Cnt Stop
50 2 }
51 1 else if(I2c.operate==WRITE_BIT){
52 2 Opsgp.eeprom_write_over=2;
53 2 Opsgp.dealing=0;
C51 COMPILER V7.06 DRV_AT24C64 10/29/2006 14:34:14 PAGE 2
54 2 Stop_I2c_Timer(); //Cnt Stop
55 2 }
56 1
57 1 }
58 /****At24c64 EEProm Driver ***/
59 void At24c64_Init(void){
60 1 I2c.Timer_Gap_ms=5000; //Gap 5 ms for Write Biger Than Page
61 1 I2C_lineOpen (&I2c,100);//100k clk
62 1 I2c.I2cFinish=At24c64_Finish;
63 1 }
64 void At24c64_Read(unsigned char *buf,unsigned int adr,unsigned int len){
65 1 I2c.deviceAddress=DEVICE_AT24C64;
66 1 I2c.RxEnd=buf;
67 1 I2CRead (&I2c,adr,len);
68 1 }
69 void At24c64_Write(unsigned char *buf,unsigned int adr,unsigned int len){
70 1 unsigned int temp;
71 1 eeprom_last=adr+len;
72 1 temp=adr/EEPROM_PAGE_LEN;
73 1 eeprom_grid=(temp+1)*EEPROM_PAGE_LEN;
74 1 temp=eeprom_last>eeprom_grid?eeprom_grid:eeprom_last;
75 1
76 1 I2c.deviceAddress=DEVICE_AT24C64;
77 1 I2c.TxEnd=buf;
78 1 I2CWrite (&I2c,adr,temp-adr);
79 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 545 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 4 29
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -