📄 hour.src
字号:
;
; void initial(void)
RSEG ?PR?initial?HOUR
initial:
; SOURCE LINE # 205
; {
; SOURCE LINE # 206
; P1_0=FALSE;
; SOURCE LINE # 207
CLR P1_0
; P1_1=FALSE;
; SOURCE LINE # 208
CLR P1_1
; P1_2=FALSE;
; SOURCE LINE # 209
CLR P1_2
; P1_3=FALSE; //键盘驱动信号都设为低,避免干扰。
; SOURCE LINE # 210
CLR P1_3
; P0_0=TRUE; //发光二极管设为不亮
; SOURCE LINE # 211
SETB P0_0
; P0_1=TRUE; //蜂鸣器不响
; SOURCE LINE # 212
SETB P0_1
; }
; SOURCE LINE # 213
RET
; END OF initial
;
; void delay(short i) //延迟子程序,为精确计时,需要用汇编语言来做。R6R7刚好存的是i的值
RSEG ?PR?_delay?HOUR
L?0081:
USING 0
L?0082:
CLR P0_1
L?0083:
MOV R7,#03H
MOV R6,#00H
_delay:
; SOURCE LINE # 215
;---- Variable 'i?242' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 216
; short ii;
; ii=i;
; SOURCE LINE # 218
MOV ii?243,R6
MOV ii?243+01H,R7
; #pragma asm
; X_delay:
X_delay:
; USING 0
USING 0
; CLR A
CLR A
; MOV R4,A
MOV R4,A
; MOV R5,A
MOV R5,A
; XC0025:
XC0025:
; CLR C
CLR C
; MOV A,R5
MOV A,R5
; SUBB A,R7
SUBB A,R7
; MOV A,R6
MOV A,R6
; XRL A,#080H
XRL A,#080H
; MOV R0,A
MOV R0,A
; MOV A,R4
MOV A,R4
; XRL A,#080H
XRL A,#080H
; SUBB A,R0
SUBB A,R0
; JNC XC0028
JNC XC0028
; INC R5
INC R5
; CJNE R5,#00H,XC0069
CJNE R5,#00H,XC0069
; INC R4
INC R4
; XC0069:
XC0069:
; SJMP XC0025
SJMP XC0025
; XC0028:
XC0028:
; #pragma endasm
; }
; SOURCE LINE # 243
RET
; END OF _delay
;
; void display(unsigned char i,unsigned char num)
RSEG ?PR?_display?HOUR
_display:
; SOURCE LINE # 245
;---- Variable 'num?345' assigned to Register 'R5' ----
;---- Variable 'i?344' assigned to Register 'R7' ----
; {
; SOURCE LINE # 246
; if(num >= 0 && num <=9)
; SOURCE LINE # 247
MOV A,R5
CLR C
SUBB A,#00H
JC ?C0046
MOV A,R5
SETB C
SUBB A,#09H
JNC ?C0046
; {switch(i)
; SOURCE LINE # 248
MOV A,R7
DEC A
JZ ?C0040
DEC A
JZ ?C0041
DEC A
JZ ?C0042
DEC A
JZ ?C0043
DEC A
JZ ?C0044
ADD A,#05H
JNZ ?C0046
; { case 0:P2= LedSelect0 | num;
; SOURCE LINE # 249
?C0039:
MOV A,R5
ORL A,#080H
MOV P2,A
; //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 251
RET
; case 1:P2= LedSelect1 | num;
; SOURCE LINE # 252
?C0040:
MOV A,R5
ORL A,#090H
MOV P2,A
; //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 254
RET
; case 2:P2= LedSelect2 | num;
; SOURCE LINE # 255
?C0041:
MOV A,R5
ORL A,#0A0H
MOV P2,A
; //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 257
RET
; case 3:P2= LedSelect3 | num;
; SOURCE LINE # 258
?C0042:
MOV A,R5
ORL A,#0B0H
MOV P2,A
; //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 260
RET
; case 4:P2= LedSelect4 | num;
; SOURCE LINE # 261
?C0043:
MOV A,R5
ORL A,#0C0H
MOV P2,A
; //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 263
RET
; case 5:P2= LedSelect5 | num;
; SOURCE LINE # 264
?C0044:
MOV A,R5
ORL A,#0D0H
MOV P2,A
; //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 266
; default:break;
; SOURCE LINE # 267
; }
; SOURCE LINE # 268
; }
; SOURCE LINE # 269
; }
; SOURCE LINE # 270
?C0046:
RET
; END OF _display
;
; unsigned char keyscan()
RSEG ?PR?keyscan?HOUR
keyscan:
USING 0
; SOURCE LINE # 272
; {
; SOURCE LINE # 273
; PinDrvKey1=TRUE;
; SOURCE LINE # 274
SETB P1_0
; if(PinScanKey1==TRUE)
; SOURCE LINE # 275
JNB P1_4,?C0047
; PinLamp=FALSE;
; SOURCE LINE # 276
CLR P0_0
?C0047:
; PinSpeaker=FALSE;
; SOURCE LINE # 277
; delay(DELAY_VALUE);
; SOURCE LINE # 278
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 279
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 280
SETB P0_1
; return 1;
; SOURCE LINE # 281
MOV R7,#01H
RET
; if(PinScanKey2==TRUE)
; SOURCE LINE # 282
; PinLamp=FALSE;
; SOURCE LINE # 283
?C0049:
; PinSpeaker=FALSE;
; SOURCE LINE # 284
; delay(DELAY_VALUE);
; SOURCE LINE # 285
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 286
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 287
SETB P0_1
; return 5;
; SOURCE LINE # 288
MOV R7,#05H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 289
; PinLamp=FALSE;
; SOURCE LINE # 290
?C0050:
; PinSpeaker=FALSE;
; SOURCE LINE # 291
; delay(DELAY_VALUE);
; SOURCE LINE # 292
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 293
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 294
SETB P0_1
; return 9;
; SOURCE LINE # 295
MOV R7,#09H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 296
; PinLamp=FALSE;
; SOURCE LINE # 297
?C0051:
; PinSpeaker=FALSE;
; SOURCE LINE # 298
; delay(DELAY_VALUE);
; SOURCE LINE # 299
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 300
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 301
SETB P0_1
; return 12;
; SOURCE LINE # 302
MOV R7,#0CH
RET
; PinDrvKey1=FALSE; //扫描第一列
; SOURCE LINE # 303
; PinDrvKey2=TRUE;
; SOURCE LINE # 304
; if(PinScanKey1==TRUE)
; SOURCE LINE # 305
; PinLamp=FALSE;
; SOURCE LINE # 306
?C0052:
; PinSpeaker=FALSE;
; SOURCE LINE # 307
; delay(DELAY_VALUE);
; SOURCE LINE # 308
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 309
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 310
SETB P0_1
; return 2;
; SOURCE LINE # 311
DEC R7
RET
; if(PinScanKey2==TRUE)
; SOURCE LINE # 312
; PinLamp=FALSE;
; SOURCE LINE # 313
?C0053:
; PinSpeaker=FALSE;
; SOURCE LINE # 314
; delay(DELAY_VALUE);
; SOURCE LINE # 315
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 316
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 317
SETB P0_1
; return 6;
; SOURCE LINE # 318
MOV R7,#06H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 319
; PinLamp=FALSE;
; SOURCE LINE # 320
?C0054:
; PinSpeaker=FALSE;
; SOURCE LINE # 321
; delay(DELAY_VALUE);
; SOURCE LINE # 322
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 323
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 324
SETB P0_1
; return 0;
; SOURCE LINE # 325
MOV R7,#00H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 326
; PinLamp=FALSE;
; SOURCE LINE # 327
?C0055:
; PinSpeaker=FALSE;
; SOURCE LINE # 328
; delay(DELAY_VALUE);
; SOURCE LINE # 329
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 330
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 331
SETB P0_1
; return 13;
; SOURCE LINE # 332
MOV R7,#0DH
RET
; PinDrvKey2=FALSE; //扫描第二列
; SOURCE LINE # 333
; PinDrvKey3=TRUE;
; SOURCE LINE # 334
; if(PinScanKey1==TRUE)
; SOURCE LINE # 335
; PinLamp=FALSE;
; SOURCE LINE # 336
?C0056:
; PinSpeaker=FALSE;
; SOURCE LINE # 337
; delay(DELAY_VALUE);
; SOURCE LINE # 338
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 339
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 340
SETB P0_1
; return 3;
; SOURCE LINE # 341
RET
; if(PinScanKey2==TRUE)
; SOURCE LINE # 342
; PinLamp=FALSE;
; SOURCE LINE # 343
?C0057:
; PinSpeaker=FALSE;
; SOURCE LINE # 344
; delay(DELAY_VALUE);
; SOURCE LINE # 345
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 346
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 347
SETB P0_1
; return 7;
; SOURCE LINE # 348
MOV R7,#07H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 349
; PinLamp=FALSE;
; SOURCE LINE # 350
?C0058:
; PinSpeaker=FALSE;
; SOURCE LINE # 351
; delay(DELAY_VALUE);
; SOURCE LINE # 352
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 353
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 354
SETB P0_1
; return 10;
; SOURCE LINE # 355
MOV R7,#0AH
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 356
; PinLamp=FALSE;
; SOURCE LINE # 357
?C0059:
; PinSpeaker=FALSE;
; SOURCE LINE # 358
; delay(DELAY_VALUE);
; SOURCE LINE # 359
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 360
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 361
SETB P0_1
; return 14;
; SOURCE LINE # 362
MOV R7,#0EH
RET
; PinDrvKey3=FALSE; //扫描第三列
; SOURCE LINE # 363
; PinDrvKey4=TRUE;
; SOURCE LINE # 364
; if(PinScanKey1==TRUE)
; SOURCE LINE # 365
; PinLamp=FALSE;
; SOURCE LINE # 366
?C0060:
; PinSpeaker=FALSE;
; SOURCE LINE # 367
; delay(DELAY_VALUE);
; SOURCE LINE # 368
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 369
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 370
SETB P0_1
; return 4;
; SOURCE LINE # 371
INC R7
RET
; if(PinScanKey2==TRUE)
; SOURCE LINE # 372
; PinLamp=FALSE;
; SOURCE LINE # 373
?C0061:
; PinSpeaker=FALSE;
; SOURCE LINE # 374
; delay(DELAY_VALUE);
; SOURCE LINE # 375
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 376
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 377
SETB P0_1
; return 8;
; SOURCE LINE # 378
MOV R7,#08H
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 379
; PinLamp=FALSE;
; SOURCE LINE # 380
?C0062:
; PinSpeaker=FALSE;
; SOURCE LINE # 381
; delay(DELAY_VALUE);
; SOURCE LINE # 382
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 383
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 384
SETB P0_1
; return 11;
; SOURCE LINE # 385
MOV R7,#0BH
RET
; if(PinScanKey1==TRUE)
; SOURCE LINE # 386
; PinLamp=FALSE;
; SOURCE LINE # 387
?C0063:
; PinSpeaker=FALSE;
; SOURCE LINE # 388
; delay(DELAY_VALUE);
; SOURCE LINE # 389
LCALL L?0082
; PinLamp=TRUE;
; SOURCE LINE # 390
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 391
SETB P0_1
; return 15;
; SOURCE LINE # 392
MOV R7,#0FH
; PinDrvKey3=FALSE; //扫描第四列
; SOURCE LINE # 393
; return 16;
; SOURCE LINE # 394
; }
; SOURCE LINE # 395
?C0048:
RET
; END OF keyscan
;
; void updatee()
RSEG ?PR?updatee?HOUR
updatee:
USING 0
; SOURCE LINE # 397
; {
; SOURCE LINE # 398
; if(s0==9) //如果10ms位需要进位,则进入语句
; SOURCE LINE # 399
MOV A,s0
XRL A,#09H
JNZ ?C0064
; {
; SOURCE LINE # 400
; s0=0;
; SOURCE LINE # 401
MOV s0,A
; if(s1==5) //如果100ms位需要进位,则进入语句
; SOURCE LINE # 402
MOV A,s1
XRL A,#05H
JNZ ?C0065
; {
; SOURCE LINE # 403
; s1=0;
; SOURCE LINE # 404
MOV s1,A
; if(m0==9) //如果1sec位需要进位,则进入语句
; SOURCE LINE # 405
MOV A,m0
XRL A,#09H
JNZ ?C0066
; {
; SOURCE LINE # 406
; m0=0;
; SOURCE LINE # 407
MOV m0,A
; if(m1==5) //如果10sec位需要进位,则进入语句
; SOURCE LINE # 408
MOV A,m1
XRL A,#05H
JNZ ?C0067
; {
; SOURCE LINE # 409
; m1=0;
; SOURCE LINE # 410
MOV m1,A
; if(h0==9&&h1<=1)
; SOURCE LINE # 411
MOV A,h0
CJNE A,#09H,?C0068
MOV A,h1
SETB C
SUBB A,#01H
JNC ?C0068
; {h0=0;
; SOURCE LINE # 412
CLR A
MOV h0,A
; h1+=1;}
; SOURCE LINE # 413
INC h1
SJMP ?C0075
?C0068:
; else if(h0==3&&h1==2)
; SOURCE LINE # 414
MOV A,h0
CJNE A,#03H,?C0070
MOV A,h1
CJNE A,#02H,?C0070
; {h0=0;
; SOURCE LINE # 415
CLR A
MOV h0,A
; h1=0;}
; SOURCE LINE # 416
MOV h1,A
SJMP ?C0075
?C0070:
; else h0+=1;
; SOURCE LINE # 417
INC h0
; }
; SOURCE LINE # 418
SJMP ?C0075
?C0067:
; else m1+=1;
; SOURCE LINE # 419
INC m1
; }
; SOURCE LINE # 420
SJMP ?C0075
?C0066:
; else m0+=1;
; SOURCE LINE # 421
INC m0
; }
; SOURCE LINE # 422
SJMP ?C0075
?C0065:
; else s1+=1;
; SOURCE LINE # 423
INC s1
; }
; SOURCE LINE # 424
SJMP ?C0075
?C0064:
; else s0+=1;
; SOURCE LINE # 425
INC s0
?C0075:
; display(0,s0);
; SOURCE LINE # 426
MOV R5,s0
CLR A
MOV R7,A
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 427
LCALL L?0083
; display(1,s1);
; SOURCE LINE # 428
MOV R5,s1
MOV R7,#01H
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 429
MOV R7,#03H
LCALL _delay
; display(2,m0);
; SOURCE LINE # 430
MOV R5,m0
DEC R7
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 431
INC R7
LCALL _delay
; display(3,m1);
; SOURCE LINE # 432
MOV R5,m1
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 433
LCALL _delay
; display(4,h0);
; SOURCE LINE # 434
MOV R5,h0
INC R7
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 435
DEC R7
LCALL _delay
; display(5,h1);
; SOURCE LINE # 436
MOV R5,h1
MOV R7,#05H
LCALL _display
; delay(DELAY_VALUE); //以上语句则在数码管上显示各个数字
; SOURCE LINE # 437
MOV R7,#03H
LJMP _delay
; END OF updatee
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -