📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 04/24/2008 18:07:04 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<1602lcd.h>
3 #include<stdio.h>
4 sbit p17=P1^7;
5 sbit p16=P1^6;
6 sbit p15=P1^5;
7 sbit p14=P1^4;
8 sbit p13=P1^3;
9 int t=0,s=0,min=0,hour=0,day=18,mon=4,year=2008,temp=0;//时间初值
10 int set=0; //设置变量
11 void timer() interrupt 1
12 {
13 1 IT1=0;
14 1 TH0=0X4C;
15 1 TL0=0X00;
16 1 t++;
17 1 IT1=1;
18 1 }
19
20 void zd()interrupt 2
21 {
22 1 EX1 = 0;
23 1 hour++;
24 1 EX1 = 1;
25 1 }
26
27 void delayms(int t)
28 {
29 1 int i;
30 1 while(t--)
31 1 {
32 2 /* 对于11.0592M时钟,约延时1ms */
33 2 for (i=0;i<125;i++)
34 2 {}
35 2 }
36 1 }
37
38 void main()
39 {
40 1 Init_LCD();
41 1 EA=0;
42 1 TMOD=0X01;
43 1 TH0=0X4C;
44 1 TL0=0X00;
45 1 EX1 = 1;
46 1 IT0 = 1;
47 1 ET0=1;
48 1 EA=1;
49 1 TR0=1;
50 1 while(1)
51 1 {
52 2 if(t==20)
53 2 {
54 3 t=0;
55 3 s++;
C51 COMPILER V8.08 MAIN 04/24/2008 18:07:04 PAGE 2
56 3 temp=!temp;
57 3 }
58 2 PutNumXY_LCD(7,1,s,2); //输出秒
59 2 if(s==60) //秒判断
60 2 {
61 3 s=0;
62 3 min++;
63 3
64 3 }
65 2 PutNumXY_LCD(4,1,min,2); //输出分钟
66 2 if(min==60) //时判断
67 2 {
68 3 min=0;
69 3 hour++;
70 3
71 3 }
72 2 PutNumXY_LCD(1,1,hour,2);//输出小时
73 2 if(hour==24) //分判断
74 2 {
75 3 hour=0;
76 3 day++;
77 3 }
78 2 PutNumXY_LCD(9,0,day,2);
79 2 PutStrXY_LCD(3,1,":"); //静态点
80 2 if(temp==0) //动态点
81 2 PutStrXY_LCD(6,1,":");
82 2 else
83 2 PutStrXY_LCD(6,1," ");
84 2 if(mon<=12)
85 2 {
86 3 switch(mon) //输出月份
87 3 {
88 4 case 1 :
89 4 case 3 :
90 4 case 5 :
91 4 case 7 :
92 4 case 8 :
93 4 case 10 :
94 4 case 12 : if(day==31) {day=1;mon++;} PutNumXY_LCD(6,0,mon,2);break;
95 4 case 2 : if (year%4==0 && year%100!=0 || year%400==0)
96 4 { if(day==29) day=1;mon++;}
97 4 else {if(day==28) day=1;mon++;}
98 4 PutNumXY_LCD(6,0,mon,2);break;
99 4 case 4 :
100 4 case 6 :
101 4 case 9 :
102 4 case 11: if(day==30){day=1;mon++;}PutNumXY_LCD(6,0,mon,2);break;
103 4 }
104 3 }
105 2 else {mon=1;year++;}
106 2 PutNumXY_LCD(1,0,year,4);//输出年
107 2 PutStrXY_LCD(5,0," ");
108 2 PutStrXY_LCD(8,0," ");
109 2 PutStrXY_LCD(11,0," ");
110 2 PutStrXY_LCD(9,1," ");
111 2 PutStrXY_LCD(15,1," ");
112 2
113 2 if(p17==0) //停止计时
114 2 {
115 3 TR0=0;
116 3 p17=1;
117 3 }
C51 COMPILER V8.08 MAIN 04/24/2008 18:07:04 PAGE 3
118 2 if(p16==0) //开始计时
119 2 {
120 3 TR0=1;
121 3 p16=1;
122 3 }
123 2 if(TR0==0) PutStrXY_LCD(13,0,"P"); //暂停显示
124 2 else PutStrXY_LCD(13,0," ");
125 2 if(p15==0) //设置选择
126 2 {
127 3 delayms(100);
128 3 if(p15==0)
129 3 set++;
130 3 printf("haha\n");
131 3 }
132 2 if(set==6) set=0 ; //自动清零
133 2 if(set==1) //设置输出
134 2 {
135 3 PutStrXY_LCD(10,1,"S");
136 3 PutStrXY_LCD(11,1,"E");
137 3 PutStrXY_LCD(12,1,"T");
138 3 PutStrXY_LCD(13,1,":");
139 3 PutStrXY_LCD(14,1,"m");
140 3 }
141 2 if(set==2)
142 2 {
143 3 PutStrXY_LCD(10,1,"S");
144 3 PutStrXY_LCD(11,1,"E");
145 3 PutStrXY_LCD(12,1,"T");
146 3 PutStrXY_LCD(13,1,":");
147 3 PutStrXY_LCD(14,1,"h");
148 3 }
149 2 if(set==3)
150 2 {
151 3 PutStrXY_LCD(10,1,"S");
152 3 PutStrXY_LCD(11,1,"E");
153 3 PutStrXY_LCD(12,1,"T");
154 3 PutStrXY_LCD(13,1,":");
155 3 PutStrXY_LCD(14,1,"d");
156 3 }
157 2 if(set==4)
158 2 {
159 3 PutStrXY_LCD(10,1,"S");
160 3 PutStrXY_LCD(11,1,"E");
161 3 PutStrXY_LCD(12,1,"T");
162 3 PutStrXY_LCD(13,1,":");
163 3 PutStrXY_LCD(14,1,"M");
164 3 }
165 2 if(set==5)
166 2 {
167 3 PutStrXY_LCD(10,1,"S");
168 3 PutStrXY_LCD(11,1,"E");
169 3 PutStrXY_LCD(12,1,"T");
170 3 PutStrXY_LCD(13,1,":");
171 3 PutStrXY_LCD(14,1,"y");
172 3 }
173 2
174 2 if(set==0)
175 2 {
176 3 PutStrXY_LCD(10,1,"H");
177 3 PutStrXY_LCD(11,1,"e");
178 3 PutStrXY_LCD(12,1,"l");
179 3 PutStrXY_LCD(13,1,"l");
C51 COMPILER V8.08 MAIN 04/24/2008 18:07:04 PAGE 4
180 3 PutStrXY_LCD(14,1,"o");
181 3 }
182 2
183 2 if(set==1) //设置分钟
184 2 {
185 3 if(p14==0)
186 3 {
187 4 delayms(100);
188 4 if(p14==0)
189 4 min++;
190 4 }
191 3 }
192 2 if(set==2) //设置小时
193 2 {
194 3 if(p14==0)
195 3 {
196 4 delayms(100);
197 4 if(p14==0)
198 4 hour++;
199 4 }
200 3 } //设置天
201 2 if(set==3)
202 2 {
203 3 if(p14==0)
204 3 {
205 4 delayms(100);
206 4 if(p14==0)
207 4 day++;
208 4 }
209 3 }
210 2 if(set==4) //设置月
211 2 {
212 3 if(p14==0)
213 3 {
214 4 delayms(100);
215 4 if(p14==0)
216 4 mon++;
217 4 }
218 3 }
219 2 if(set==5) //设置年
220 2 {
221 3 if(p14==0)
222 3 {
223 4 delayms(100);
224 4 if(p14==0)
225 4 year++;
226 4 }
227 3 }
228 2 }
229 1
230 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1641 ----
CONSTANT SIZE = 36 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 19
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V8.08 MAIN 04/24/2008 18:07:04 PAGE 5
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -