📄 at24c02.lst
字号:
C51 COMPILER V8.02 AT24C02 03/31/2008 17:24:47 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AT24C02
OBJECT MODULE PLACED IN at24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE at24c02.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "hardware.h"
2
3 /***************************************************************************/
4 #define WriteDeviceAddress 0xa0
5 #define ReadDviceAddress 0xa1
6
7 /***************************************************************************/
8 void delaysmMs(unsigned int number)
9 {
10 1 unsigned char temp;
11 1 for(;number!=0;number--)
12 1 {
13 2 for(temp=112;temp!=0;temp--);
14 2 }
15 1 }
16
17 /***************************************************************************/
18 void Start()
19 {
20 1 I2CSDA=1;
21 1 I2CSCL=1;
22 1 I2CSDA=0;
23 1 I2CSCL=0;
24 1 }
25
26 /***************************************************************************/
27 void Stop()
28 {
29 1 I2CSCL=0;
30 1 I2CSDA=0;
31 1 I2CSCL=1;
32 1 I2CSDA=1;
33 1 }
34
35 /***************************************************************************/
36 void Ack()
37 {
38 1 I2CSDA=0;
39 1 I2CSCL=1;
40 1 I2CSCL=0;
41 1 I2CSDA=1;
42 1 }
43
44 /***************************************************************************/
45 void NoAck()
46 {
47 1 I2CSDA=1;
48 1 I2CSCL=1;
49 1 I2CSCL=0;
50 1 }
51
52 /***************************************************************************/
53 bit TestAck()
54 {
55 1 bit ErrorBit;
C51 COMPILER V8.02 AT24C02 03/31/2008 17:24:47 PAGE 2
56 1 I2CSDA=1;
57 1 I2CSCL=1;
58 1 ErrorBit=I2CSDA;
59 1 I2CSCL=0;
60 1 return(ErrorBit);
61 1 }
62
63 /***************************************************************************/
64 void Write8Bit(unsigned char input)
65 {
66 1 unsigned char temp;
67 1 for(temp=8;temp!=0;temp--)
68 1 {
69 2 I2CSDA=(bit)(input&0x80);
70 2 I2CSCL=1;
71 2 I2CSCL=0;
72 2 input=input<<1;
73 2 }
74 1 }
75
76
77 /**************************写入数据的指针,地址,写入数据的数量****************************************/
78 void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number)
79 {
80 1 Start();
81 1 Write8Bit(WriteDeviceAddress);
82 1 TestAck();
83 1 Write8Bit(RomAddress);
84 1 TestAck();
85 1 for(;number!=0;number--)
86 1 {
87 2 Write8Bit(*Wdata);
88 2 TestAck();
89 2 Wdata++;
90 2 }
91 1 Stop();
92 1 delaysmMs(10);
93 1 }
94
95 /***************************************************************************/
96 unsigned char Read8Bit()
97 {
98 1 unsigned char temp,rbyte=0;
99 1 for(temp=8;temp!=0;temp--)
100 1 {
101 2 I2CSCL=1;
102 2 rbyte=rbyte<<1;
103 2 rbyte=rbyte|((unsigned char)(I2CSDA));
104 2 I2CSCL=0;
105 2 }
106 1 return(rbyte);
107 1 }
108
109 /**************************读出数据的指针,地址,读出数据的数量********************************/
110 void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes)
111 {
112 1 Start();
113 1 Write8Bit(WriteDeviceAddress);
114 1 TestAck();
115 1 Write8Bit(RomAddress);
116 1 TestAck();
117 1 Start();
C51 COMPILER V8.02 AT24C02 03/31/2008 17:24:47 PAGE 3
118 1 Write8Bit(ReadDviceAddress);
119 1 TestAck();
120 1 while(bytes!=1)
121 1 {
122 2 *RamAddress=Read8Bit();
123 2 Ack();
124 2 RamAddress++;
125 2 bytes--;
126 2 }
127 1 *RamAddress=Read8Bit();
128 1 NoAck();
129 1 Stop();
130 1 }
131
132
133
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 217 ----
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 + -