📄 rw24c02.lst
字号:
C51 COMPILER V7.20 RW24C02 04/01/2005 12:14:12 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE RW24C02
OBJECT MODULE PLACED IN rw24c02.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE rw24c02.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************
2 AT24c02的读写子程序
3 作者:郑州远博科技 王兴民
4 0371-66949037 0371-67256036 13949105551
5 需要参照24C02的时序图
6 ****************************************************************/
7 #include <config.h>
8
9 //AT24C02 接口定义
10 #define SDA24C02 P3_5
11 #define SDL24C02 P3_4
12 #define WriteDeviceAddress 0xa0 // 24c02写命令字
13 #define ReadDviceAddress 0xa1 // 24c02读命令字
14
15 /************************************************************
16 24c02演示程序,读这段程序需要参考24C02的读写时序图,配套光盘有
17 /*************************************************************/
18 void Start() {
19 1 SDA24C02=1;
20 1 SDL24C02=1;
21 1 SDA24C02=0;
22 1 SDL24C02=0;
23 1 }
24
25 /***************************************************************************/
26 void Stop() {
27 1 SDL24C02=0;
28 1 SDA24C02=0;
29 1 SDL24C02=1;
30 1 SDA24C02=1;
31 1 }
32
33 /***************************************************************************/
34 void Ack() {
35 1 SDA24C02=0;
36 1 SDL24C02=1;
37 1 SDL24C02=0;
38 1 SDA24C02=1;
39 1 }
40
41 /***************************************************************************/
42 void NoAck() {
43 1 SDA24C02=1;
44 1 SDL24C02=1;
45 1 SDL24C02=0;
46 1 }
47
48 /***************************************************************************/
49 bit TestAck() {
50 1 bit ErrorBit;
51 1 SDA24C02=1;
52 1 SDL24C02=1;
53 1 ErrorBit=SDA24C02;
54 1 SDL24C02=0;
55 1 return(ErrorBit);
C51 COMPILER V7.20 RW24C02 04/01/2005 12:14:12 PAGE 2
56 1 }
57
58 /***************************************************************************/
59 void Write8Bit(Uchar input) {
60 1 Uchar temp;
61 1 for(temp=8;temp!=0;temp--) {
62 2 SDA24C02=(bit)(input&0x80);
63 2 SDL24C02=1;
64 2 SDL24C02=0;
65 2 input=input<<1;
66 2 }
67 1 }
68 /***************************************************************************/
69 void Write24c02(Uchar *Wdata,Uchar RomAddress,Uchar number) {
70 1 Start();
71 1 Write8Bit(WriteDeviceAddress);
72 1 TestAck();
73 1 Write8Bit(RomAddress);
74 1 TestAck();
75 1 for(;number!=0;number--) {
76 2 Write8Bit(*Wdata);
77 2 TestAck();
78 2 Wdata++;
79 2 }
80 1 Stop();
81 1 Delayms(10);
82 1 }
83
84 /***************************************************************************/
85 Uchar Read8Bit() {
86 1 Uchar temp,rbyte=0;
87 1 for(temp=8;temp!=0;temp--) {
88 2 SDL24C02=1;
89 2 rbyte=rbyte<<1;
90 2 rbyte=rbyte|((Uchar)(SDA24C02));
91 2 SDL24C02=0;
92 2 }
93 1 return(rbyte);
94 1 }
95
96 /***************************************************************************/
97 void Read24c02(Uchar *RamAddress,Uchar RomAddress,Uchar bytes) {
98 1 //unsigned char temp, rbyte;
99 1 Start();
100 1 Write8Bit(WriteDeviceAddress);
101 1 TestAck();
102 1 Write8Bit(RomAddress);
103 1 TestAck();
104 1 Start();
105 1 Write8Bit(ReadDviceAddress);
106 1 TestAck();
107 1 while(bytes!=1) {
108 2 *RamAddress=Read8Bit();
109 2 Ack();
110 2 RamAddress++;
111 2 bytes--; }
112 1 *RamAddress=Read8Bit();
113 1 NoAck();
114 1 Stop();
115 1 }
C51 COMPILER V7.20 RW24C02 04/01/2005 12:14:12 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 201 ----
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 + -