📄 iic.lst
字号:
190 /*==========================================
191 ==========================================*/
192 unsigned char ReadIIC563(unsigned short addr)
193 {
194 1 Byte value;
195 1 CheckRegPage(addr);
196 1 IIC_Start();
197 1 IIC_Tx(SCALER_ADDR);
198 1 IIC_Tx(addr);
199 1 IIC_ReStart();
200 1 IIC_Tx(SCALER_ADDR+1);
201 1 value = IIC_Rx(NACK); //nack
202 1 IIC_Stop();
203 1 return value;
204 1 }
205 /*==========================================
206 ==========================================*/
207 unsigned short ReadWordIIC563(unsigned short addr)
208 {
209 1 Byte temp;
210 1 Word value;
211 1 CheckRegPage(addr);
212 1 IIC_Start();
213 1 IIC_Tx(SCALER_ADDR);
214 1 IIC_Tx(addr);
215 1 IIC_ReStart();
216 1 IIC_Tx(SCALER_ADDR+1);
217 1 temp = IIC_Rx(ACK);
218 1 value = IIC_Rx(NACK); //nack
219 1 value <<= 8;
220 1 value += temp;
221 1 IIC_Stop();
222 1 return value;
223 1 }
224 /*==========================================
225 ==========================================*/
226 void CheckRegPage(unsigned short addr)
227 {
228 1 Byte page;
229 1 IIC_Start();
230 1 IIC_Stop();
231 1 page = (Byte)((addr/256) & 0x003);
232 1 if(page != RegPage)
233 1 {
234 2 RegPage = page;
235 2 WriteIIC(SCALER_ADDR,0xff,RegPage);
236 2 }
237 1 }
238 /*
239 void Write24C16(unsigned short k,unsigned char ch)
240 {
C51 COMPILER V7.06 IIC 12/11/2007 11:28:42 PAGE 5
241 unsigned char device,addr;
242 addr = (unsigned char)k;
243 device = (unsigned char)((k>>7)&0x0e);
244 device |= EEPROM;
245 WriteIIC(device,addr,ch);
246 WaitEEprom();
247 }
248
249 void WaitEEprom(void)
250 {
251 Byte i,ack;
252 for(i=0;i<100;i++) //10ms
253 {
254 IIC_Start();
255 ack = IIC_Tx(0xa0); //polling ACKnowledge
256 IIC_Stop();
257 if(ack == ACK){
258 break;}
259 CLRWDT = 0x55;
260 }
261 }
262 */
263 void WriteIIC_Video(Byte Subaddr,Byte Data)
264 {
265 1 IIC_Start();
266 1 IIC_Tx(0xba);
267 1 IIC_Tx(Subaddr);
268 1 IIC_Tx(Data);
269 1 IIC_Stop();
270 1 }
271 /*==========================================
272 ==========================================*/
273 Byte ReadIIC_Video(Byte Subaddr)
274 {
275 1 Byte value;
276 1 IIC_Start();
277 1 IIC_Tx(0xba);
278 1 IIC_Tx(Subaddr);
279 1 IIC_ReStart();
280 1 IIC_Tx(0xbb);
281 1 value = IIC_Rx(NACK); //nack
282 1 IIC_Stop();
283 1 return value;
284 1 }
285 void WriteWordIIC(unsigned char Device,unsigned short addr,unsigned short value)
286 {
287 1 // CheckRegPage(addr);
288 1 IIC_Start();
289 1 IIC_Tx(Device);
290 1 IIC_Tx((Byte)addr);
291 1 IIC_Tx((Byte)value);
292 1 IIC_Tx((Byte)(value>>8));
293 1 IIC_Stop();
294 1 }
295 unsigned short ReadWordIIC(unsigned char Device, unsigned short addr)
296 {
297 1 Byte temp;
298 1 Word value;
299 1 // CheckRegPage(addr);
300 1 IIC_Start();
301 1 IIC_Tx(Device);
302 1 IIC_Tx((Byte)addr);
C51 COMPILER V7.06 IIC 12/11/2007 11:28:42 PAGE 6
303 1 IIC_ReStart();
304 1 IIC_Tx(Device+1);
305 1 temp = IIC_Rx(ACK);
306 1 value = IIC_Rx(NACK); //nack
307 1 value <<= 8;
308 1 value += temp;
309 1 IIC_Stop();
310 1 return value;
311 1 }
312
313 //==========================================
314 void WriteIIC_By(Byte Addr,Byte Subaddr,Byte Data)
315 {
316 1 IIC_Start();
317 1 IIC_Tx(Addr);
318 1 IIC_Tx(Subaddr);
319 1 IIC_Tx(Data);
320 1 IIC_Stop();
321 1 }
322 Byte ReadIIC_By(Byte Addr,Byte Subaddr)
323 {
324 1 Byte value;
325 1 IIC_Start();
326 1 IIC_Tx(Addr);
327 1 IIC_Tx(Subaddr);
328 1 IIC_ReStart();
329 1 IIC_Tx(Addr+1);
330 1 value = IIC_Rx(NACK); //nack
331 1 IIC_Stop();
332 1 return value;
333 1 }
334 unsigned char Read24C16(unsigned short addr16)
335 {
336 1 Byte ch;
337 1 Byte device,addr;
338 1 addr = addr16 & 0x0ff;
339 1 device = (addr16 >> 7) & 0x0e;
340 1 device |= EEPROM;
341 1 ch = ReadIIC_By(device,addr);
342 1 return ch;
343 1 }
344 void Write24C16(unsigned short k,unsigned char ch)
345 {
346 1 unsigned char device,addr;
347 1 addr = (unsigned char)k;
348 1 device = (unsigned char)((k>>7)&0x0e);
349 1 device |= EEPROM;
350 1 WriteIIC(device,addr,ch);
351 1 // WaitEEprom();
352 1 }
353 void Write7318(Byte Addr,Byte Data)
354 {
355 1 IIC_Start();
356 1 IIC_Tx(Addr);
357 1 // IIC_Tx(Subaddr);
358 1 IIC_Tx(Data);
359 1 IIC_Stop();
360 1 }
361 unsigned char Read24C08(unsigned char addr)
362 {
363 1 unsigned char ch;
364 1 ch = ReadIIC_By(0xa8,addr);
C51 COMPILER V7.06 IIC 12/11/2007 11:28:42 PAGE 7
365 1 return ch;
366 1 }
367 void Write24C08(unsigned char addr,unsigned char ch)
368 {
369 1
370 1 WriteIIC(0xa8,addr,ch);
371 1 // WaitEEprom();
372 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 795 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 15
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -