📄 at24c02.lst
字号:
C51 COMPILER V7.06 AT24C02 05/29/2008 00:25:40 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AT24C02
OBJECT MODULE PLACED IN at24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE at24c02.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <AT89X52.H>
3
4 //24c02驱动
5 sbit sclk_ = P1^4; //定义时钟线
6 sbit sdat_ = P1^5; //定义数据线
7
8 //sbit sclk_ = P1^1; //定义时钟线
9 //sbit sdat_ = P1^2; //定义数据线
10
11 // Start condition
12 void ee_start(void)
13 {
14 1 sdat_ = 1;
15 1 sclk_ = 1;
16 1 sclk_ = 1;
17 1 sdat_ = 0;
18 1 sclk_ = 0;
19 1 }
20 // Stop condition
21 void ee_stop(void)
22 {
23 1 sdat_ = 0;
24 1 sclk_ = 1;
25 1 sclk_ = 1;
26 1 sdat_ = 1;
27 1 }
28 // Send byte to AT24C16.
29 // SCL, SDA expected low on entry.
30 // Return with SCL low and C=Ack.
31 bit ee_bout(unsigned char outdat)
32 {
33 1 unsigned char i;
34 1
35 1 for(i = 0; i < 8; i++) {
36 2 outdat <<= 1;
37 2 sdat_ = CY;
38 2 sclk_ = 1; // ** latch bit
39 2 sclk_ = 1;
40 2 sclk_ = 0;
41 2 }
42 1
43 1 sdat_ = 1; // ** release sdat_ for ACK
44 1 sclk_ = 1;
45 1 sclk_ = 1;
46 1 CY = sdat_;
47 1 sclk_ = 0;
48 1 return (CY);
49 1 }
50 // AT24C16 Byte Write Function.
51 // Called with Address in addr, Data in outdat
52 void ee_write(unsigned int addr, unsigned char outdat)
53 {
54 1 unsigned char i;
55 1
C51 COMPILER V7.06 AT24C02 05/29/2008 00:25:40 PAGE 2
56 1 ee_start();
57 1 i = (unsigned char)(addr/256);
58 1 i &= 0x7;
59 1 i <<= 1;
60 1 i |= 0xa0;
61 1 ee_bout(i);
62 1 ee_bout((unsigned char)(addr%256));
63 1 ee_bout(outdat);
64 1 ee_stop();
65 1
66 1 while(1) { // ** wait for internal write cycle complete
67 2 ee_start();
68 2 if(!ee_bout(i)) break;
69 2 }
70 1 }
71 // AT24C16 Random Read Function.
72 // Called with Byte Address in addr
73 unsigned char ee_read(unsigned int addr)
74 {
75 1 unsigned char i, j;
76 1
77 1 ee_start();
78 1 i = (unsigned char)(addr/256);
79 1 i &= 0x7;
80 1 i <<= 1;
81 1 i |= 0xa0;
82 1 ee_bout(i);
83 1 ee_bout((unsigned char)(addr%256));
84 1
85 1 i++;
86 1 ee_start();
87 1 ee_bout(i);
88 1
89 1 sdat_ = 1; // make SDA an input
90 1 for(i = 0; i < 8; i++)
91 1 {
92 2 sclk_ = 1;
93 2 j <<= 1;
94 2 if(sdat_) j |= 0x1;
95 2 sclk_ = 0;
96 2 }
97 1 ee_stop();
98 1 return (j);
99 1 }
100
101 /*
102 void main (void)
103 {
104 ee_write(1,0xaa);
105
106 P2 = ee_read(1) ; // unsigned char ee_read(unsigned int addr)
107
108 while (1);
109 }
110 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 139 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.06 AT24C02 05/29/2008 00:25:40 PAGE 3
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 + -