📄 24c02.lst
字号:
C51 COMPILER V8.02 24C02 03/06/2007 20:21:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 24C02.C DEBUG OBJECTEXTEND
line level source
1
2 //AT24C16读写
3 #include <reg51.h>
4 #include <intrins.h>
5
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 #define READ 0xa1 // 器件地址以及读取操作
10 #define WRITE 0xa0 // 器件地址以及写入操作
11
12 uchar code dis_code[] = {0x70,0xb0,0xd1,0xe0,0xd1,0xb0,0x71,0xf2}; // 写入到AT24C01的数据串
13 uchar code display[8];
14
15 bit ack; //应答标志
16
17 sbit SDA = P3^0;
18 sbit SCL = P3^1;
19
20 void start();
21 void stop();
22 bit WriteByte(uchar write_data);
23 uchar ReadByte(uchar random_addr);
24 void delayms(uchar ms);
25 void WriteStr(uchar sla,uchar StartAddr,uchar *Str,uchar num);
26
27
28 main(void)
29 {
30 1 uchar i;
31 1 delayms(250);
32 1
33 1 WriteStr(0xa0,0x00,dis_code,8);
34 1 for(i=0;i<8;i++)
35 1 {
36 2 P1 = ReadByte(i); // 循环读取24Cxx内容,并输出到P0口
37 2 delayms(250);
38 2 delayms(250);
39 2 }
40 1
41 1 while(1);
42 1 }
43
44
45 // 开始位
46 void start()
47 {
48 1 SDA = 1;
49 1 SCL = 1;
50 1 _nop_();
51 1 _nop_();
52 1 SDA = 0;
53 1 _nop_();
54 1 _nop_();
55 1 _nop_();
C51 COMPILER V8.02 24C02 03/06/2007 20:21:12 PAGE 2
56 1 _nop_();
57 1 SCL = 0;
58 1 }
59
60
61 // 停止位
62 void stop()
63 {
64 1 SDA = 0;
65 1 _nop_();
66 1 _nop_();
67 1 SCL = 1;
68 1 _nop_();
69 1 _nop_();
70 1 _nop_();
71 1 _nop_();
72 1 SDA = 1;
73 1 }
74
75
76 // 从MCU移出数据到AT24Cxx
77 bit WriteByte(uchar write_data)
78 {
79 1 uchar i;
80 1 bit ack_bit;
81 1 for(i = 0; i < 8; i++) // 循环移入8个位
82 1 {
83 2 SDA = (bit)(write_data & 0x80);
84 2 _nop_();
85 2 SCL = 1;
86 2 _nop_();
87 2 _nop_();
88 2 SCL = 0;
89 2 write_data <<= 1;
90 2 }
91 1 SDA = 1; // 读取应答
92 1 _nop_();
93 1 _nop_();
94 1 SCL = 1;
95 1 _nop_();
96 1 _nop_();
97 1 _nop_();
98 1 _nop_();
99 1 ack_bit = SDA;
100 1 SCL = 0;
101 1 return ack_bit; // 返回AT24Cxx应答位
102 1 }
103
104 // 在指定地址读取
105 uchar ReadByte(uchar random_addr)
106 {
107 1 uchar i,read_data;
108 1 start();
109 1 WriteByte(WRITE);
110 1 WriteByte(random_addr);
111 1 start();
112 1 WriteByte(READ);
113 1 for(i = 0; i < 8; i++)
114 1 {
115 2 SCL = 1;
116 2 read_data <<= 1;
117 2 read_data |= (uchar)SDA;
C51 COMPILER V8.02 24C02 03/06/2007 20:21:12 PAGE 3
118 2 SCL = 0;
119 2 }
120 1 stop();
121 1 return read_data;
122 1 }
123
124 // 在指定地址addr开始写入数据write_data
125 void WriteStr(uchar sla,uchar StartAddr, uchar *Str,uchar num)
126 {
127 1 uchar i;
128 1 start();
129 1 WriteByte(sla);
130 1 WriteByte(StartAddr);
131 1
132 1 for(i=0;i<num;i++)
133 1 {
134 2
135 2 WriteByte(*Str);
136 2 Str++;
137 2 }
138 1 stop();
139 1 delayms(10); // 写入周期
140 1 }
141
142 // 延时子程序
143 void delayms(uchar ms)
144 {
145 1 uchar i;
146 1 while(ms--)
147 1 {
148 2 for(i = 0; i < 120; i++);
149 2 }
150 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 233 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -