📄 second.src
字号:
;
;
; void delay(short i) //延迟子程序,为精确计时,需要用汇编语言来做。R7刚好存的是i的值
RSEG ?PR?_delay?SECOND
L?0070:
USING 0
L?0071:
CLR P0_1
L?0072:
MOV R7,#03H
MOV R6,#00H
_delay:
; SOURCE LINE # 179
;---- Variable 'i?242' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 180
; short ii;
; ii=i;
; SOURCE LINE # 182
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 # 207
RET
; END OF _delay
;
; void display(unsigned char i,unsigned char num)
RSEG ?PR?_display?SECOND
_display:
; SOURCE LINE # 209
;---- Variable 'num?345' assigned to Register 'R5' ----
;---- Variable 'i?344' assigned to Register 'R7' ----
; {
; SOURCE LINE # 210
; if(num >= 0 && num <=9)
; SOURCE LINE # 211
MOV A,R5
CLR C
SUBB A,#00H
JC ?C0035
MOV A,R5
SETB C
SUBB A,#09H
JNC ?C0035
; {switch(i)
; SOURCE LINE # 212
MOV A,R7
DEC A
JZ ?C0029
DEC A
JZ ?C0030
DEC A
JZ ?C0031
DEC A
JZ ?C0032
DEC A
JZ ?C0033
ADD A,#05H
JNZ ?C0035
; { case 0:P2= LedSelect0 | num;
; SOURCE LINE # 213
?C0028:
MOV A,R5
ORL A,#080H
MOV P2,A
; //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 215
RET
; case 1:P2= LedSelect1 | num;
; SOURCE LINE # 216
?C0029:
MOV A,R5
ORL A,#090H
MOV P2,A
; //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 218
RET
; case 2:P2= LedSelect2 | num;
; SOURCE LINE # 219
?C0030:
MOV A,R5
ORL A,#0A0H
MOV P2,A
; //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 221
RET
; case 3:P2= LedSelect3 | num;
; SOURCE LINE # 222
?C0031:
MOV A,R5
ORL A,#0B0H
MOV P2,A
; //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 224
RET
; case 4:P2= LedSelect4 | num;
; SOURCE LINE # 225
?C0032:
MOV A,R5
ORL A,#0C0H
MOV P2,A
; //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 227
RET
; case 5:P2= LedSelect5 | num;
; SOURCE LINE # 228
?C0033:
MOV A,R5
ORL A,#0D0H
MOV P2,A
; //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
; break;
; SOURCE LINE # 230
; default:break;
; SOURCE LINE # 231
; }
; SOURCE LINE # 232
; }
; SOURCE LINE # 233
; }
; SOURCE LINE # 234
?C0035:
RET
; END OF _display
;
; unsigned char keyscan()
RSEG ?PR?keyscan?SECOND
keyscan:
USING 0
; SOURCE LINE # 236
; {
; SOURCE LINE # 237
; PinDrvKey1=TRUE;
; SOURCE LINE # 238
SETB P1_0
; if(PinScanKey1==TRUE)
; SOURCE LINE # 239
JNB P1_4,?C0036
; PinLamp=FALSE;
; SOURCE LINE # 240
CLR P0_0
?C0036:
; PinSpeaker=FALSE;
; SOURCE LINE # 241
; delay(DELAY_VALUE);
; SOURCE LINE # 242
LCALL L?0071
; PinLamp=TRUE;
; SOURCE LINE # 243
SETB P0_0
; PinSpeaker=TRUE;
; SOURCE LINE # 244
SETB P0_1
; return 1;
; SOURCE LINE # 245
MOV R7,#01H
RET
; if(PinScanKey2==TRUE)
; SOURCE LINE # 246
; PinLamp=FALSE;
; SOURCE LINE # 247
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 5;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 253
; PinLamp=FALSE;
; SOURCE LINE # 254
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 9;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 260
; PinLamp=FALSE;
; SOURCE LINE # 261
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 12;
; PinDrvKey1=FALSE; //扫描第一列
; SOURCE LINE # 267
; PinDrvKey2=TRUE;
; SOURCE LINE # 268
; if(PinScanKey1==TRUE)
; SOURCE LINE # 269
; PinLamp=FALSE;
; SOURCE LINE # 270
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 2;
; if(PinScanKey2==TRUE)
; SOURCE LINE # 276
; PinLamp=FALSE;
; SOURCE LINE # 277
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 6;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 283
; PinLamp=FALSE;
; SOURCE LINE # 284
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 0;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 290
; PinLamp=FALSE;
; SOURCE LINE # 291
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 13;
; PinDrvKey2=FALSE; //扫描第二列
; SOURCE LINE # 297
; PinDrvKey3=TRUE;
; SOURCE LINE # 298
; if(PinScanKey1==TRUE)
; SOURCE LINE # 299
; PinLamp=FALSE;
; SOURCE LINE # 300
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 3;
; if(PinScanKey2==TRUE)
; SOURCE LINE # 306
; PinLamp=FALSE;
; SOURCE LINE # 307
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 7;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 313
; PinLamp=FALSE;
; SOURCE LINE # 314
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 10;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 320
; PinLamp=FALSE;
; SOURCE LINE # 321
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 14;
; PinDrvKey3=FALSE; //扫描第三列
; SOURCE LINE # 327
; PinDrvKey4=TRUE;
; SOURCE LINE # 328
; if(PinScanKey1==TRUE)
; SOURCE LINE # 329
; PinLamp=FALSE;
; SOURCE LINE # 330
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 4;
; if(PinScanKey2==TRUE)
; SOURCE LINE # 336
; PinLamp=FALSE;
; SOURCE LINE # 337
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 8;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 343
; PinLamp=FALSE;
; SOURCE LINE # 344
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 11;
; if(PinScanKey1==TRUE)
; SOURCE LINE # 350
; PinLamp=FALSE;
; SOURCE LINE # 351
; END OF keyscan
; PinSpeaker=FALSE;
; delay(DELAY_VALUE);
; PinLamp=TRUE;
; PinSpeaker=TRUE;
; return 15;
; PinDrvKey3=FALSE; //扫描第四列
; return 16;
; }
;
; void updatee()
RSEG ?PR?updatee?SECOND
updatee:
USING 0
; SOURCE LINE # 361
; {
; SOURCE LINE # 362
; if(s00==9) //如果10ms位需要进位,则进入语句
; SOURCE LINE # 363
MOV A,s00
XRL A,#09H
JNZ ?C0053
; {
; SOURCE LINE # 364
; s00=0;
; SOURCE LINE # 365
MOV s00,A
; if(s01==9) //如果100ms位需要进位,则进入语句
; SOURCE LINE # 366
MOV A,s01
XRL A,#09H
JNZ ?C0054
; {
; SOURCE LINE # 367
; s01=0;
; SOURCE LINE # 368
MOV s01,A
; if(s0==9) //如果1sec位需要进位,则进入语句
; SOURCE LINE # 369
MOV A,s0
XRL A,#09H
JNZ ?C0055
; {
; SOURCE LINE # 370
; s0=0;
; SOURCE LINE # 371
MOV s0,A
; if(s1==5) //如果10sec位需要进位,则进入语句
; SOURCE LINE # 372
MOV A,s1
CJNE A,#05H,?C0056
; {
; SOURCE LINE # 373
; s1=0;
; SOURCE LINE # 374
CLR A
MOV s1,A
; if(m0==9)
; SOURCE LINE # 375
MOV A,m0
CJNE A,#09H,?C0057
; {m0=0;
; SOURCE LINE # 376
CLR A
MOV m0,A
; if(m1==5)m1=0;
; SOURCE LINE # 377
MOV A,m1
CJNE A,#05H,?C0058
CLR A
MOV m1,A
SJMP ?C0064
?C0058:
; else m1+=1;
; SOURCE LINE # 378
INC m1
; }
; SOURCE LINE # 379
SJMP ?C0064
?C0057:
; else m0+=1;
; SOURCE LINE # 380
INC m0
; }
; SOURCE LINE # 381
SJMP ?C0064
?C0056:
; else s1+=1;
; SOURCE LINE # 382
INC s1
; }
; SOURCE LINE # 383
SJMP ?C0064
?C0055:
; else s0+=1;
; SOURCE LINE # 384
INC s0
; }
; SOURCE LINE # 385
SJMP ?C0064
?C0054:
; else s01+=1;
; SOURCE LINE # 386
INC s01
; }
; SOURCE LINE # 387
SJMP ?C0064
?C0053:
; else s00+=1;
; SOURCE LINE # 388
INC s00
?C0064:
; display(0,s00);
; SOURCE LINE # 389
MOV R5,s00
CLR A
MOV R7,A
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 390
LCALL L?0072
; display(1,s01);
; SOURCE LINE # 391
MOV R5,s01
MOV R7,#01H
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 392
MOV R7,#03H
LCALL _delay
; display(2,s0);
; SOURCE LINE # 393
MOV R5,s0
DEC R7
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 394
INC R7
LCALL _delay
; display(3,s1);
; SOURCE LINE # 395
MOV R5,s1
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 396
LCALL _delay
; display(4,m0);
; SOURCE LINE # 397
MOV R5,m0
INC R7
LCALL _display
; delay(DELAY_VALUE);
; SOURCE LINE # 398
DEC R7
LCALL _delay
; display(5,m1);
; SOURCE LINE # 399
MOV R5,m1
MOV R7,#05H
LCALL _display
; delay(DELAY_VALUE); //以上语句则在数码管上显示各个数字
; SOURCE LINE # 400
MOV R7,#03H
LJMP _delay
; END OF updatee
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -