📄 24lc32.lst
字号:
C51 COMPILER V7.06 24LC32 01/02/2000 11:14:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 24LC32
OBJECT MODULE PLACED IN 24LC32.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 24LC32.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "24LC32.h"
2 #include "C8051f.h"
3
4 #define WriteDeviceAddress 0xa2
5 #define ReadDeviceAddress 0xa3
6
7 sbit E2P_SCL = P2^3;
8 sbit E2P_SDA = P2^2;
9 sbit E2P_DOG = P3^7;
10
11 static void AT32DelayMs(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 AT32Start()
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 AT32Stop()
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 AT32Ack()
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 AT32NoAck()
51 {
52 1 E2P_SDA = 1;
53 1 E2P_SCL = 1;
54 1 E2P_SCL = 0;
55 1 }
C51 COMPILER V7.06 24LC32 01/02/2000 11:14:26 PAGE 2
56
57 /***************************************************************************/
58 static bit AT32TestAck()
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 AT32Write8Bit(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 AT32Read8Bit()
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 Write24c32(unsigned char *Wdata,unsigned int RomAddress,unsigned char number)
99 {
100 1 unsigned char AddrH;
101 1 unsigned char AddrL;
102 1
103 1 AddrL = (unsigned char)(RomAddress & 0x00ff);
104 1 AddrH = (unsigned char)((RomAddress & 0x0f00) >> 8);
105 1
106 1 AT32Start();
107 1 AT32Write8Bit(WriteDeviceAddress);
108 1 AT32TestAck();
109 1 AT32Write8Bit(AddrH);
110 1 AT32TestAck();
111 1 AT32Write8Bit(AddrL);
112 1 AT32TestAck();
113 1 for( ; number != 0; number--)
114 1 {
115 2 AT32Write8Bit(*Wdata);
116 2 AT32TestAck();
117 2 Wdata++;
C51 COMPILER V7.06 24LC32 01/02/2000 11:14:26 PAGE 3
118 2 }
119 1 AT32Stop();
120 1 AT32DelayMs(10);
121 1 }
122
123 static void Read24c32(unsigned char *RamAddress,unsigned int RomAddress,unsigned char bytes)
124 {
125 1 unsigned char AddrH;
126 1 unsigned char AddrL;
127 1
128 1 AddrL = (unsigned char)(RomAddress & 0x00ff);
129 1 AddrH = (unsigned char)((RomAddress & 0x0f00) >> 8);
130 1
131 1 AT32Start();
132 1 AT32Write8Bit(WriteDeviceAddress);
133 1 AT32TestAck();
134 1 AT32Write8Bit(AddrH);
135 1 AT32TestAck();
136 1 AT32Write8Bit(AddrL);
137 1 AT32TestAck();
138 1 AT32Start();
139 1 AT32Write8Bit(ReadDeviceAddress);
140 1 AT32TestAck();
141 1 while(bytes != 1)
142 1 {
143 2 *RamAddress = AT32Read8Bit();
144 2 AT32Ack();
145 2 RamAddress++;
146 2 bytes--;
147 2 }
148 1 *RamAddress = AT32Read8Bit();
149 1 AT32NoAck();
150 1 AT32Stop();
151 1 }
152
153 void E2PWrite32(unsigned int Addr,unsigned char Val)
154 {
155 1 Write24c32(&Val,Addr,1);
156 1 }
157
158 unsigned char E2PRead32(unsigned int Addr)
159 {
160 1 unsigned char Temp;
161 1 Read24c32(&Temp,Addr,1);
162 1 return(Temp);
163 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 627 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 29 ----
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 + -