我把程序也粘过来,哪位高手有空指点指点.
DIS0 EQU 30H DIS1 EQU 31H DIS2 EQU 32H DIS3 EQU 33H DIS4 EQU 34H DIS5 EQU 35H TIME1 EQU 36H TIME2 EQU 37H ORG 0000H LJMP ZHU ORG 001BH LJMP TT ORG 0030H ZHU:MOV SP,#6FH ;堆栈指针 MOV TMOD,#10H ;计数器工作方式 MOV TH1,#3CH ;赋初值 MOV TL1,#B0H SETB EA ;开中断 SETB ET1 ;开定时器T1中断 SETB TR1 ;启动T1 MOV 50H,#20 ;定时1秒循环次数 MOV 51H,#60 ;定时一分循环次数 MOV 52H,#60 ;定时一小时循环次数 MOV 53H,#24 ;定时一天循环次数 MOV 54H,#7 CLR F0 ;清标志位 OO: LCALL MOD ;调显示子程序 LCALL START ;调整子程序 LJMP OO TT: MOV TH1,#3CH ;重赋初值 MOV TL1,#B0H DJNZ 50H,TT1 ;未到一秒继续循环 MOV 50H,#20 INC 55H ;到一秒,秒计数单元加1 MOV A,55H MOV B,#10 DIV AB ;分离秒计数单元个位十位 MOV DIS4,A ;秒十位存储 MOV DIS5,B ;秒个位存储 MOV A,51H ; CJNE A,55H,TT1 ;未到一分继续循环 INC 56H ;到一分,分计数单元加1 MOV A,56H MOV B,#10 DIV AB ;分离分计数单元个十们 MOV DIS2,A ;分十位存储 MOV DIS3,B ;分个位存储 MOV 55H,#00H ;到一分秒计数单元清0 MOV A,52H CJNE A,56H,TT1 ;未到一小时继续循环 INC 57H ;到一小时小时计数单元加1 MOV A,57H MOV B,#10 DIV AB ;分离小时计数单元个位十位 MOV DIS0,A ;存小时高十位 MOV DIS1,B ;存小时个位 MOV 56H,#00H ;到一小时分计数单元清0 MOV A,53H CJNE A,57H,TT1 ;未到一天继续循环 MOV 57H,#00H ;一天,小时清0 TT1:RETI MOD:PUSH ACC ;保护现场 PUSH DPH PUSH DPL MOV R0,#DIS0 ;指向显示缓冲区首单元 MOV R6,20H ;选中最左数码管 MOV R7,00H ;显示延时值 MOV A,#00H ;位选口清0 MOV P2,A DIR:MOV A,R0 ;取要显示的数 MOV DPTR,#WEI ;指向字形表首址 MOVC A,@A+DPTR ;查表得字形码 MOV P0,A ;送字形码 MOV A,R6 ;取位选字 MOV P2,A ;送位选字 YAN:DJNE R7,YAN ;显示延时 INC R0 ;更新显示单元 CLR C MOV A,R6 ;取位选字 RRC A ;位选字右移 MOV R6,A ;更新位选单元 JNZ DIR ;A不等于0继续循环 POP DPL ;恢复现场 POP DPH POP ACC RET START: CLR C MOV A,#0FFH ;置输入方式 MOV P1,A MOV A,P1 ;键状态输入 MOV R4,#0 ;初始键号 LP: RRC A JNC N1 ;C等于0,有键按下 INC R4 DJNZ 54H,LP1 MOV R4,#00H ;过7清0 MOV 54H,#7 LP1:SJMP LP N1: LCALL DLY-6MS JC NEXT JB F0,GAI ;叛别是第几次按下功能键,第一次顺序执行 CJNE R4,#00H,NEXT ;叛别是否第一功能键按下,IF否则转 MOV DIS0,#00H ;清秒计数单元为0 SETB F0 ;置标志位 CLR ET1 ;关中断 CLR TR1 ;关定时 LJMP NEXT GAI:CJNE R4,#00H,L1 ;第二次按键转到此,如不是功能键则转 LJMP RES L1: CJNE R4,#01H,L2 ;如按键为分加一键,则顺序执行 INC 56H ;分计数单元加1 MOV A,56H CJNE A,#60,NEXT MOV 56H,#00H LJMP NEXT L2: CJNE R4,#02H,NEXT INC 57H MOV A,57H CJNE A,#24,NEXT MOV 57H,#00H LJMP NEXT RES:CLR F0 SETB TR1 SETB ET1 NEXT:RET DLY-6MS:MOV TIME1,#10 L3: MOV TIME2,#120 L4: NOP NOP DJNZ TIME2,L4 DJNZ TIME1,L3 RET WEI:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0,1,2,3,4,5,6,7,8,9, END
|
|