📄 2402den.lst
字号:
C51 COMPILER V7.50 2402DEN 12/23/2008 15:59:58 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 2402DEN
OBJECT MODULE PLACED IN 2402DEN.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE 2402DEN.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 24C02读写 8路花样跑马灯 *
3 * 将演示数据先写入24C02芯片内,再将其数据逐个读出送P0口LED显示。 *
4 *硬件连接:8路指示灯接P2,24C02控制SDAP3.7 SCLP3.6 *
5 *开机, 跑马灯 为证明2402的作用, 去掉2402连线,则无显示 *
6 ********************************************************************************
7 * 日期: 2008-2-25 *
8 * 版本: 3.0 *
9 * 作者: 深圳志博电子有限公司 专业8051单片机教学站 *
10 * 邮箱: zty0012001@163.com *
11 * 网站: http://www.elecmcu.com http://www.elecmcu.com 更多例程请登陆网站 *
12 ********************************************************************************
13 * 硬件:此程序在本公司志博电子实验仪运行通过 *
14 ********************************************************************************
15 * 【版权】 Copyright(C)深圳志博电子有限公司 www.elecmcu.com All Rights Reserved *
16 * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
17 ********************************************************************************/
18 #include <reg51.h>
19 #include <intrins.h>
20 #define uchar unsigned char
21 #define uint unsigned int
22 #define OP_WRITE 0xa0 // 器件地址以及写入操作
23 #define OP_READ 0xa1 // 器件地址以及读取操作
24 uchar code display[72]={
25 0xF4,0x00,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
26 0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,
27 0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,
28 0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,
29 0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,
30 0x9F,0xCF,0xE7,0xF3,0xF9,0xFC,0xFF,
31 0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,
32 0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF,
33 0xAA,0x55,0x18,0xFF,0xF0,0x0F,
34 0x00,0xFF,0x00,0xFF };
35 sbit SDA = P1^6;
36 sbit SCL = P1^7;
37 void start();
38 void stop();
39 uchar shin();
40 bit shout(uchar write_data);
41 void write_byte( uchar addr, uchar write_data);
42 void fill_byte(uchar fill_size,uchar fill_data);
43 void delayms(uint ms);
44 uchar read_current();
45 uchar read_random(uchar random_addr);
46 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
47 /**********************************************************/
48 main(void)
49 {
50 1 uchar i,b;
51 1 SDA = 1;
52 1 delayNOP();
53 1 SCL = 1;
54 1 delayNOP();
55 1 fill_byte(72,0xff); // 将前72字节填充0xff
C51 COMPILER V7.50 2402DEN 12/23/2008 15:59:58 PAGE 2
56 1
57 1 for(i = 0 ; i < 72; i++) //写入显示代码到AT24C02
58 1 {
59 2 write_byte(i,display[i]);
60 2 }
61 1 while(1)
62 1 {
63 2 for(i =0 ;i <72 ; i++) //从AT24C02移出数据送到P0口显示
64 2 {
65 3 P2 = read_random(i);
66 3 delayms(350);
67 3 }
68 2 }
69 1 }
*** WARNING C280 IN LINE 50 OF 2402DEN.C: 'b': unreferenced local variable
70 /**********************************************************/
71 void start()
72 //开始位
73 {
74 1 delayNOP();
75 1 SDA = 1;
76 1 delayNOP();
77 1 SCL = 1;
78 1 delayNOP();
79 1 delayNOP();
80 1 SDA = 0;
81 1 delayNOP();
82 1 delayNOP();
83 1 SCL = 0;
84 1 delayNOP();
85 1 delayNOP();
86 1 }
87 /**********************************************************/
88 void stop()
89 // 停止位
90 {
91 1 delayNOP();
92 1 SDA = 0;
93 1 delayNOP();
94 1 delayNOP();
95 1 SCL = 1;
96 1 delayNOP();
97 1 delayNOP();
98 1 SDA = 1;
99 1 delayNOP();
100 1 }
101 /**********************************************************/
102 uchar shin()
103 // 从AT24C02移出数据到MCU
104 {
105 1 uchar i,read_data;
106 1 for(i = 0; i < 8; i++)
107 1 {
108 2 delayNOP();
109 2 SCL = 1;
110 2 delayNOP();
111 2 delayNOP();
112 2 read_data <<= 1;
113 2 delayNOP();
114 2 // read_data |= (uchar)SDA;
115 2 read_data |= SDA;
116 2 delayNOP();
C51 COMPILER V7.50 2402DEN 12/23/2008 15:59:58 PAGE 3
117 2 delayNOP();
118 2 SCL = 0;
119 2 delayNOP();
120 2 }
121 1 return(read_data);
122 1 }
123 /**********************************************************/
124 bit shout(uchar write_data)
125 // 从MCU移出数据到AT24C02
126 {
127 1 uchar i;
128 1 bit ack_bit;
129 1 for(i = 0; i < 8; i++) // 循环移入8个位
130 1 {
131 2 delayNOP();
132 2 delayNOP();
133 2 SDA = (bit)(write_data & 0x80);
134 2 delayNOP();
135 2 _nop_();
136 2 delayNOP();
137 2 SCL = 1;
138 2 delayNOP();
139 2 delayNOP();
140 2 SCL = 0;
141 2 delayNOP();
142 2 write_data <<= 1;
143 2 delayNOP();
144 2 }
145 1 SDA = 1; // 读取应答
146 1 delayNOP();
147 1 delayNOP();
148 1 SCL = 1;
149 1 delayNOP();
150 1 delayNOP();
151 1 ack_bit = SDA;
152 1 delayNOP();
153 1 delayNOP();
154 1 SCL = 0;
155 1 delayNOP();
156 1 return ack_bit; // 返回AT24C02应答位
157 1 }
158 /**********************************************************/
159 void write_byte(uchar addr, uchar write_data)
160 // 在指定地址addr处写入数据write_data
161 {
162 1 start();
163 1 shout(OP_WRITE);
164 1 shout(addr);
165 1 shout(write_data);
166 1 stop();
167 1 delayms(10); // 写入周期
168 1 }
169 /**********************************************************/
170 void fill_byte(uchar fill_size,uchar fill_data)
171 // 填充数据fill_data到EEPROM内fill_size字节
172 {
173 1 uchar i;
174 1 for(i = 0; i < fill_size; i++)
175 1 {
176 2 write_byte(i, fill_data);
177 2 }
178 1 }
C51 COMPILER V7.50 2402DEN 12/23/2008 15:59:58 PAGE 4
179 /**********************************************************/
180 uchar read_current()
181 // 在当前地址读取
182 {
183 1 uchar read_data;
184 1 start();
185 1 shout(OP_READ);
186 1 read_data = shin();
187 1 stop();
188 1 return read_data;
189 1 }
190 /**********************************************************/
191 uchar read_random(uchar random_addr)
192 // 在指定地址读取
193 {
194 1 start();
195 1 shout(OP_WRITE);
196 1 shout(random_addr);
197 1 return(read_current());
198 1 }
199 /**********************************************************/
200 void delayms(uint ms)
201 // 延时子程序
202 {
203 1 uchar k;
204 1 while(ms--)
205 1 {
206 2 for(k = 0; k < 120; k++);
207 2 }
208 1 }
209 /**********************************************************/
210
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 396 ----
CONSTANT SIZE = 72 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -