长春理工大学毕业设计
ORG 0013H ;外部中断入口地址 AJMP CXT
LK1: MOV 33H,#00H ;甲队记分清0 MOV 34H,#00H MOV 35H,#00H
MOV 36H,#00H ;乙队记分清0 MOV 37H,#00H MOV 38H,#00H
MOV 40H,#00H ;记时分钟清0 MOV 41H,#00H CLR P0.0
Mp: CLR P2.0 ;计时牌子清零 CLR P2.1 ;分分秒秒清0 CLR P2.2 CLR P2.3 MOV P1,#00H NOP NOP
SETB P2.0 SETB P2.1 SETB P2.2 SETB P2.3
MOV 42H,#05H ;送秒钟初值59秒 MOV 43H,#09H
MOV SCON,#00H ;计分牌子清零程序 CLR P3.7 MOV R1,#33H
- 22 -
长春理工大学毕业设计
MOV R2,#06
LP: MOV A,@R1
MOV DPTR,#TAB ;取显示数 MOVC A,@A+DPTR
MOV SBUF,A ;通过串行口发显示数据 JNB TI,$ ;是否发送完毕 CLR TI ;清除标志位 INC R1
DJNZ R2,LP ;6次是否 发送完毕 SETB P3.7 ;显示数据 LK3: JB P2.4,LK6 ACALL D10MS
JB P2.4,LK3 ACALL D2S
LK4: JB P2.4,LK3 ;调整分钟(十位) CLR P2.0 ;显示分钟十位数据 MOV P1,40H SETB P2.0
ACALL D2S ;调用延时程序 INC 40H ;将十位加1 MOV A,40H
CJNE A,#0AH,LK4 ;十到了没有 MOV 40H,#00H AJMP LK4
LK6: JB P2.5,LK5 ACALL D10MS JB P2.5,LK6 ACALL D2S
- 23 -
长春理工大学毕业设计
LK7: JB P2.5,LK6 ; 调分钟(个位) CLR P2.1 ;显示分钟个位数据 MOV P1,41H SETB P2.1
ACALL D2S ;调用延时程序 INC 41H ;将个位加1 MOV A,41H
CJNE A,#0AH,LK7 ;十到了没有 MOV 41H,# 00H AJMP LK7
LK5: JB P2.6,LK3 ;等待启动计时 ACALL D10MS JB P2.6,LK5
CLR P2.2 ;显示秒钟十位 MOV P1,42H NOP NOP
SETB P2.2
CLR P2.3 ;显示秒钟个位 MOV P1,43H NOP NOP
SETB P2.3
SETB P0.0 ;点亮计时指示灯 MOV TMOD,#01H ;定时中断初始化 MOV TL0,#0B0H ;送定时初值 MOV TH0,#3CH
- 24 -
长春理工大学毕业设计
SETB ET0 ;开放定时中断 SETB EX1 ;开放外部中断 CLR IT0 ;外部中断低电平有效 SETB TR0 ;启动定时 MOV R0,#14H SJMP $
CTCO: JNB P2.6,LK8 ;定时中断程序 DJNZ R0,NEXT ;一秒钟到了吗? MOV R0,#14H DEC 43H
CLR P2.3 ;显示时间 MOV P1,43H ;显示秒钟个位 NOP NOP
SETB P2.3
CLR P2.2 ;显示秒钟十位 MOV P1,42H NOP NOP
SETB P2.2
CLR P2.1 ;显示分钟个位 MOV P1,41H NOP NOP
SETB P2.1
CLR P2.0 ;显示分钟十位
- 25 -
长春理工大学毕业设计
MOV P1,40H NOP NOP
SETB P2.0 MOV A,43H
CJNE A,#00H,NEXT ;秒钟个位回到0没有 MOV 43H,#0AH ;秒钟个位送初值10 MOV A,42H
CJNE A,00H,LP3 ;秒钟十位回到0没有 MOV 42H,#05H ;秒钟十位送初值5 MOV A,41H
CJNE A,#00H,LP2 ;分种个位回到0没有 MOV 41H,#09H ;分钟个位送初值9 MOV A,40H
CJNE A,#00H,LP1 ;分钟十位回到0没有 CLR P0.0
CLR P3.6 ;时间到发出警备10S ACALL D10S SETB P3.6
KP11: JB P2.6,KP11 ;等待交换 AJMP KP12 ;去两队分数交换程序 LK8: ACALL D10MS JB P2.6,CTCO ;计时暂停处理 CLR P0.0
LK9: JNB P2.6,LK9 ;等待键按下 KL10: JB P2.6,LK10 ;等待键放开 SETB P0.0 ;继续计时 AJMP CTCO
- 26 -