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