📄 time.lst
字号:
199 2 write_code_E1(column|0x40); //设置列地址
200 2 for(i=N;i<(2*N);i++)
201 2 write_data_E1(p_char[i]);
202 2 }
203 1 else
204 1 {
205 2 write_code_E2(page|0xb8); //设置页地址
206 2 write_code_E2(column|0x40); //设置列地址
207 2 for(i=0;i<N;i++)
208 2 {write_data_E2(p_char[i]);/*P0_0_flash();*/}
209 2 write_code_E2(page+1|0xb8); //设置页地址
210 2 write_code_E2(column|0x40); //设置列地址
211 2 for(i=N;i<(2*N);i++)
212 2 {write_data_E2(p_char[i]);/*P0_7_flash();*/}
213 2 }
214 1 }
215 /*********************************************************************************************************
-*************/
216
217
218 void start(void){ //IIC总线起始条件
219 1 SDA=1;
220 1 SCL=1;
221 1 delay();
222 1 SDA=0;
223 1 delay();
224 1 SCL=0;
225 1 }
226
227 void stop(void){ //IIC总线停止条件
228 1 SDA=0;
229 1 SCL=1;
230 1 delay();
231 1 SDA=1;
232 1 delay();
233 1 SCL=0;
234 1 }
235
236 bit send_byte(uchar da){ //传送字节数据
237 1 data uchar i;
238 1 for(i=0;i<8;i++){
C51 COMPILER V7.50 TIME 03/21/2007 22:26:54 PAGE 5
239 2 SDA=(bit)(da&0x80);
240 2 da=da<<1;
241 2 SCL=1;
242 2 delay();
243 2 SCL=0;
244 2 }
245 1 ;;
246 1 SDA=1; //准备接收ACK位
247 1 ;
248 1 ;
249 1 SCL=1; //开始接收ACK位
250 1 ;
251 1 ;
252 1 flag=0;
253 1 if(SDA==0) flag=0; //ACK(SDA线上是与关系决定电平)
254 1 else flag=1; //No ACK(SDA==1)
255 1 SCL=0; //与上面的SCL=1构成正常的时钟同期
256 1 delay();//加了这一句之后,成功了
257 1 return(flag);
258 1 }
259
260 uchar recieve_byte(void){
261 1 data uchar i;
262 1 uchar da=0;
263 1 SDA=1;
264 1 for(i=0;i<8;i++){
265 2 da*=2;
266 2 ;
267 2 SCL=0;
268 2 delay();
269 2 SCL=1;;;
270 2 if(SDA==1) da++;
271 2 ;;
272 2 }
273 1 SCL=0;
274 1 if(flag1==0){
275 2 SDA=0;
276 2 ;;
277 2 SCL=1;
278 2 delay();
279 2 SCL=0;
280 2 delay();
281 2 }
282 1 else {
283 2 SDA=1;
284 2 ;;
285 2 SCL=1;
286 2 delay();
287 2 SCL=0;
288 2 delay();//加了这一句之后,成功了
289 2 flag1=0;
290 2 }
291 1 return(da);
292 1 }
293
294 void send(){
295 1 data uchar i;
296 1 for(i=0;i<255;i++) delay();
297 1 start();
298 1 if(~send_byte(0xd0)){
299 2 if(~send_byte(0x00)){
300 3 for(i=0;i<8;i++){
C51 COMPILER V7.50 TIME 03/21/2007 22:26:54 PAGE 6
301 4 if(~send_byte(rom_sed[i]));
302 4 else ;
303 4 }
304 3 stop();
305 3 }
306 2 else;
307 2 }
308 1 else;
309 1
310 1 }
311
312
313 void recieve(){
314 1 data uchar i;
315 1 start();
316 1 if(~send_byte(0xd0)){
317 2 if(~send_byte(0x00)){
318 3 delay2();
319 3 start();
320 3 if(~send_byte(0xd1)){
321 4 for(i=1;i<9;i++){
322 5 if(i==8) flag1=1;
323 5 else flag1=0;
324 5 rom_rec[i]=recieve_byte();
325 5 switch(i){
326 6 case 1: rom_rec[i]=rom_rec[i]&0x7f; break;
327 6 case 2: rom_rec[i]=rom_rec[i]&0x7f; break;
328 6 case 3: rom_rec[i]=rom_rec[i]&0x3f; break;
329 6 case 4: rom_rec[i]=rom_rec[i]&0x07; break;
330 6 case 5: rom_rec[i]=rom_rec[i]&0x3f; break;
331 6 case 6: rom_rec[i]=rom_rec[i]&0x1f; break;
332 6 case 7: rom_rec[i]=rom_rec[i]&0xff; break;
333 6 default : break;
334 6 }
335 5 delay();//加了这一句之后,成功了
336 5 delay();//加了这一句之后,成功了
337 5 }
338 4 }
339 3 stop();
340 3 }
341 2 }
342 1 }
343
344
345 void main(){
346 1 init_lcd();
347 1 send();
348 1 while(1){
349 2 clear_lcd();
350 2 write_char_N_16(xian,0x00,00,16);//现
351 2 write_char_N_16(zai,0x00,24,16);//在
352 2 write_char_N_16(shi1,0x00,48,16);// 时
353 2 write_char_N_16(jian,0x00,72,16);//间
354 2 write_char_N_16(maohao,0x00,96,16);//:
355 2
356 2 write_char_N_16(shi2,0x04,16,16);//时
357 2 write_char_N_16(fen,0x04,48,16);//分
358 2 write_char_N_16(miao,0x04,80,16);//秒
359 2
360 2 write_char_N_16(xin,0x06,20,16);//星
361 2 write_char_N_16(qi,0x06,48,16);//期
362 2
C51 COMPILER V7.50 TIME 03/21/2007 22:26:54 PAGE 7
363 2 write_char_N_16(nian,0x02,16,16);//年
364 2 write_char_N_16(yue,0x02,48,16);//月
365 2 write_char_N_16(ri,0x02,80,16);//日
366 2
367 2
368 2 recieve();
369 2 //秒
370 2 write_char_N_16(zhifu[((rom_rec[1]&0x70)>>4)],0x04,64,8);
371 2 write_char_N_16(zhifu[(rom_rec[1]&0x0f)],0x04,72,8);
372 2 //分
373 2 write_char_N_16(zhifu[((rom_rec[2]&0x70)>>4)],0x04,32,8);
374 2 write_char_N_16(zhifu[(rom_rec[2]&0x0f)],0x04,40,8);
375 2 //时
376 2 write_char_N_16(zhifu[((rom_rec[3]&0x70)>>4)],0x04,00,8);
377 2 write_char_N_16(zhifu[(rom_rec[3]&0x0f)],0x04,8,8);
378 2 //日
379 2 write_char_N_16(zhifu[((rom_rec[5]&0x30)>>4)],0x02,64,8);
380 2 write_char_N_16(zhifu[(rom_rec[5]&0x0f)],0x02,72,8);
381 2 //月
382 2 write_char_N_16(zhifu[((rom_rec[6]&0x10)>>4)],0x02,32,8);
383 2 write_char_N_16(zhifu[(rom_rec[6]&0x0f)],0x02,40,8);
384 2 //年
385 2 write_char_N_16(zhifu[((rom_rec[7]&0xf0)>>4)],0x02,00,8);
386 2 write_char_N_16(zhifu[(rom_rec[7]&0x0f)],0x02,8,8);
387 2 //星期
388 2 write_char_N_16(zhifu[(rom_rec[4]&0x07)],0x06,76,8);
389 2 delay2();
390 2 }
391 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1345 ----
CONSTANT SIZE = 576 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = 17 ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -