📄 hwi2c.lst
字号:
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE HWI2C
OBJECT MODULE PLACED IN .\Release\HWI2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\lib\HWI2C.C LARGE OPTIMIZE(9,SIZE) BROWSE ORDER MODDP2 INCDIR(..\..\i
-nc\) DEBUG OBJECTEXTEND PRINT(.\Release\HWI2C.lst) OBJECT(.\Release\HWI2C.obj)
line level source
1
2 #include <stdio.h>
3 #include <intrins.h>
4 #include "hpserver.h"
5 #include "hwi2c.h"
6
7 /*400K*/
8 #define EEP_I2C_SPEED 0
9
10 /*100K*/
11 //#define EEP_I2C_SPEED 0x20
12
13 /*50K*/
14 //#define EEP_I2C_SPEED 0x40
15
16 /*200K*/
17
18 //#define EEP_I2C_SPEED 0x60
19 //#define WAIT_LOOP_COUNT (600)
20 #define WAIT_LOOP_COUNT (800)
21
22 //#define I2C2_action //If you want use I2C2,define it.
23
24 xdata unsigned char I2C_CONdata _at_ I2C1_CON ;
25 xdata unsigned char I2C_STAdata _at_ I2C1_STA ;
26 xdata unsigned char I2C_TXdata _at_ I2C1_TX ;
27 xdata unsigned char I2C_RXdata _at_ I2C1_RX ;
28
29 //xdata unsigned char PORTB_EN _at_ 0xfff6;//PBOE;
30 //xdata unsigned char PORTB _at_ 0xfff7;//BREG;
31 unsigned char I2Cspeed=0x60; //speed=200khz
32
33 char c256_bytewrite(unsigned int des_addr,unsigned char wr_data)
34 {
35 1 unsigned char ready,tmp;
36 1 unsigned char addr_L, addr_H;
37 1 unsigned int i=0;
38 1 addr_H = (unsigned char)(des_addr >> 8);
39 1 addr_L = (unsigned char)des_addr ;
40 1
41 1 I2Cspeed=EEP_I2C_SPEED;
42 1 I2C_CONdata=I2Cspeed|0xa;
43 1
44 1 ready=0;
45 1 for (i=0;i<600;i++)
46 1 {
47 2 I2C_CONdata=I2Cspeed|0X13; //Send Start
48 2 I2C_TXdata=0xa0; //eeprom ID
49 2 ready=wait_ack();
50 2 if (ready)
51 2 break;
52 2 }
53 1 if (!ready)
54 1 return 0;
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 2
55 1
56 1 //Send address
57 1 //==Send high byte
58 1 I2C_CONdata=I2Cspeed|0X03;
59 1 I2C_TXdata=addr_H;
60 1 if (!wait_ack())
61 1 return 0;
62 1
63 1 //==Send low byte
64 1 I2C_CONdata=I2Cspeed|0X03;
65 1 I2C_TXdata=addr_L;
66 1 if (!wait_ack())
67 1 return 0;
68 1
69 1 //==Send DATA
70 1 I2C_CONdata=I2Cspeed|0X03;
71 1 I2C_TXdata=wr_data;
72 1 if (!wait_ack())
73 1 return 0;
74 1
75 1 //Send Stop
76 1 I2C_CONdata=I2Cspeed|0X0a;
77 1 if (!wait_stop_ready())
78 1 return 0;
79 1
80 1
81 1 return 1;
82 1 }
*** WARNING C280 IN LINE 35 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
83 char c256_seqwrite(unsigned int des_addr,unsigned char *wr_data,unsigned int len)
84 {
85 1 unsigned int tmp,data_offset;
86 1 unsigned int len_tmp;
87 1 unsigned int start_addr_tmp;
88 1 start_addr_tmp=des_addr;
89 1 len_tmp=len;
90 1 data_offset=0;
91 1
92 1 while (len_tmp>0)
93 1 {
94 2 tmp=64-(start_addr_tmp&0x3f);
95 2 if (len_tmp<tmp)
96 2 tmp=len_tmp;
97 2 if (!c256_pagewrite(start_addr_tmp,&wr_data[data_offset],tmp))
98 2 return 0;
99 2 start_addr_tmp+=tmp;
100 2 len_tmp-=tmp;
101 2 data_offset+=tmp;
102 2 }
103 1 return 1;
104 1 }
105 char c256_pagewrite(unsigned int des_addr,unsigned char *wr_data,unsigned int len)
106 {
107 1 unsigned char ready,tmp;
108 1 unsigned char addr_L, addr_H;
109 1 unsigned int i=0;
110 1
111 1 if (len==0)
112 1 return 0;
113 1
114 1 /*is roll over?*/
115 1 if (((des_addr&0x3f)+(len-1))>64)
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 3
116 1 return 0;
117 1
118 1 addr_H = (unsigned char)(des_addr >> 8);
119 1 addr_L = (unsigned char)des_addr ;
120 1
121 1 I2Cspeed=EEP_I2C_SPEED;
122 1 I2C_CONdata=I2Cspeed|0xa;
123 1
124 1 ready=0;
125 1 for (i=0;i<600;i++)
126 1 {
127 2 I2C_CONdata=I2Cspeed|0X13; //Send Start
128 2 I2C_TXdata=0xa0; //eeprom ID
129 2 ready=wait_ack();
130 2 if (ready)
131 2 break;
132 2 }
133 1 if (!ready)
134 1 return 0;
135 1
136 1 //Send address
137 1 //==Send high byte
138 1 I2C_CONdata=I2Cspeed|0X03;
139 1 I2C_TXdata=addr_H;
140 1 if (!wait_ack())
141 1 return 0;
142 1
143 1 //==Send low byte
144 1 I2C_CONdata=I2Cspeed|0X03;
145 1 I2C_TXdata=addr_L;
146 1 if (!wait_ack())
147 1 return 0;
148 1
149 1 //==Send DATA
150 1 for (i=0;i<len;i++)
151 1 {
152 2 I2C_CONdata=I2Cspeed|0X03;
153 2 I2C_TXdata=wr_data[i];
154 2 if (!wait_ack())
155 2 //printf("\nNo ack");
156 2 return 0;
157 2 }
158 1
159 1 //Send Stop
160 1 I2C_CONdata=I2Cspeed|0X0a;
161 1 if (!wait_stop_ready())
162 1 return 0;
163 1
164 1 return 1;
165 1 }
*** WARNING C280 IN LINE 107 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
166
167
168 char c256_byteread(unsigned int addr)
169 {
170 1 unsigned char addr_L, addr_H;
171 1 unsigned int i=0;
172 1 unsigned char tmp,ready=0,ret_avl=0;
173 1
174 1 I2Cspeed=EEP_I2C_SPEED;
175 1 I2C_CONdata=I2Cspeed|0xa;
176 1 addr_H = (unsigned char)(addr >> 8);
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 4
177 1 addr_L = (unsigned char)addr ;
178 1
179 1 ready=0;
180 1 for (i=0;i<600;i++)
181 1 {
182 2 I2C_CONdata=I2Cspeed|0X13; //Send Start
183 2 I2C_TXdata=0xa0; //eeprom ID
184 2 ready=wait_ack();
185 2 if (ready)
186 2 break;
187 2 }
188 1
189 1 //Send address
190 1
191 1 //==Send high byte
192 1 I2C_CONdata=I2Cspeed|0X03;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -