📄 lesson9_c.lst
字号:
180 3 g_uc_disp_cnt = 0;
181 3 break;
182 3 case 11:/*B*/
183 3 g_uc_min_cnt ++;
184 3 g_ui_ram_addr ++;
185 3 g_uc_sec_cnt = XBYTE[g_ui_ram_addr];
186 3
187 3 display_led();
188 3 break;
189 3 default:/*k = 0~9*/
190 3
191 3 g_uc_disp_cnt++;
192 3 switch(g_uc_disp_cnt)
193 3 {
194 4 case 1:/*hr high*/
195 4 g_uc_hr_cnt = k <<4;
196 4 g_hr_disp = g_uc_hr_cnt;/*using OR can't mask the hr_low,so hr equal to 0*/
197 4 break;
198 4 case 2:/*hr low*/
199 4 g_uc_hr_cnt += k;
200 4 g_hr_disp = g_uc_hr_cnt;
201 4 break;
202 4 case 3:/*min high*/
203 4 g_uc_min_cnt = k <<4;
204 4 g_min_disp = g_uc_min_cnt;
205 4 break;
206 4 case 4:/*min low*/
207 4 g_uc_min_cnt += k;
208 4 g_min_disp = g_uc_min_cnt;
209 4
210 4 g_ui_ram_addr = g_uc_hr_cnt;
211 4 g_ui_ram_addr = g_ui_ram_addr << 8;
212 4 g_ui_ram_addr += g_uc_min_cnt;
213 4
214 4 g_sec_disp = XBYTE[g_ui_ram_addr];//display the content of thd addr
215 4 break;
216 4 default:
217 4
218 4 break;
219 4 }
220 3 break;
221 3 }
222 2 }
223 1 else/*not release the key; continue wait*/
224 1 {
225 2 delay(2,255);
226 2 goto lab;
227 2 }
228 1
229 1 }
230 /*************************************************/
231 /*
232 name:display_led
233 function:display the number
234 */
235 /*************************************************/
236 void display_led(void)
237 {
238 1 g_sec_disp = g_uc_sec_cnt;
239 1 g_min_disp = g_uc_min_cnt;
240 1 g_hr_disp = g_uc_hr_cnt;
C51 COMPILER V7.50 LESSON9_C 06/15/2006 21:31:47 PAGE 5
241 1 }
242 /*************************************************/
243 /*
244 name:delay
245 function:
246 */
247 /*************************************************/
248 void delay(uchar m, uchar n)
249 {
250 1 unsigned char i, j;
251 1 for(i=0;i<m;i++)
252 1 {
253 2 for(j=0;j<n;j++);
254 2 }
255 1 }
256
257 /*************************************************/
258 /*time0_interrupt*/
259 /*************************************************/
260 /*void time0_interrupt(void) interrupt 1 using 3
261 {
262 TH0 =0x3C ;//重新装入初值15536
263 TL0 =0xB0 ;//100ms=0.1s
264
265 uc_ms_cnt++;
266 if(uc_ms_cnt==10)
267 {
268 uc_ms_cnt = 0;
269 uc_sec_cnt++;
270 if((uc_sec_cnt&0x0F)>9) //变量uc_sec_cnt为16进制数,显示应该为10进制
271 {
272 uc_sec_cnt += 6; //(uc_sec_cnt&0x0F)按位与运算
273 } //若没有if语句,则只能是到9以后,继续数到F才进位
274 display_led();//显示时钟
275
276
277 if((uc_sec_cnt)>=0x60)
278 {
279 uc_sec_cnt = 0;
280 uc_min_cnt++;
281 if((uc_min_cnt&0x0F)>9) //变量uc_min_cnt为16进制数,显示应该为10进制
282 {
283 uc_min_cnt += 6; //(uc_min_cnt&0x0F)按位与运算
284 } //若没有if语句,则只能是到9以后,继续数到F才进位
285 display_led();
286
287 if((uc_sec_cnt)>=0x60)
288 {
289 uc_min_cnt = 0;
290 uc_hr_cnt++;
291
292 if((uc_hr_cnt&0x0F)>9) //变量uc_hr_cnt为16进制数,显示应该为10进制
293 {
294 uc_hr_cnt += 6; //(uc_hr_cnt&0x0F)按位与运算
295 } //若没有if语句,则只能是到9以后,继续数到F才进位
296
297 display_led();
298
299 if((uc_hr_cnt)>=0x24)
300 {
301 uc_hr_cnt = 0;
302 }
C51 COMPILER V7.50 LESSON9_C 06/15/2006 21:31:47 PAGE 6
303 }
304 }
305 }
306 }
307 */
308
309 /*************************************************/
310 /*serial_interrupt*/
311 /*************************************************/
312 void serial_interrupt(void) interrupt 4 using 2
313 {
314 1 EA = 0;
315 1 RI = 0;
316 1
317 1 g_uc_sec_cnt = 0xAA;
318 1 g_uc_min_cnt = 0x9A;
319 1 g_uc_hr_cnt = 0x9F;
320 1 display_led();
321 1
322 1 g_uc_recv_serial_cnt ++;
323 1
324 1 beep = 0;
325 1 delay(30,55);
326 1 beep = 1;
327 1
328 1 if(g_uc_recv_serial_cnt < 11)
329 1 {
330 2 ACC = SBUF;
331 2 XBYTE[g_ui_ram_addr] = ACC;
332 2 g_ui_ram_addr ++;
333 2
334 2 //delay(5,200);
335 2 //delay(5,10);
336 2 //delay(5,0);//添加了延时后,无法在PC上显示出字符
337 2 SBUF = ACC;//back to IBM, check the TI
338 2 }
339 1 else
340 1 {
341 2 ACC = 0x2A;//ASCII 0x21:!
342 2 SBUF = ACC;
343 2 }
344 1
345 1 while(TI == 0)
346 1 {
347 2 delay(3,255);
348 2 }
349 1 TI = 0;
350 1
351 1 EA = 1;
352 1
353 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 442 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.50 LESSON9_C 06/15/2006 21:31:47 PAGE 7
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -