📄 时钟iic.lst
字号:
C51 COMPILER V8.08 时_覫IC 04/10/2009 11:01:51 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 时_覫IC
OBJECT MODULE PLACED IN 时钟iic.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 时钟iic.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #define unchar unsigned char
4 #define unint unsigned int
5 sbit sda=P1^5;
6 sbit scl=P1^6;
7 sbit dula=P2^0 ;
8 sbit wela=P2^1;
9 unchar code shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
10 unchar code wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
11 unchar hour,minute,second,i;
12 unchar hour1,hour0,minute1,minute0,second1,second0;
13 void delay(void)
14 { unchar a;
15 1 for(a=0;a<10;a++)
16 1 {}
17 1 }
18
19 void start()
20 {
21 1 sda=1;
22 1 delay();
23 1 scl=1;
24 1 delay();
25 1 sda=0;
26 1 delay();
27 1 }
28
29 void stop()
30 {
31 1 sda=0;
32 1 delay();
33 1 scl=1;
34 1 delay();
35 1 sda=1;
36 1 delay();
37 1 }
38
39 void responsion()
40 {
41 1 unchar i=0;
42 1 scl=1;
43 1 delay();
44 1 while((sda==1)&&(i<250))
45 1 i++;
46 1 scl=0;
47 1 delay();
48 1 }
49
50 void write_date(unchar date)
51 {
52 1 unchar i=0,temp=0;
53 1 temp=date;
54 1 for(i=0;i<8;i++)
55 1 {
C51 COMPILER V8.08 时_覫IC 04/10/2009 11:01:51 PAGE 2
56 2 temp=temp<<1;
57 2 scl=0;
58 2 delay();
59 2 sda=CY;
60 2 delay();
61 2 scl=1;
62 2 delay();
63 2 }
64 1 scl=0;
65 1 delay();
66 1 sda=1;
67 1 delay();
68 1 }
69
70 unchar read_date()
71 {
72 1 unchar i,date;
73 1 scl=0;
74 1 delay();
75 1 sda=1;
76 1 delay();
77 1 for(i=0;i<8;i++)
78 1 {
79 2 scl=1;
80 2 delay();
81 2 date=(date<<1)|sda;
82 2 scl=0;
83 2 delay();
84 2 }
85 1 return date;
86 1 }
87
88 void init()
89 {
90 1 sda=1;
91 1 scl=1;
92 1 delay();
93 1 }
94
95 void write_add(unchar address,unchar date)
96 {
97 1 start();
98 1 write_date(0xa0);
99 1 responsion();
100 1 write_date(address);
101 1 responsion();
102 1 write_date(date);
103 1 responsion();
104 1 stop();
105 1 }
106
107 unchar read_add(unchar address)
108 {
109 1 unchar date;
110 1 start();
111 1 write_date(0xa0);
112 1 responsion();
113 1 write_date(address);
114 1 responsion();
115 1 start();
116 1 write_date(0xa1);
117 1 responsion();
C51 COMPILER V8.08 时_覫IC 04/10/2009 11:01:51 PAGE 3
118 1 date=read_date();
119 1 stop();
120 1 return date;
121 1 }
122
123 void delay1(unchar z)
124 {
125 1 unchar x,y;
126 1 for(x=z;x>0;x--)
127 1 for(y=100;y>0;y--);
128 1 }
129
130 void time()
131 {
132 1 if(i>=20)
133 1 {
134 2 i=0;
135 2 second+=1;
136 2 second1=second/10;
137 2 second0=second%10;
138 2 write_add(5,second1);
139 2 delay1(10);
140 2 write_add(6,second0);
141 2 if(second==59)
142 2 {
143 3 second=0;
144 3 minute+=1;
145 3 minute1=0x00+minute/10;
146 3 minute0=0x00+minute%10;
147 3 write_add(3,minute1);
148 3 delay1(10);
149 3 write_add(4,minute0);
150 3 }
151 2 if(minute==59)
152 2 {
153 3 minute =0;
154 3 hour+=1;
155 3 hour1=0x00+hour/10;
156 3 hour0=0x00+hour%10;
157 3 write_add(1,hour1);
158 3 delay1(10);
159 3 write_add(2,hour0);
160 3 }
161 2 if(hour==24)
162 2 hour=0;
163 2 }
164 1 }
165 void display()
166 {
167 1 P0=0x7f;
168 1 wela=1;
169 1 wela=0;
170 1 P0=shu[read_add(1)];
171 1 dula=1;
172 1 dula=0;
173 1 P0=0xff;
174 1 dula=1;
175 1 dula=0;
176 1
177 1 P0= 0xbf;
178 1 wela=1;
179 1 wela=0;
C51 COMPILER V8.08 时_覫IC 04/10/2009 11:01:51 PAGE 4
180 1 P0=shu[read_add(2)];
181 1 dula=1 ;
182 1 dula=0;
183 1 P0=0xff;
184 1 dula=1;
185 1 dula=0;
186 1
187 1 P0=0xdf;
188 1 wela=1;
189 1 wela=0;
190 1 P0=0x40;
191 1 dula=1;
192 1 dula=0;
193 1 P0=0xff;
194 1 dula=1;
195 1 dula=0;
196 1
197 1 P0=0xef;
198 1 wela=1;
199 1 wela=0;
200 1 P0=shu[read_add(3)];
201 1 dula=1;
202 1 dula=0;
203 1 P0=0xff;
204 1 dula=1;
205 1 dula=0;
206 1
207 1 P0=0xf7;
208 1 wela=1;
209 1 wela=0;
210 1 P0=shu[read_add(4)];
211 1 dula=1;
212 1 dula=0;
213 1 P0=0xff;
214 1 dula=1;
215 1 dula=0;
216 1
217 1 P0=0xfb;
218 1 wela=1;
219 1 wela=0;
220 1 P0=0xbf;
221 1 dula=1;
222 1 dula=0;
223 1 P0=0xff;
224 1 dula=1;
225 1 dula=0;
226 1
227 1 P0=0xfd;
228 1 wela=1;
229 1 wela=0;
230 1 P0=shu[read_add(5)];
231 1 dula=1;
232 1 dula=0;
233 1 P0=0x40;
234 1 dula=1;
235 1 dula=0;
236 1
237 1 P0=0xf7;
238 1 wela=1;
239 1 wela=0;
240 1 P0=shu[read_add(6)];
241 1 dula=1;
C51 COMPILER V8.08 时_覫IC 04/10/2009 11:01:51 PAGE 5
242 1 dula=0;
243 1 P0=0xff;
244 1 dula=1;
245 1 dula=0;
246 1
247 1 }
248
249 void memory()
250 {
251 1 second1=read_add(5);
252 1 second0=read_add(6);
253 1 second=second1*10+second0;
254 1 minute1=read_add(3);
255 1 minute0=read_add(4);
256 1 minute=minute1*10+minute0;
257 1 hour1=read_add(1);
258 1 hour0=read_add(2);
259 1 hour=hour1*10+hour0;
260 1 }
261 void main()
262 {
263 1 TMOD=0x01;
264 1 TH0=(65536-50000)/256;
265 1 TL0=(65536-50000)%256;
266 1 EA=1;
267 1 ET0=1;
268 1 TR0=1;
269 1 init();
270 1 memory();
271 1 while(1)
272 1 {
273 2 time();
274 2 display();
275 2 }
276 1 }
277 void timing() interrupt 1
278 {
279 1 TH0=(65536-50000)/256;
280 1 TL0=(65536-50000)%256;
281 1 i++;
282 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 675 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -