📄 ds1302.lst
字号:
C51 COMPILER V8.02 DS1302 04/09/2007 08:32:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*基于DS1302和LCD1602的万年历*/
2 /*具有光标显示,按键调时功能*/
3 /*作者:田开坤*/
4 /*key0:模式选择*/
5 /*key1:减操作*/
6 /*key2:加操作*/
7 /*key0:返回*/
8 /*2007.04.09*/
9 #include "STC89C51RC.H"
10 #include "LCD1602.h"
11 #include "DS1302.h"
12 #include <absacc.h>
13
14 #define UP 0xff
15 #define DOWN 0x0
16
17 sbit key3 = P3^5;
18 sbit key2 = P3^4;//Up
19 sbit key1 = P3^3;//Down
20 sbit key0 = P3^2;//Modle
21
22 //1302调时函数
23 void data_change(uchar data_name,uchar up_down,uchar max,uchar n)
24 {
25 1 uchar tmp;
26 1 uchar tmp1;
27 1
28 1 tmp1 = Read1302(data_name);
29 1 tmp = ((tmp1>>4)&0x0f)*10 + (tmp1 & 0x0f);
30 1
31 1 if (up_down){
32 2 if(tmp < max){
33 3 tmp+=n;
34 3 tmp1=(((tmp/10)<<4) | (tmp%10));
35 3 Write1302(data_name,tmp1);
36 3 }
37 2 }
38 1 else{
39 2 if(tmp >= n){
40 3 tmp-=n;
41 3 tmp1=(((tmp/10)<<4) | (tmp%10));
42 3 Write1302(data_name,tmp1);
43 3 }
44 2 }
45 1 }
46
47 main()
48 {
49 1 uint loop_count=0;
50 1 uint key0_count=0;
51 1 uint key1_count=0;
52 1 uint key2_count=0;
53 1 uchar modle_flag=0;
54 1 uchar cursor_line=2;
55 1 uchar cursor_conumn=10;
C51 COMPILER V8.02 DS1302 04/09/2007 08:32:31 PAGE 2
56 1 uchar nset_time=1;
57 1
58 1 SYSTEMTIME CurrentTime;
59 1
60 1 LCD_Init();
61 1 Initial_DS1302();
62 1
63 1 LCD_W_Data(1,1,16," ");
64 1 LCD_W_Data(2,1,16," ");
65 1
66 1 LCD_W_Data(1,1,5,"Date:");
67 1 LCD_W_Data(2,1,5,"Time:");
68 1
69 1 while(1){
70 2 if(loop_count++>10000){
71 3 DS1302_GetTime(&CurrentTime);
72 3 DateToStr(&CurrentTime);
73 3 TimeToStr(&CurrentTime);
74 3
75 3 LCD_CURSOR_ONOFF(1);//关闭光标
76 3
77 3 LCD_W_Data(1,6,8,CurrentTime.DateString);
78 3 LCD_W_Data(2,6,8,CurrentTime.TimeString);
79 3
80 3 loop_count = 0;
81 3
82 3 if(nset_time) LCD_CURSOR_ONOFF(1);
83 3 else{
84 4 LCD_CURSOR_ONOFF(2);//显示光标
85 4 LCD_SET_CURSOR(cursor_line,cursor_conumn);
86 4 }
87 3 }
88 2
89 2 if(key0==0) {
90 3 if(key0_count++>25000) {
91 4 nset_time = 0;
92 4 modle_flag++;
93 4 switch(modle_flag) {
94 5 case 1:
95 5 cursor_line = 2;
96 5 cursor_conumn = 10;
97 5 break;
98 5
99 5 case 2:
100 5 cursor_line = 2;
101 5 cursor_conumn = 9;
102 5 break;
103 5 case 3:
104 5 cursor_line = 2;
105 5 cursor_conumn = 7;
106 5 break;
107 5
108 5 case 4:
109 5 cursor_line = 2;
110 5 cursor_conumn = 6;
111 5 break;
112 5 case 5:
113 5 cursor_line = 1;
114 5 cursor_conumn = 13;
115 5 break;
116 5
117 5 case 6:
C51 COMPILER V8.02 DS1302 04/09/2007 08:32:31 PAGE 3
118 5 cursor_line = 1;
119 5 cursor_conumn = 12;
120 5 break;
121 5 case 7:
122 5 cursor_line = 1;
123 5 cursor_conumn = 10;
124 5 break;
125 5
126 5 case 8:
127 5 cursor_line = 1;
128 5 cursor_conumn = 9;
129 5 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -