📄 at24c01.lst
字号:
C51 COMPILER V7.00 AT24C01 10/17/2008 18:29:52 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE AT24C01
OBJECT MODULE PLACED IN G:\MFRC500\AT24C01\AT24C01.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE G:\MFRC500\AT24C01\AT24C01.C DB SB OE
stmt level source
1 //=======================================================
2 //24C01存储器I2C总线接口程序(C语言版本)
3 //=======================================================
4 #include "AT24C01.h"
5
6
7
8 //=======================================================
9 //i2c_write(地址,数据),写一个字节
10 //=======================================================
11 unsigned char i2c_write(unsigned char Address,unsigned char Data)
12 {
13 1 i2c_start();
14 1 i2c_send8bit(0xA0);
15 1 if (i2c_ack()) return 1;
16 1
17 1 i2c_send8bit(Address);
18 1 i2c_ack();
19 1
20 1 i2c_send8bit(Data);
21 1 i2c_ack();
22 1
23 1 i2c_stop();
24 1 _nop_();_nop_();_nop_();_nop_();_nop_();
25 1 return 0;
26 1 }
27 //=======================================================
28 //i2c_read(地址,数据),写一个字节
29 //=======================================================
30 unsigned char i2c_read(unsigned char Address)
31 {
32 1 unsigned char c;
33 1
34 1 i2c_start();
35 1 i2c_send8bit(0xA0);
36 1 if (i2c_ack()) return 1; //=1,表示无确认,再次发送
37 1
38 1 i2c_send8bit(Address);
39 1 i2c_ack();
40 1
41 1 i2c_start();
42 1 i2c_send8bit(0xA1);
43 1 if (i2c_ack()) return 1;
44 1
45 1 c=i2c_receive8bit();
46 1 i2c_ack();
47 1
48 1 i2c_stop();
49 1 _nop_();_nop_();_nop_();_nop_();_nop_();
50 1 return(c);
51 1 }
52 //=======================================================
53 //发送开始信号
54 //=======================================================
55 void i2c_start(void)
C51 COMPILER V7.00 AT24C01 10/17/2008 18:29:52 PAGE 2
56 {
57 1 SDA = 1;
58 1 SCL = 1;
59 1 _nop_();_nop_();_nop_();_nop_();_nop_();
60 1
61 1 SDA = 0;
62 1 SCL = 0;
63 1 _nop_();_nop_();_nop_();_nop_();_nop_();
64 1
65 1 return;
66 1 }
67 //========================================================
68 //发送结束信号
69 //========================================================
70 void i2c_stop(void)
71 {
72 1 SDA = 0;
73 1 SCL = 1;
74 1 _nop_();_nop_();_nop_();_nop_();_nop_();
75 1
76 1 SDA = 1;
77 1 _nop_();_nop_();_nop_();_nop_();_nop_();
78 1 return;
79 1 }
80 //========================================================
81 //发送接收确认信号
82 //========================================================
83 bit i2c_ack(void)
84 {
85 1 bit ack;
86 1
87 1 SDA = 1;
88 1 SCL = 1;
89 1 if (SDA==1)
90 1 ack = 1;
91 1 else
92 1 ack = 0;
93 1
94 1 SCL = 0;
95 1 return(ack);
96 1 }
97 //=========================================================
98 //送八位数据
99 //=========================================================
100 void i2c_send8bit(unsigned char b)
101 {
102 1 unsigned char a;
103 1 SCL = 0;
104 1 _nop_();_nop_();_nop_();_nop_();_nop_();
105 1
106 1 for(a=0;a<8;a++)
107 1 {
108 2 SDA = (bit)(b&0x80);
109 2 b<<=1;
110 2 _nop_();_nop_();_nop_();_nop_();_nop_();
111 2
112 2 SCL = 1;
113 2 _nop_();_nop_();_nop_();_nop_();_nop_();
114 2 SCL = 0;
115 2 }
116 1 _nop_();_nop_();_nop_();_nop_();_nop_();
117 1
C51 COMPILER V7.00 AT24C01 10/17/2008 18:29:52 PAGE 3
118 1 return;
119 1 }
120 //=========================================================
121 //接收八位数据
122 //=========================================================
123 unsigned char i2c_receive8bit(void)
124 {
125 1 unsigned char a;
126 1 unsigned char b=0;
127 1
128 1 for(a=0;a<8;a++)
129 1 {
130 2 SCL = 1;
131 2 b=b<<1;
132 2 if (SDA==1)
133 2 b=b|0x01; //按位或
134 2 SCL = 0;
135 2 }
136 1 _nop_();_nop_();_nop_();_nop_();_nop_();
137 1 return (b);
138 1 }
C51 COMPILER V7.00 AT24C01 10/17/2008 18:29:52 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
i2c_ack. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ack. . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
i2c_start. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
i2c_stop . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
RCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
TCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
i2c_receive8bit. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
a. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
b. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
C51 COMPILER V7.00 AT24C01 10/17/2008 18:29:52 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
SDA. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
_i2c_read. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
Address. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
c. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
SCL. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EXEN2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
_i2c_send8bit. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
b. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
a. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
_i2c_write . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
Address. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
Data . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 230 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -