==============这课要点为中断与多分支===================
;这我凭印象所再做的程序题目2010年1月26日泉洲市赛竞赛题
;我目前没题目要求材料,要等到我进校才能够再拿到
;现在我先发布出来给大家看看
;=======================================================
K1 BIT P1.6
K2 BIT P1.7
K3 BIT P1.4
K4 BIT P1.5
YS1 DATA 30H
YS2 DATA 31H
YS3 DATA 32H
YS4 DATA 33H
YS5 DATA 34H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP SST0 ;闪烁T0
MAIN: MOV SP,#80H
LCALL CSH
LOOP: LCALL KEY
LOP: JNB F1,LOOP
LCALL DFZ
SJMP LOP
CSH: MOV P2,#7
MOV P0,#0C0H
MOV R2,#0
SETB EA
SETB ET0
MOV TH0,#5EH
MOV TL0,#0E0H
MOV TMOD,#01H
RET
KEY: JNB K1,FDD
JNB K2,FDD
JNB P2,FKE
JNB K3,FDD
FKE: RET
FDD: LCALL D15MS
JNB K1,M1
JNB K2,M2
JNB K3,M3
RET
M1: JNB K1,$
LCALL D15MS
MOV R3,#51
SETB TR0
INC R2
CJNE R2,#10,TM1
MOV R2,#0
TM1: LCALL CB
MOV P2,#7
RET
M2: JNB K2,$
LCALL D15MS
MOV R3,#51 ;设置闪烁次数(闪烁时间)
SETB TR0
DEC R2
CJNE R2,#-1,TM2
MOV R2,#9
TM2: LCALL CB
MOV P2,#7
RET
CB: MOV DPTR,#TABLE
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
RET
M3: JNB K3,$
LCALL D15MS
JB TR0,FM3
SETB F1
FM3: RET
DFZ: MOV A,R2
MOV B,#2
MUL AB
MOV DPTR,#TAB
JMP @A+DPTR
TAB: AJMP LED1
AJMP LED1
AJMP LED1
AJMP LED2
AJMP LED2
AJMP LED2
AJMP LED3
AJMP LED3
AJMP LED4
AJMP LED4
LED1: MOV P2,#0
LCALL ZY
RET
LED2: MOV P2,#0
LCALL YY
RET
LED3: MOV P2,#0
LCALL DL
RET
LED4: MOV P2,#0
LCALL ZS
RET
ZY: MOV A,#0FEH
TZY1: MOV P0,A
JNB K4,FD
LCALL D1S
RL A
CJNE A,#0FEH,TZY1
RET
YY: MOV A,#7FH
TYY1: MOV P0,A
JNB K4,FD
LCALL D1S
RR A
CJNE A,#07FH,TYY1
RET
DL: MOV A,#0FEH
TDL1: MOV P0,A
JNB K4,FD
LCALL D1S
CLR C
RLC A
CJNE A,#00H,TDL1
RET
ZS: MOV R3,#0
TZS1: LCALL CB1
JNB K4,FD
LCALL D1S
CJNE R3,#10,TZS1
RET
CB1: MOV DPTR,#TABLE
MOV A,R3
MOVC A,@A+DPTR
MOV P0,A
INC R3
RET
FD: LCALL D15MS
JNB K4,M4
RET
M4: JNB K4,$
LCALL D15MS
CLR F1
MOV P0,#89H
LJMP LOOP
SST0: MOV TH0,#5EH
MOV TL0,#0E0H
JB F0,TSS1
MOV P0,#0FFH
TSS1: JNB F0,FH
LCALL CB
FH: CPL F0
DJNZ R3,TFH ;关闭闪烁
CLR TR0
LCALL CB ;防止P0出现0FFH,使数码管无码
TFH: RETI
D15MS: MOV YS1,#30
D1: MOV YS2,#250
DJNZ YS2,$
DJNZ YS1,D1
RET
D1S: MOV YS3,#8
D2: MOV YS4,#250
D3: MOV YS5,#250
DJNZ YS5,$
DJNZ YS4,D3
DJNZ YS3,D2
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
本帖最后由 paulhyde 于 2014-9-15 08:59 编辑