📄 24c02.lst
字号:
C51 COMPILER V7.50 24C02 12/28/2007 10:53:51 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE 24C02.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3
4 #define OP_READ 0xa1 // 器件地址以及读取操作
5 #define OP_WRITE 0xa0 // 器件地址以及写入操作
6
7 sbit SDA = P3^4;
8 sbit SCL = P3^3;
9 extern void delay(unsigned int ms);
10
11 void start()
12 // 开始位
13 {
14 1 SDA = 1;
15 1 _nop_();
16 1 SCL = 1;
17 1 _nop_();
18 1 _nop_();
19 1 _nop_();
20 1 _nop_();
21 1 _nop_();
22 1 SDA = 0;
23 1 _nop_();
24 1 _nop_();
25 1 _nop_();
26 1 _nop_();
27 1 _nop_();
28 1 SCL = 0;
29 1 _nop_();
30 1 _nop_();
31 1 }
32
33 void stop()
34 // 停止位
35 {
36 1 SDA = 0;
37 1 _nop_();
38 1 _nop_();
39 1 SCL = 1;
40 1 _nop_();
41 1 _nop_();
42 1 _nop_();
43 1 _nop_();
44 1 _nop_();
45 1 SDA = 1;
46 1 _nop_();
47 1 _nop_();
48 1 _nop_();
49 1 _nop_();
50 1 _nop_();
51 1 }
52
53 ////////////////////////////////////////////////////////////////////////
54 // 接收数据从AT24Cxx/////////////////////////
55 unsigned char RcvByte()
C51 COMPILER V7.50 24C02 12/28/2007 10:53:51 PAGE 2
56 {
57 1 unsigned char i,receive_data;
58 1 SDA=1;
59 1 for(i = 0; i < 8; i++)
60 1 {
61 2 _nop_();
62 2 SCL = 0;
63 2 _nop_();
64 2 _nop_();
65 2 _nop_();
66 2 _nop_();
67 2 SCL=1;
68 2 _nop_();
69 2 _nop_();
70 2 receive_data <<= 1;
71 2 receive_data |= (unsigned char)SDA;
72 2 _nop_();
73 2 _nop_();
74 2 }
75 1 SCL=0;
76 1 _nop_();
77 1 _nop_();
78 1 return(receive_data);
79 1 }
80
81 /////////////////////////////////////////////////////////////////////////
82 // 发送write_data数据到AT24Cxx//////////////////////////////////////////////////
83 void SentByte(unsigned char write_data)
84 {
85 1 unsigned char i;
86 1 for(i = 0; i < 8; i++) // 循环移入8个位
87 1 {
88 2 SDA = (bit)(write_data & 0x80);
89 2 _nop_();
90 2 SCL = 1;
91 2 _nop_();
92 2 _nop_();
93 2 _nop_();
94 2 _nop_();
95 2 _nop_();
96 2 SCL = 0;
97 2 write_data <<= 1;
98 2 }
99 1 _nop_();
100 1 SDA = 1; // 读取应答
101 1 _nop_();
102 1 _nop_();
103 1 SCL = 1;
104 1 _nop_();
105 1 _nop_();
106 1 _nop_();
107 1 _nop_();
108 1 // ack=~SDA; // ack=1为应答成功
109 1 SCL = 0;
110 1 _nop_();
111 1 _nop_();
112 1 }
113
114 ///////////////////////////////////////////////////////////////////////
115 // 在指定地址addr处写入数据write_data
116 void write_appoint(unsigned char addr, unsigned char write_data)
117 {
C51 COMPILER V7.50 24C02 12/28/2007 10:53:51 PAGE 3
118 1 start();
119 1 SentByte(OP_WRITE); // 器件地址及写操作
120 1 SentByte(addr);
121 1 SentByte(write_data);
122 1 stop();
123 1 delay(10);
124 1 }
125 ////////////////////////////////////////////////////////////////////////////
126 // 在当前地址读取//////////////////////
127 unsigned char read_current()
128 {
129 1 unsigned char receive_data;
130 1 start();
131 1 SentByte(OP_READ); // 器件地址及读操作
132 1 receive_data = RcvByte();
133 1 stop();
134 1 return receive_data;
135 1 }
136
137
138 ////////////////////////////////////////////////////////////////////////////
139 // 在指定地址读取/////////////////
140 unsigned char read_appoint(unsigned char appoint_addr)
141 {
142 1 start();
143 1 SentByte(OP_WRITE); // 空写操作
144 1 SentByte(appoint_addr);
145 1 return(read_current());
146 1 }
147
148
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 181 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -