📄 iic24c02.lst
字号:
C51 COMPILER V7.07 IIC24C02 03/10/2006 09:06:42 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE IIC24C02
OBJECT MODULE PLACED IN IIC24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC24c02.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // 对24C02的读、写
2 // extern void DelayMs(unsigned int);
3 // extern void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
4 // extern void Write24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
5 #include "config.h"
6 /***************************************************************************/
7 #define IIC_DEVICE_ADDR_WRITE 0xa0
8 #define IIC_DEVICE_ADDR_READ 0xa1
9
10 /***************************************************************************/
11
12 /***************************************************************************/
13 extern void DelayMs(unsigned int ) ;
14
15 /***************************************************************************/
16 void Start()
17 {
18 1 SDA=1;
19 1 SCL=1;
20 1 SDA=0;
21 1 SCL=0;
22 1 }
23
24 /***************************************************************************/
25 void Stop()
26 {
27 1 SCL=0;
28 1 SDA=0;
29 1 SCL=1;
30 1 SDA=1;
31 1 }
32
33 /***************************************************************************/
34 void Ack()
35 {
36 1 SDA=0;
37 1 SCL=1;
38 1 SCL=0;
39 1 SDA=1;
40 1 }
41
42 /***************************************************************************/
43 void NoAck()
44 {
45 1 SDA=1;
46 1 SCL=1;
47 1 SCL=0;
48 1 }
49
50 /***************************************************************************/
51 BOOL TestAck()
52 {
53 1 BOOL ErrorBOOL;
54 1 SDA=1;
55 1 SCL=1;
C51 COMPILER V7.07 IIC24C02 03/10/2006 09:06:42 PAGE 2
56 1 ErrorBOOL=SDA;
57 1 SCL=0;
58 1 return(ErrorBOOL);
59 1 }
60
61 /***************************************************************************/
62 BOOL Write8BOOL(unsigned char input)
63 {
64 1 unsigned char temp;
65 1 for(temp=8;temp!=0;temp--) {
66 2 SDA=(BOOL)(input&0x80);
67 2 SCL=1;
68 2 SCL=0;
69 2 input=input<<1;
70 2 }
71 1 return TRUE;
72 1 }
73
74 /***************************************************************************/
75 void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number)
76 {
77 1 Start();
78 1 Write8BOOL(IIC_DEVICE_ADDR_WRITE);
79 1 TestAck();
80 1 Write8BOOL(RomAddress);
81 1 TestAck();
82 1 for(;number!=0;number--) {
83 2 Write8BOOL(*Wdata);
84 2 TestAck();
85 2 Wdata++;
86 2 }
87 1 Stop();
88 1 DelayMs(10);
89 1 }
90
91 /***************************************************************************/
92 unsigned char Read8BOOL()
93 {
94 1 unsigned char temp,rbyte=0;
95 1 for(temp=8;temp!=0;temp--) {
96 2 SCL=1;
97 2 rbyte=rbyte<<1;
98 2 rbyte=rbyte|((unsigned char)(SDA));
99 2 SCL=0;
100 2 }
101 1 return(rbyte);
102 1 }
103
104 /***************************************************************************/
105 void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes)
106 {
107 1 //unsigned char temp;,rbyte
108 1 Start();
109 1 Write8BOOL(IIC_DEVICE_ADDR_WRITE);
110 1 TestAck();
111 1 Write8BOOL(RomAddress);
112 1 TestAck();
113 1 Start();
114 1 Write8BOOL(IIC_DEVICE_ADDR_READ);
115 1 TestAck();
116 1 while(bytes!=1) {
117 2 *RamAddress=Read8BOOL();
C51 COMPILER V7.07 IIC24C02 03/10/2006 09:06:42 PAGE 3
118 2 Ack();
119 2 RamAddress++;
120 2 bytes--;
121 2 }
122 1 *RamAddress=Read8BOOL();
123 1 NoAck();
124 1 Stop();
125 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 202 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -