📄 at24c02_8.lst
字号:
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AT24C02_8
OBJECT MODULE PLACED IN AT24C02_8.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil C\C51\BIN\C51.EXE AT24C02_8.c BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMB
-OLS
stmt level source
1 /*-----------------------------*/
2 //File:AT24C02.H的演示程序
3 //Data:2008.6.9//3:48 PM
4 //Version:1.0
5 //Author: Alexi
6 //Code: I love C51~
7
8
9 /*-----------------------------*/
10 #include"REG52.H"
1 =1 /*--------------------------------------------------------------------------
2 =1 REG52.H
3 =1
4 =1 Header file for generic 80C52 and 80C32 microcontroller.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __REG52_H__
10 =1 #define __REG52_H__
11 =1
12 =1 /* BYTE Registers */
13 =1 sfr P0 = 0x80;
14 =1 sfr P1 = 0x90;
15 =1 sfr P2 = 0xA0;
16 =1 sfr P3 = 0xB0;
17 =1 sfr PSW = 0xD0;
18 =1 sfr ACC = 0xE0;
19 =1 sfr B = 0xF0;
20 =1 sfr SP = 0x81;
21 =1 sfr DPL = 0x82;
22 =1 sfr DPH = 0x83;
23 =1 sfr PCON = 0x87;
24 =1 sfr TCON = 0x88;
25 =1 sfr TMOD = 0x89;
26 =1 sfr TL0 = 0x8A;
27 =1 sfr TL1 = 0x8B;
28 =1 sfr TH0 = 0x8C;
29 =1 sfr TH1 = 0x8D;
30 =1 sfr IE = 0xA8;
31 =1 sfr IP = 0xB8;
32 =1 sfr SCON = 0x98;
33 =1 sfr SBUF = 0x99;
34 =1
35 =1 /* 8052 Extensions */
36 =1 sfr T2CON = 0xC8;
37 =1 sfr RCAP2L = 0xCA;
38 =1 sfr RCAP2H = 0xCB;
39 =1 sfr TL2 = 0xCC;
40 =1 sfr TH2 = 0xCD;
41 =1
42 =1
43 =1 /* BIT Registers */
44 =1 /* PSW */
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 2
45 =1 sbit CY = PSW^7;
46 =1 sbit AC = PSW^6;
47 =1 sbit F0 = PSW^5;
48 =1 sbit RS1 = PSW^4;
49 =1 sbit RS0 = PSW^3;
50 =1 sbit OV = PSW^2;
51 =1 sbit P = PSW^0; //8052 only
52 =1
53 =1 /* TCON */
54 =1 sbit TF1 = TCON^7;
55 =1 sbit TR1 = TCON^6;
56 =1 sbit TF0 = TCON^5;
57 =1 sbit TR0 = TCON^4;
58 =1 sbit IE1 = TCON^3;
59 =1 sbit IT1 = TCON^2;
60 =1 sbit IE0 = TCON^1;
61 =1 sbit IT0 = TCON^0;
62 =1
63 =1 /* IE */
64 =1 sbit EA = IE^7;
65 =1 sbit ET2 = IE^5; //8052 only
66 =1 sbit ES = IE^4;
67 =1 sbit ET1 = IE^3;
68 =1 sbit EX1 = IE^2;
69 =1 sbit ET0 = IE^1;
70 =1 sbit EX0 = IE^0;
71 =1
72 =1 /* IP */
73 =1 sbit PT2 = IP^5;
74 =1 sbit PS = IP^4;
75 =1 sbit PT1 = IP^3;
76 =1 sbit PX1 = IP^2;
77 =1 sbit PT0 = IP^1;
78 =1 sbit PX0 = IP^0;
79 =1
80 =1 /* P3 */
81 =1 sbit RD = P3^7;
82 =1 sbit WR = P3^6;
83 =1 sbit T1 = P3^5;
84 =1 sbit T0 = P3^4;
85 =1 sbit INT1 = P3^3;
86 =1 sbit INT0 = P3^2;
87 =1 sbit TXD = P3^1;
88 =1 sbit RXD = P3^0;
89 =1
90 =1 /* SCON */
91 =1 sbit SM0 = SCON^7;
92 =1 sbit SM1 = SCON^6;
93 =1 sbit SM2 = SCON^5;
94 =1 sbit REN = SCON^4;
95 =1 sbit TB8 = SCON^3;
96 =1 sbit RB8 = SCON^2;
97 =1 sbit TI = SCON^1;
98 =1 sbit RI = SCON^0;
99 =1
100 =1 /* P1 */
101 =1 sbit T2EX = P1^1; // 8052 only
102 =1 sbit T2 = P1^0; // 8052 only
103 =1
104 =1 /* T2CON */
105 =1 sbit TF2 = T2CON^7;
106 =1 sbit EXF2 = T2CON^6;
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 3
107 =1 sbit RCLK = T2CON^5;
108 =1 sbit TCLK = T2CON^4;
109 =1 sbit EXEN2 = T2CON^3;
110 =1 sbit TR2 = T2CON^2;
111 =1 sbit C_T2 = T2CON^1;
112 =1 sbit CP_RL2 = T2CON^0;
113 =1
114 =1 #endif
11 #include"AT24C02.H"
1 =1 /*-----------------------------------------*/
2 =1 //File: AT24C2.H
3 =1 //Data: 2008.6.9//3:06 PM
4 =1 //Amend: 08-8-1 19:31
5 =1 //Version: Ver0.2
6 =1 //Thanks: Web
7 =1 //Code: I love C51~
8 =1
9 =1
10 =1
11 =1 /*-----------------------------------------*/
12 =1 #ifndef __AT24C02_H__
13 =1 #define __AT24C02_H__
14 =1
15 =1
16 =1
17 =1 /*-----------------------------------------*/
18 =1 #define unchar unsigned char
19 =1 #define unint unsigned int
20 =1 #define unlong unsigned long
21 =1
22 =1
23 =1
24 =1 /*-----------------------------------------*/
25 =1 #define WriteDeviceAddress 0xa0 //写
26 =1 #define ReadDeviceAddress 0xa1 //读
27 =1 sbit SCL = P2^0; //串行接口定义
28 =1 sbit SDA = P2^1;
29 =1
30 =1
31 =1
32 =1 /*-----------------------------------------*/
33 =1 //函数声明
34 =1 void delay1ms(void); //延时1ms
35 =1 void Start(void); //开始总线
36 =1 void Stop(void); //结束总线
37 =1 void NoAck(void); //发送ACk0
38 =1 bit TestAck(void); //测试ACk
39 =1 void Write8Bit(unchar input); //写入8个Bit 到24C02
40 =1 void Write24C02(unchar ch,unchar address);//写入一个字到24C02中的指定地址中
41 =1 unchar Read8Bit(void); //从24C02中读出8个Bit
42 =1 unchar Read24C02(unchar address); //从24C02指定地址位置中读出1个字节
43 =1
44 =1
45 =1
46 =1 /*-----------------------------------------*/
47 =1 //延时1000us
48 =1 void delay1ms(void)
49 =1 {
50 1 =1 unsigned char i,j,k;
51 1 =1 for(i=5;i>0;i--)
52 1 =1 for(j=28;j>0;j--)
53 1 =1 for(k=2;k>0;k--);
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 4
54 1 =1 }
55 =1
56 =1
57 =1
58 =1 /*-----------------------------------------*/
59 =1 //开始总线
60 =1 void Start(void)
61 =1 {
62 1 =1 SDA=1;
63 1 =1 SCL=1;
64 1 =1 SDA=0;
65 1 =1 SCL=0;
66 1 =1 }
67 =1
68 =1
69 =1
70 =1 /*-----------------------------------------*/
71 =1 //结束总线
72 =1 void Stop(void)
73 =1 {
74 1 =1 SCL=0;
75 1 =1 SDA=0;
76 1 =1 SCL=1;
77 1 =1 SDA=1;
78 1 =1 }
79 =1
80 =1
81 =1
82 =1 /*-----------------------------------------*/
83 =1 //发送ACk0
84 =1 void NoAck(void)
85 =1 {
86 1 =1 SDA=1;
87 1 =1 SCL=1;
88 1 =1 SCL=0;
89 1 =1 }
90 =1
91 =1
92 =1
93 =1 /*-----------------------------------------*/
94 =1 //测试ACk
95 =1 bit TestAck(void)
96 =1 {
97 1 =1 bit ErrorBit;
98 1 =1 SDA=1;
99 1 =1 SCL=1;
100 1 =1 ErrorBit=SDA;
101 1 =1 SCL=0;
102 1 =1 return (ErrorBit);
103 1 =1 }
104 =1
105 =1
106 =1
107 =1 /*-----------------------------------------*/
108 =1 //写入8个Bit 到24C02
109 =1 void Write8Bit(unchar input)
110 =1 {
111 1 =1 unchar temp;
112 1 =1 for(temp=8;temp!=0;temp--)
113 1 =1 {
114 2 =1 SDA=(bit)(input&0x80);
115 2 =1 SCL=1;
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 5
116 2 =1 SCL=0;
117 2 =1 input<<=1;
118 2 =1 }
119 1 =1 }
120 =1
121 =1
122 =1
123 =1 /*-----------------------------------------*/
124 =1 //写入一个字到24C02中的指定地址中
125 =1 void Write24C02(unchar ch,unchar address)
126 =1 {
127 1 =1 Start();
128 1 =1 Write8Bit(WriteDeviceAddress);
129 1 =1 TestAck();
130 1 =1 Write8Bit(address);
131 1 =1 TestAck();
132 1 =1 Write8Bit(ch);
133 1 =1 TestAck();
134 1 =1 Stop();
135 1 =1 delay1ms(); //延迟时间1ms!!!
136 1 =1 }
137 =1
138 =1
139 =1
140 =1 /*-----------------------------------------*/
141 =1 //从24C02中读出8个Bit
142 =1 unchar Read8Bit(void)
143 =1 {
144 1 =1 unchar temp,rbyte=0;
145 1 =1 for(temp=8;temp!=0;temp--)
146 1 =1 {
147 2 =1 SCL=1;
148 2 =1 rbyte<<=1;
149 2 =1 rbyte|=((unchar)(SDA));
150 2 =1 SCL=0;
151 2 =1 }
152 1 =1 return (rbyte);
153 1 =1 }
154 =1
155 =1
156 =1
157 =1 /*-----------------------------------------*/
158 =1 //从24C02指定地址位置中读出1个字节
159 =1 unchar Read24C02(unchar address)
160 =1 {
161 1 =1 unchar ch;
162 1 =1 Start();
163 1 =1 Write8Bit(WriteDeviceAddress);
164 1 =1 TestAck();
165 1 =1 Write8Bit(address);
166 1 =1 TestAck();
167 1 =1 Start();
168 1 =1 Write8Bit(ReadDeviceAddress);
169 1 =1 TestAck();
170 1 =1 ch=Read8Bit();
171 1 =1 NoAck();
172 1 =1 Stop();
173 1 =1 return (ch);
174 1 =1 }
175 =1
176 =1
177 =1
C51 COMPILER V7.06 AT24C02_8 08/01/2008 19:49:45 PAGE 6
178 =1 /*-----------------------------------------*/
179 =1 /*
180 =1 //应用举例
181 =1 void main(void)
182 =1 {
183 =1 unsigned char i;
184 =1 for(i=0;i<256;i++)
185 =1 {
186 =1 Write24C02(i,i);
187 =1 P1=Read24C02(i);
188 =1 delayms(1000);
189 =1 }
190 =1 while(1);
191 =1 }
192 =1 */
193 =1
194 =1
195 =1 /*-----------------------------------------*/
196 =1 #endif
197 =1
198 =1
199 =1
200 =1
201 =1
202 =1
12
13
14
15 /*-----------------------------*/
16 //延时1000000+0us 函数定义
17 void delay1000ms(void)
18 {
19 1 unsigned char i,j,k;
20 1 for(i=23;i>0;i--)
21 1 for(j=235;j>0;j--)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -