📄 24lc02.lst
字号:
C51 COMPILER V7.06 24LC02 01/02/2000 11:14:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 24LC02
OBJECT MODULE PLACED IN 24LC02.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 24LC02.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "24LC02.h"
2 #include "C8051f.h"
3
4 #define WriteDeviceAddress 0xa2
5 #define ReadDviceAddress 0xa3
6
7 sbit E2P_SCL = P2^3;
8 sbit E2P_SDA = P2^2;
9 sbit E2P_DOG = P3^7;
10
11 static void AT02DelayMs(unsigned int number)
12 {
13 1 unsigned char temp;
14 1 for( ; number != 0; number--,E2P_DOG =! E2P_DOG)
15 1 {
16 2 for(temp = 112; temp != 0; temp--)
17 2 {
18 3 }
19 2 }
20 1 }
21
22
23 static void AT02Start()
24 {
25 1 E2P_SDA = 1;
26 1 E2P_SCL = 1;
27 1 E2P_SDA = 0;
28 1 E2P_SCL = 0;
29 1 }
30
31 /***************************************************************************/
32 static void AT02Stop()
33 {
34 1 E2P_SCL = 0;
35 1 E2P_SDA = 0;
36 1 E2P_SCL = 1;
37 1 E2P_SDA = 1;
38 1 }
39
40 /***************************************************************************/
41 static void AT02Ack()
42 {
43 1 E2P_SDA = 0;
44 1 E2P_SCL = 1;
45 1 E2P_SCL = 0;
46 1 E2P_SDA = 1;
47 1 }
48
49 /***************************************************************************/
50 static void AT02NoAck()
51 {
52 1 E2P_SDA = 1;
53 1 E2P_SCL = 1;
54 1 E2P_SCL = 0;
55 1 }
C51 COMPILER V7.06 24LC02 01/02/2000 11:14:26 PAGE 2
56
57 /***************************************************************************/
58 static bit AT02TestAck()
59 {
60 1 bit ErrorBit;
61 1
62 1 E2P_SDA = 1;
63 1 E2P_SCL = 1;
64 1 ErrorBit = E2P_SDA;
65 1 E2P_SCL = 0;
66 1 return(ErrorBit);
67 1 }
68
69 /***************************************************************************/
70 static void AT02Write8Bit(unsigned char input)
71 {
72 1 unsigned char temp;
73 1
74 1 for(temp=8;temp!=0;temp--)
75 1 {
76 2 E2P_SDA = (bit)(input&0x80);
77 2 E2P_SCL = 1;
78 2 E2P_SCL = 0;
79 2 input = input<<1;
80 2 }
81 1 }
82
83 static unsigned char AT02Read8Bit()
84 {
85 1 unsigned char temp;
86 1 unsigned char rbyte = 0;
87 1
88 1 for(temp = 8; temp != 0; temp--)
89 1 {
90 2 E2P_SCL = 1;
91 2 rbyte = rbyte << 1;
92 2 rbyte = rbyte|((unsigned char)(E2P_SDA));
93 2 E2P_SCL = 0;
94 2 }
95 1 return(rbyte);
96 1 }
97
98 static void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number)
99 {
100 1 AT02Start();
101 1 AT02Write8Bit(WriteDeviceAddress);
102 1 AT02TestAck();
103 1 AT02Write8Bit(RomAddress);
104 1 AT02TestAck();
105 1 for( ; number != 0; number--)
106 1 {
107 2 AT02Write8Bit(*Wdata);
108 2 AT02TestAck();
109 2 Wdata++;
110 2 }
111 1 AT02Stop();
112 1 AT02DelayMs(10);
113 1 }
114
115 static void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes)
116 {
117 1 AT02Start();
C51 COMPILER V7.06 24LC02 01/02/2000 11:14:26 PAGE 3
118 1 AT02Write8Bit(WriteDeviceAddress);
119 1 AT02TestAck();
120 1 AT02Write8Bit(RomAddress);
121 1 AT02TestAck();
122 1 AT02Start();
123 1 AT02Write8Bit(ReadDviceAddress);
124 1 AT02TestAck();
125 1 while(bytes != 1)
126 1 {
127 2 *RamAddress = AT02Read8Bit();
128 2 AT02Ack();
129 2 RamAddress++;
130 2 bytes--;
131 2 }
132 1 *RamAddress = AT02Read8Bit();
133 1 AT02NoAck();
134 1 AT02Stop();
135 1 }
136
137 void E2PWrite02(unsigned char Addr,unsigned char Val)
138 {
139 1 Write24c02(&Val,Addr,1);
140 1 }
141
142 unsigned char E2PRead02(unsigned char Addr)
143 {
144 1 unsigned char Temp;
145 1 Read24c02(&Temp,Addr,1);
146 1 return(Temp);
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 513 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 21 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -