📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN ..\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\App\main.c BROWSE INCDIR(H:\子程序\子程序\LCD1602\new_clock\Include\) DE
-BUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(..\main.obj)
line level source
1
2 #include"include.h"
3
4 //函数声明
5 void Up_date();
6 void Up_disp();
7 void To_almarray();
8 extern void Song_delay();
9 void Play();
10
11 //定义新旧日期/时间变量
12 struct date new_date,old_date;
13 struct time new_time,old_time,alm_time;
14
15 //定义软件延时计数变量
16 uchar secount=0;
17
18 //定义闹钟开关变量
19 bit on=0;
20 bit K1=1;
21
22 //定义扬声器引脚
23 sbit speaker=P1^0;
24 code uchar menu3[16]="--Made by Zheng@";
25 code uchar menu4[16]="Kunlong &Lorise@";
26 code uchar dispweek[7][4]={"Mon@","Tus@","Wes@","Thu@","Fir@","Sat@","Sun@"};
27 code uchar menu1[16]="1.Time 2.Alarm @";
28 code uchar menu2[16]="3.manufacturer@";
29 code uchar alarm_menu[]="Alarm time@";
30 code uchar onoff[2][4]={"OFF@","ON @"};
31
32 //定义时间、日期显示数组
33 struct disptime disp_time,disp_almtime;
34 struct dispdate disp_date;
35
36 //--------------------------------------------------------------------------
37 /******************定义音乐表***************************************/
38 uint code musictab[]={64103,64260,64400,64524,
39 64580,64684,64777,64820,64898,64968,65030,
40 65058,65110,65157,65178,65217,65252,65282};
41
42 /***************************音乐谱***************************************/
43 uchar code songtab[]={0x92,0xa2,0xc6,0xa2,0xc4,0xa2,0x92,0xa2,0xa2,0xa2,
44 0x92,0xa4,0x92,0xa2,0xc6,0xa2,0xc4,0xa2,0x92,0xa2,
45 0x92,0x92,0x72,0x64,0x62,0x72,0x56,0x32,0x54,0x22,
46 0xa2,0xa2,0x92,0x92,0x72,0x74,0x62,0x72,0x56,0x32,
47 0x72,0x92,0x92,0x72,0x9c,0x92,0xa2,0xc6,0xa2,0xc4,
48 0xa2,0x92,0xa2,0xa2,0xa2,0x92,0xa4,0x92,0xa2,0xc6,
49 0xa2,0xc4,0xa2,0x92,0xa2,0x92,0x92,0x72,0x64,0x62,
50 0x72,0x56,0x32,0x54,0x22,0xa2,0xa2,0x92,0x92,0x72,
51 0x74,0x62,0x72,0x66,0xa2,0x92,0x72,0x72,0x62,0x52,
52 0x56,0x02,0x92,0x92,0xa2,0xd2,0xc2,0xc2,0xa2,0xc4,
53 0xa2,0x92,0x22,0xa2,0xa2,0x92,0xa4,0x92,0xa2,0xd2,
54 0xc2,0xc2,0xa2,0xc4,0xa2,0x92,0xa2,0x92,0x72,0x72,
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 2
55 0x64,0x62,0x72,0x56,0x32,0x62,0xa2,0xa2,0x92,0x92,
56 0x72,0x74,0x62,0x72,0x66,0x52,0x64,0xa2,0x92,0x94,
57 0x04,0x72,0x62,0x62,0x74,0x5e,0x04,0x04,0x04,0x04,
58 0x74,0x74,0x74,0x72,0x32,0x3e,0x74,0x74,0x74,0x72,
59 0x92,0x3e,0x66,0x72,0x64,0x74,0x96,0x72,0x68,0x64,
60 0x62,0x72,0x94,0xa4,0x9e,0x00};
61 /******************定义音乐相关变量***************************************/
62 uchar time1,time2,tvar,play_point=0;
63 uchar hcount,lcount;
64
65
66 /***************计时中断程序*******************/
67 void time() interrupt 1
68 {
69 1 TH0=0x3c;
70 1 TL0=0xd3;
71 1 secount++;
72 1 if(secount==20)
73 1 {
74 2 secount=0;
75 2 new_time.second++;
76 2 if(new_time.second>=60)
77 2 {
78 3 new_time.second=0;
79 3 new_time.minute++;
80 3 if(new_time.minute>=60)
81 3 {
82 4 new_time.minute=0;
83 4 new_time.hour++;
84 4 if(new_time.hour>=24)
85 4 {
86 5 new_time.hour=0;
87 5 Up_date();
88 5 }
89 4 }
90 3 }
91 2 }
92 1 if(on&&Get_keynum()==15)
*** WARNING C206 IN LINE 92 OF ..\APP\MAIN.C: 'Get_keynum': missing function-prototype
93 1 K1=0;
94 1 }
95
96
97
98 /******************音乐中断程序****************************/
99 void time_int() interrupt 3
100 {
101 1 speaker=~speaker;
102 1 TH1=hcount;
103 1 TL1=lcount;
104 1 }
105
106
107
108 //初始化函数
109 void Init()
110 {
111 1 //初始化时间变量
112 1 new_time.second=old_time.second=0;
113 1 new_time.minute=old_time.minute=0;
114 1 new_time.hour=old_time.hour=0;
115 1
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 3
116 1 //初始化闹钟时间变量
117 1 alm_time.second=30;
118 1 alm_time.minute=50;
119 1 alm_time.hour=7;
120 1
121 1 //初始化日期变量
122 1 new_date.year=old_date.year=2007;
123 1 new_date.month=old_date.month=5;
124 1 new_date.day=old_date.day=10;
125 1 new_date.week=old_date.week=3;
126 1
127 1 //初始化时间显示数组
128 1 disp_time.hour[2]='@';
129 1 disp_time.minute[2]='@';
130 1 disp_time.second[2]='@';
131 1
132 1 //初始化闹钟时间显示数组
133 1 disp_almtime.hour[2]='@';
134 1 disp_almtime.minute[2]='@';
135 1 disp_almtime.second[2]='@';
136 1
137 1 //初始化日期显示数组
138 1 disp_date.year[4]='@';
139 1 disp_date.month[2]='@';
140 1 disp_date.day[2]='@';
141 1
142 1 To_almarray();
143 1 Init_LCD();
144 1
145 1 TMOD=0x11;
146 1 TH0=0x3c;
147 1 TL0=0xd3;
148 1 IE=0x8a;
149 1 speaker=1;
150 1 TR0=1;
151 1
152 1
153 1 }
154
155 void Disp_menu1()
156 {
157 1 Dis_string(1,1,menu3);
158 1 Dis_string(2,1,menu4);
159 1 }
160
161
162 void Disp_menu()
163 {
164 1 Dis_string(1,1,menu1);
165 1 Dis_string(2,1,menu2);
166 1 }
167 void Dis_date(struct dispdate date1)
168 {
169 1 Dis_string(1,2,date1.year);
170 1 Dis_string(1,6,"/@");
171 1 Dis_string(1,7,date1.month);
172 1 Dis_string(1,9,"/@");
173 1 Dis_string(1,10,date1.day);
174 1 }
175
176
177 void Dis_time(struct disptime time1)
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 4
178 {
179 1 Dis_string(2,3,time1.hour);
180 1 Dis_string(2,5,":@");
181 1 Dis_string(2,6,time1.minute);
182 1 Dis_string(2,8,":@");
183 1 Dis_string(2,9,time1.second);
184 1 }
185
186
187 //显示所有数据
188 void Disp_all()
189 {
190 1 Dis_date(disp_date);
191 1 Dis_string(1,14,dispweek[new_date.week-1]);
192 1 Dis_time(disp_time);
193 1 }
194
195
196 void To_almvalue()
197 {
198 1 alm_time.hour=(disp_almtime.hour[0]-'0')*10+(disp_almtime.hour[1]-'0');
199 1 alm_time.minute=(disp_almtime.minute[0]-'0')*10+(disp_almtime.minute[1]-'0');
200 1 alm_time.second=(disp_almtime.second[0]-'0')*10+(disp_almtime.second[1]-'0');
201 1 }
202
203
204
205 //把显示数组的值转换为十进制数值
206 void To_value()
207 {
208 1 new_date.year=(disp_date.year[0]-'0')*1000+(disp_date.year[1]-'0')*100
209 1 +(disp_date.year[2]-'0')*10+(disp_date.year[3]-'0');
210 1 new_date.month=(disp_date.month[0]-'0')*10+(disp_date.month[1]-'0');
211 1 new_date.day=(disp_date.day[0]-'0')*10+(disp_date.day[1]-'0');
212 1
213 1 new_time.hour=(disp_time.hour[0]-'0')*10+(disp_time.hour[1]-'0');
214 1 new_time.minute=(disp_time.minute[0]-'0')*10+(disp_time.minute[1]-'0');
215 1 new_time.second=(disp_time.second[0]-'0')*10+(disp_time.second[1]-'0');
216 1 }
217
218
219
220 void To_almarray()
221 {
222 1 disp_almtime.hour[0]=alm_time.hour/10+'0';
223 1 disp_almtime.hour[1]=alm_time.hour%10+'0';
224 1 disp_almtime.minute[0]=alm_time.minute/10+'0';
225 1 disp_almtime.minute[1]=alm_time.minute%10+'0';
226 1 disp_almtime.second[0]=alm_time.second/10+'0';
227 1 disp_almtime.second[1]=alm_time.second%10+'0';
228 1 }
229
230 //
231 void To_array()
232 {
233 1 disp_date.year[0]=old_date.year/1000+'0';
234 1 disp_date.year[1]=(old_date.year/100)%10+'0';
235 1 disp_date.year[2]=(old_date.year/10)%10+'0';
236 1 disp_date.year[3]=old_date.year%10+'0';
237 1 disp_date.month[0]=old_date.month/10+'0';
238 1 disp_date.month[1]=old_date.month%10+'0';
239 1 disp_date.day[0]=old_date.day/10+'0';
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 5
240 1 disp_date.day[1]=old_date.day%10+'0';
241 1
242 1 disp_time.hour[0]=old_time.hour/10+'0';
243 1 disp_time.hour[1]=old_time.hour%10+'0';
244 1 disp_time.minute[0]=old_time.minute/10+'0';
245 1 disp_time.minute[1]=old_time.minute%10+'0';
246 1 disp_time.second[0]=old_time.second/10+'0';
247 1 disp_time.second[1]=old_time.second%10+'0';
248 1 }
249
250
251 /***********************日期更新函数************************/
252 void Up_date()
253 {
254 1 new_date.week++;
255 1 if(new_date.week==8)
256 1 new_date.week=1;
257 1 new_date.day++;
258 1 if(new_date.day>=29)
259 1 {
260 2 switch(new_date.month)
261 2 {
262 3 case 2:
263 3 {
264 4 if(new_date.year%4==0&&new_date.year%100!=0||new_date.year%400==0)
265 4 {
266 5 if(new_date.day==30)
267 5 {
268 6 new_date.day=0;
269 6 new_date.month++;
270 6 }
271 5 else
272 5 {
273 6 new_date.day=0;
274 6 new_date.month++;
275 6 }
276 5 }
277 4 break;
278 4 }
279 3 case 1:case 3:case 5:case 7:case 8:case 10:case 12:
280 3 {
281 4 if(new_date.day==32)
282 4 {
283 5 new_date.day=0;
284 5 new_date.month++;
285 5 }
286 4 break;
287 4 }
288 3 case 4:case 6:case 9:case 11:
289 3 {
290 4 if(new_date.day==31)
291 4 {
292 5 new_date.day=0;
293 5 new_date.month++;
294 5 }
295 4 break;
296 4 }
297 3 }
298 2 if(new_date.month==13)
299 2 {
300 3 new_date.month=0;
301 3 new_date.year++;
C51 COMPILER V7.20 MAIN 12/23/2007 20:36:00 PAGE 6
302 3 }
303 2 if(new_date.year==6000)
304 2 new_date.year=0;
305 2 }
306 1 }
307
308
309
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -