📄 1602.lst
字号:
C51 COMPILER V7.20 1602 08/02/2007 20:53:59 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\LCD1602\new_clock\App\1602.c INCDIR(E:\子程序\LCD1602\new_clock\Inclu
-de\) DEBUG OBJECTEXTEND PRINT(.\1602.lst) OBJECT(.\1602.obj)
line level source
1 #include"INCLUDE.H"
2 //函数声明
3 void Up_date();
4 void Up_disp();
5 void To_almarray();
6 extern void Song_delay();
7 void Play();
8
9 //定义新旧日期/时间变量
10 struct date new_date,old_date;
11 struct time new_time,old_time,alm_time;
12
13 //定义软件延时计数变量
14 uchar secount=0;
15
16 //定义闹钟开关变量
17 bit on=0;
18 bit K1=1;
19
20 //定义扬声器引脚
21 sbit speaker=P1^0;
22 code uchar menu3[16]="--Made by Zheng@";
23 code uchar menu4[16]="Kunlong &Lorise@";
24 code uchar dispweek[7][4]={"Mon@","Tus@","Wes@","Thu@","Fir@","Sat@","Sun@"};
25 code uchar menu1[16]="1.Time 2.Alarm @";
26 code uchar menu2[16]="3.manufacturer@";
27 code uchar alarm_menu[]="Alarm time@";
28 code uchar onoff[2][4]={"OFF@","ON @"};
29
30 //定义时间、日期显示数组
31 struct disptime disp_time,disp_almtime;
32 struct dispdate disp_date;
33 void time() interrupt 1
34 {
35 1 TH0=0x3c;
36 1 TL0=0xd3;
37 1 secount++;
38 1 if(secount==20)
39 1 {
40 2 secount=0;
41 2 new_time.second++;
42 2 if(new_time.second>=60)
43 2 {
44 3 new_time.second=0;
45 3 new_time.minute++;
46 3 if(new_time.minute>=60)
47 3 {
48 4 new_time.minute=0;
49 4 new_time.hour++;
50 4 if(new_time.hour>=24)
51 4 {
52 5 new_time.hour=0;
53 5 Up_date();
54 5 }
C51 COMPILER V7.20 1602 08/02/2007 20:53:59 PAGE 2
55 4 }
56 3 }
57 2 }
58 1 }
59 /***********************把显示数组的值转换为十进制数值 *************/
60 void To_value()
61 {
62 1 new_date.year=(disp_date.year[0]-'0')*1000+(disp_date.year[1]-'0')*100
63 1 +(disp_date.year[2]-'0')*10+(disp_date.year[3]-'0');
64 1 new_date.month=(disp_date.month[0]-'0')*10+(disp_date.month[1]-'0');
65 1 new_date.day=(disp_date.day[0]-'0')*10+(disp_date.day[1]-'0');
66 1
67 1 new_time.hour=(disp_time.hour[0]-'0')*10+(disp_time.hour[1]-'0');
68 1 new_time.minute=(disp_time.minute[0]-'0')*10+(disp_time.minute[1]-'0');
69 1 new_time.second=(disp_time.second[0]-'0')*10+(disp_time.second[1]-'0');
70 1 }
71 /***********************把十进制的值转换为显示数组数值 *************/
72 void To_almarray()
73 {
74 1 disp_almtime.hour[0]=alm_time.hour/10+'0';
75 1 disp_almtime.hour[1]=alm_time.hour%10+'0';
76 1 disp_almtime.minute[0]=alm_time.minute/10+'0';
77 1 disp_almtime.minute[1]=alm_time.minute%10+'0';
78 1 disp_almtime.second[0]=alm_time.second/10+'0';
79 1 disp_almtime.second[1]=alm_time.second%10+'0';
80 1 }
81 void To_array()
82 {
83 1 disp_date.year[0]=old_date.year/1000+'0';
84 1 disp_date.year[1]=(old_date.year/100)%10+'0';
85 1 disp_date.year[2]=(old_date.year/10)%10+'0';
86 1 disp_date.year[3]=old_date.year%10+'0';
87 1 disp_date.month[0]=old_date.month/10+'0';
88 1 disp_date.month[1]=old_date.month%10+'0';
89 1 disp_date.day[0]=old_date.day/10+'0';
90 1 disp_date.day[1]=old_date.day%10+'0';
91 1
92 1 disp_time.hour[0]=old_time.hour/10+'0';
93 1 disp_time.hour[1]=old_time.hour%10+'0';
94 1 disp_time.minute[0]=old_time.minute/10+'0';
95 1 disp_time.minute[1]=old_time.minute%10+'0';
96 1 disp_time.second[0]=old_time.second/10+'0';
97 1 disp_time.second[1]=old_time.second%10+'0';
98 1 }
99 /***********************日期更新函数************************/
100 void Up_date()
101 {
102 1 new_date.week++;
103 1 if(new_date.week==8)
104 1 new_date.week=1;
105 1 new_date.day++;
106 1 if(new_date.day>=29)
107 1 {
108 2 switch(new_date.month)
109 2 {
110 3 case 2:
111 3 {
112 4 if(new_date.year%4==0&&new_date.year%100!=0||new_date.year%400==0)
113 4 {
114 5 if(new_date.day==30)
115 5 {
116 6 new_date.day=0;
C51 COMPILER V7.20 1602 08/02/2007 20:53:59 PAGE 3
117 6 new_date.month++;
118 6 }
119 5 else
120 5 {
121 6 new_date.day=0;
122 6 new_date.month++;
123 6 }
124 5 }
125 4 break;
126 4 }
127 3 case 1:case 3:case 5:case 7:case 8:case 10:case 12:
128 3 {
129 4 if(new_date.day==32)
130 4 {
131 5 new_date.day=0;
132 5 new_date.month++;
133 5 }
134 4 break;
135 4 }
136 3 case 4:case 6:case 9:case 11:
137 3 {
138 4 if(new_date.day==31)
139 4 {
140 5 new_date.day=0;
141 5 new_date.month++;
142 5 }
143 4 break;
144 4 }
145 3 }
146 2 if(new_date.month==13)
147 2 {
148 3 new_date.month=0;
149 3 new_date.year++;
150 3 }
151 2 if(new_date.year==6000)
152 2 new_date.year=0;
153 2 }
154 1 }
155 /******************更新日期,时间显示函数****************************/
156 void Up_disp()
157 {
158 1 if(new_date.year!=old_date.year||new_date.month!=old_date.month
159 1 ||new_date.day!=old_date.day||new_date.week!=old_date.week)
160 1 {
161 2 old_date.year=new_date.year;
162 2 old_date.month=new_date.month;
163 2 old_date.day=new_date.day;
164 2 old_date.week=new_date.week;
165 2 }
166 1 if(old_time.hour!=new_time.hour||old_time.minute!=new_time.minute||old_time.second!=new_time.second)
167 1 {
168 2 old_time.hour=new_time.hour;
169 2 old_time.minute=new_time.minute;
170 2 old_time.second=new_time.second;
171 2 }
172 1 }
173 //初始化函数
174 void Init()
175 {
176 1 //初始化时间变量
177 1 new_time.second=old_time.second=0;
178 1 new_time.minute=old_time.minute=0;
C51 COMPILER V7.20 1602 08/02/2007 20:53:59 PAGE 4
179 1 new_time.hour=old_time.hour=0;
180 1
181 1 //初始化闹钟时间变量
182 1 alm_time.second=30;
183 1 alm_time.minute=50;
184 1 alm_time.hour=7;
185 1
186 1 //初始化日期变量
187 1 new_date.year=old_date.year=2007;
188 1 new_date.month=old_date.month=5;
189 1 new_date.day=old_date.day=10;
190 1 new_date.week=old_date.week=3;
191 1
192 1 //初始化时间显示数组
193 1 disp_time.hour[2]='@';
194 1 disp_time.minute[2]='@';
195 1 disp_time.second[2]='@';
196 1
197 1 //初始化闹钟时间显示数组
198 1 disp_almtime.hour[2]='@';
199 1 disp_almtime.minute[2]='@';
200 1 disp_almtime.second[2]='@';
201 1
202 1 //初始化日期显示数组
203 1 disp_date.year[4]='@';
204 1 disp_date.month[2]='@';
205 1 disp_date.day[2]='@';
206 1
207 1 To_almarray();
208 1 Init_LCD();
209 1
210 1 TMOD=0x11;
211 1 TH0=0x3c;
212 1 TL0=0xd3;
213 1 IE=0x8a;
214 1 speaker=1;
215 1 TR0=1;
216 1 }
217 main()
218 {
219 1 Init();
220 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1964 ----
CONSTANT SIZE = 112 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 49 37
IDATA SIZE = ---- ----
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 + -