📄 24c02.lst
字号:
C51 COMPILER V6.12 24C02 07/23/2005 19:26:04 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN E:\C51\P1\24C02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\C51\P1\24C02.C DB SB OE
stmt level source
1 #include <reg51.h>
2
3 // 对24C02的读、写
4 void DelayMs(unsigned int);
5 void delay1ms();
6 void delay(char k);
7 void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
8 void Write24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
9 void Start();
10 void Stop();
11 void Ack();
12 void NoAck();
13 bit TestAck();
14 bit Write8Bit(unsigned char input);
15 unsigned char Read8Bit();
16 /***************************************************************************/
17 #define WriteDeviceAddress 0xae
18 #define ReadDviceAddress 0xaf
19
20 /***************************************************************************/
21 sbit SCL=P3^4;
22 sbit SDA=P3^5;
23 sbit tt=ACC^5;
24 //sbit DOG=P3^7;
25
26 /***************************************************************************/
27
28 void main()
29 {
30 1 int i;
31 1 unsigned char wdata[10],rdata[10],temp,temp1;
32 1 for( i=0;i<10;i++)
33 1 {
34 2
35 2 wdata[i]=i+1;
36 2 }
37 1
38 1 Write24c02(wdata,0x00,10);
39 1
40 1 Read24c02(rdata,0x00,10);
41 1 temp=rdata[0];
42 1 temp1=temp;
43 1 temp=rdata[1];
44 1 temp=rdata[2];
45 1 temp=rdata[3];
46 1 temp=rdata[4];
47 1 while(1)
48 1 {
49 2 temp =10;
50 2 }
51 1 }
52
53 /***************************************************************************/
54 void DelayMs(unsigned int number) {
55 1 unsigned int i;
C51 COMPILER V6.12 24C02 07/23/2005 19:26:04 PAGE 2
56 1 for( i=0;i< number;i++)
57 1 delay1ms();
58 1
59 1 }
60
61 /***************************************************************************/
62 void Start() {
63 1
64 1 SCL=0;
65 1 SDA=1;
66 1 delay(50);
67 1
68 1 tt=1;
69 1 SCL=1;
70 1 SCL=tt;
71 1 delay(50);
72 1 SDA=0;
73 1 delay(50);
74 1 SCL=0;
75 1 //delay(50);
76 1 }
77
78 /***************************************************************************/
79 void Stop() {
80 1
81 1 SCL=0;
82 1 //delay(50);
83 1 SDA=0;
84 1 delay(50);
85 1 tt=1;
86 1 SCL=tt;
87 1 SCL=tt;
88 1 delay(50);
89 1 SDA=1;
90 1 delay(50);
91 1 }
92
93 /***************************************************************************/
94 void Ack() {
95 1 tt=0;
96 1 SDA=tt;
97 1 //delay(50);
98 1 tt=1;
99 1 SCL=1;
100 1
101 1 delay(50);
102 1 SCL=0;
103 1 //delay(50);
104 1 //SDA=1;
105 1 }
106
107 /***************************************************************************/
108 void NoAck() {
109 1 SDA=1;
110 1 delay(50);
111 1 SCL=SDA;
112 1 delay(50);
113 1 SCL=0;
114 1 delay(50);
115 1 }
116
117 /***************************************************************************/
C51 COMPILER V6.12 24C02 07/23/2005 19:26:04 PAGE 3
118 bit TestAck() {
119 1 bit ErrorBit;
120 1 SDA=1;
121 1 SCL=1;
122 1 ErrorBit=SDA;
123 1 SCL=0;
124 1 return(ErrorBit);
125 1 }
126
127 /***************************************************************************/
128 bit Write8Bit(unsigned char input) {
129 1 unsigned char temp;
130 1 for(temp=0;temp<8;temp++) {
131 2
132 2 //SDA=(bit)(input&0x80);
133 2 if( input&0x80)
134 2 SDA=1;
135 2 else SDA=0;
136 2 SCL=1;
137 2 delay(50);
138 2 SCL=0;
139 2 input=0xc0;
140 2 input=input<<1;
141 2 }
142 1 }
*** WARNING C173 IN LINE 142 OF E:\C51\P1\24C02.C: missing return-expression
143
144 /***************************************************************************/
145 void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number) {
146 1 int k;
147 1 k=0;
148 1 Start();
149 1 Write8Bit(WriteDeviceAddress);
150 1 tt=1;
151 1 tt=TestAck();
152 1 Write8Bit(RomAddress);
153 1 tt=TestAck();
154 1 for(;number!=0;number--) {
155 2 Write8Bit(*Wdata);
156 2 tt=TestAck();
157 2 Wdata++;
158 2 }
159 1 Stop();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -