📄 lesson5_c.lst
字号:
145 3 case 11:/*B*/
146 3 TH0 = 0x3C;//重新装载数据
147 3 TL0 = 0xB0;
148 3 ET0 = 1;//启动timer0
149 3 TR0 = 1;
150 3 if(uc_disp_cnt == 0)/*取消时钟设置*/
151 3 {
152 4 display_led();/*显示时钟原来的值*/
153 4
154 4 }
155 3 uc_disp_cnt = 7;/*avoid setting incorrectly,the maximal number is 6*/
156 3 break;
157 3
158 3 default:/*k = 0~9*/
159 3
160 3 uc_disp_cnt++;
161 3 switch(uc_disp_cnt)
162 3 {
163 4 case 1:/*hr high*/
164 4 uc_hr_cnt = k <<4;
165 4 g_hr_disp = uc_hr_cnt;/*using OR can't mask the hr_low,so hr equal to 0*/
166 4 break;
167 4 case 2:/*hr low*/
168 4 uc_hr_cnt += k;
169 4 uc_hr_cnt %= 0x24;//adjust the hr
170 4 g_hr_disp = uc_hr_cnt;
171 4 break;
172 4 case 3:/*min high*/
173 4 uc_min_cnt = k <<4;
174 4 g_min_disp = uc_min_cnt;
175 4 break;
176 4 case 4:/*min low*/
177 4 uc_min_cnt += k;
178 4 uc_min_cnt %= 0x60;//adjust the min
C51 COMPILER V7.50 LESSON5_C 06/13/2006 17:10:58 PAGE 4
179 4 g_min_disp = uc_min_cnt;
180 4 break;
181 4 case 5:/*sec high*/
182 4 uc_sec_cnt = k<<4;
183 4 g_sec_disp = uc_sec_cnt;
184 4 break;
185 4 case 6:/*sec low*/
186 4 uc_sec_cnt += k;
187 4 uc_sec_cnt %= 0x60;//adjust the sec
188 4 g_sec_disp = uc_sec_cnt;
189 4
190 4 uc_disp_cnt = 7;/*avoid setting incorrectly*/
191 4 break;
192 4 default:
193 4
194 4 break;
195 4 }
196 3 break;
197 3 }
198 2 }
199 1 else/*not release the key; continue wait*/
200 1 {
201 2 delay();
202 2 goto lab;
203 2 }
204 1
205 1 }
206 /*************************************************/
207 /*
208 name:display_led
209 function:display the number
210 */
211 /*************************************************/
212 void display_led(void)
213 {
214 1 g_sec_disp = uc_sec_cnt;
215 1 g_min_disp = uc_min_cnt;
216 1 g_hr_disp = uc_hr_cnt;
217 1 }
218 /*************************************************/
219 /*
220 name:delay
221 function:
222 */
223 /*************************************************/
224 void delay(void)
225 {
226 1 unsigned char i, j;
227 1 for(i=0;i<2;i++)
228 1 {
229 2 for(j=0;j<255;j++);
230 2 }
231 1 }
232
233 /*************************************************/
234 /*time0_interrupt*/
235 /*************************************************/
236 void time0_interrupt(void) interrupt 1 using 3
237 {
238 1 TH0 =0x3C ;//重新装入初值15536
239 1 TL0 =0xB0 ;//100ms=0.1s
240 1
C51 COMPILER V7.50 LESSON5_C 06/13/2006 17:10:58 PAGE 5
241 1 uc_ms_cnt++;
242 1 if(uc_ms_cnt==10)
243 1 {
244 2 uc_ms_cnt = 0;
245 2 uc_sec_cnt++;
246 2 if((uc_sec_cnt&0x0F)>9) /*变量uc_sec_cnt为16进制数,显示应该为10进制*/
247 2 {
248 3 uc_sec_cnt += 6; /*(uc_sec_cnt&0x0F)按位与运算*/
249 3 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
250 2 display_led();/*显示时钟*/
251 2
252 2
253 2 if((uc_sec_cnt)>=0x60)
254 2 {
255 3 uc_sec_cnt = 0;
256 3 uc_min_cnt++;
257 3 if((uc_min_cnt&0x0F)>9) /*变量uc_min_cnt为16进制数,显示应该为10进制*/
258 3 {
259 4 uc_min_cnt += 6; /*(uc_min_cnt&0x0F)按位与运算*/
260 4 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
261 3 display_led();
262 3
263 3 if((uc_sec_cnt)>=0x60)
264 3 {
265 4 uc_min_cnt = 0;
266 4 uc_hr_cnt++;
267 4
268 4 if((uc_hr_cnt&0x0F)>9) /*变量uc_hr_cnt为16进制数,显示应该为10进制*/
269 4 {
270 5 uc_hr_cnt += 6; /*(uc_hr_cnt&0x0F)按位与运算*/
271 5 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
272 4
273 4 display_led();
274 4
275 4 if((uc_hr_cnt)>=0x24)
276 4 {
277 5 uc_hr_cnt = 0;
278 5 }
279 4 }
280 3 }
281 2 }
282 1 }
283
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 473 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -