程序的編寫,在日積月累中完成,同時(shí)更是在調(diào)試中完善。 TJ0109_1 DATA 50H ;1至9洞數(shù)據(jù)統(tǒng)計(jì) TJ0109_2 DATA 51H ;1至9洞數(shù)據(jù)統(tǒng)計(jì) TJ0109_3 DATA 52H ;1至9洞數(shù)據(jù)統(tǒng)計(jì) TJ1018_1 DATA 53H ;10至18洞數(shù)據(jù)統(tǒng)計(jì) TJ1018_2 DATA 54H ;10至18洞數(shù)據(jù)統(tǒng)計(jì) TJ1018_3 DATA 55H ;10至18洞數(shù)據(jù)統(tǒng)計(jì) TJ0118_1 DATA 56H ;1至18洞數(shù)據(jù)統(tǒng)計(jì) TJ0118_2 DATA 57H ;1至18洞數(shù)據(jù)統(tǒng)計(jì) TJ0118_3 DATA 58H ;1至18洞數(shù)據(jù)統(tǒng)計(jì) SHUJU_G DATA 56H SHUJU_S DATA 57H SHUJU_B DATA 58H SHUJU_W DATA 75H SHUJU_Z DATA 76H ;;;;;;;;;;;;;;;;;;;;;;;;;;; DON1 DATA 31H ;洞1數(shù)據(jù) DON2 DATA 32H DON3 DATA 33H DON4 DATA 34H DON5 DATA 35H DON6 DATA 36H DON7 DATA 37H DON8 DATA 38H DON9 DATA 39H DON10 DATA 3AH DON11 DATA 3BH DON12 DATA 3CH DON13 DATA 3DH DON14 DATA 3EH DON15 DATA 3FH DON16 DATA 40H DON17 DATA 41H DON18 DATA 42H ;;;;;;;;;;;;;;;;;;;;;;; KS BIT P0.0 ;開始 JA BIT P0.1 ;加 JD BIT P0.2 ;減 CX BIT P0.3 ;查詢 ;;;;;;;;;;;;;;;;;;;;;;;;; ORG 0H ;程序代碼由地址0開始執(zhí)行 MAIN: ;;;;;;;;;;;;;;;;;;;;;;;;按任意鍵進(jìn)入人員編號設(shè)置 SX_RY: MOV P3,#0FFH ;;;;;;關(guān)閉顯示 JB KS,SX_RY_1 JNB KS,$ AJMP BISAI_1 SX_RY_1: JB JA,SX_RY_2 JNB JA,$ AJMP BISAI_1 SX_RY_2: JB JD,SX_RY_3 JNB JD,$ AJMP BISAI_1 SX_RY_3: JB CX,SX_RY_4 JNB CX,$ AJMP BISAI_1 SX_RY_4: AJMP SX_RY RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;數(shù)據(jù)調(diào)用 SHUJU_T:LCALL SHUJU_1_9 LCALL SHUJU_10_18 LCALL SHUJU_0118 RET ;;;;;;;;;;;;;;;;;;;;;;;;洞位將沖突的數(shù)據(jù)暫時(shí)保存起來 BISAI_1: MOV R1,#1 MOV R0,#31H BISAI_1_A: MOV SHUJU_Z,R0 ;將數(shù)據(jù)暫時(shí)保存 MOV SHUJU_W,R1 LCALL SHUJU_T BISAI_1_B:;;;;;;;;;;作為查詢時(shí)的返回入口 MOV R0,SHUJU_Z ;將數(shù)據(jù)送回 MOV R1,SHUJU_W MOV R2,#50 MOV R3,#50 BISAI_1_2:LCALL XSLED_CX DEC R2 MOV A,R2 CJNE A,#0,BISAI_1_4 BISAI_1_3: LCALL XSLED_CX_2 DEC R3 MOV A,R3 CJNE A,#0,BISAI_1_6 AJMP BISAI_1_A RET BISAI_1_4: JB CX,BISAI_1_4_B JNB CX,$ MOV SHUJU_Z,R0 ;將數(shù)據(jù)暫時(shí)保存 MOV SHUJU_W,R1 LCALL CX_1_B RET BISAI_1_4_B: JB KS,BISAI_1_5 JNB KS,$ INC R0 INC R1 MOV A,R1 CJNE A,#19,BISAI_1_2 LCALL BISAI_37 RET BISAI_1_5: MOV A,@R0 LCALL BISAI_T MOV @R0,A AJMP BISAI_1_2 RET BISAI_1_6: JB CX,BISAI_1_6_B JNB CX,$ MOV SHUJU_Z,R0 ;將數(shù)據(jù)暫時(shí)保存 MOV SHUJU_W,R1 LCALL CX_1_B RET BISAI_1_6_B: JB KS,BISAI_1_7 JNB KS,$ INC R0 INC R1 MOV A,R1 CJNE A,#19,BISAI_1_3 LCALL BISAI_37 RET BISAI_1_7: MOV A,@R0 LCALL BISAI_T MOV @R0,A AJMP BISAI_1_3 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比賽完成,不再進(jìn)行數(shù)據(jù)登記 BISAI_37: MOV R0,#100 ;;;;;;;; 修改參數(shù),就可以改變顯示的延時(shí)時(shí)間 MOV R1,#100 ;;;;;;;; 修改參數(shù),就可以改變顯示的延時(shí)時(shí)間 XS_1: LCALL ANJIAN_SX LCALL XSLED MOV P3,#0FFH DEC R0 MOV A,R0 CJNE A,#0,XS_1 DEC R1 MOV A,R1 CJNE A,#0,XS_2 LCALL ANJIAN_SX RET XS_2: MOV R0,#100 AJMP XS_1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;洞位數(shù)據(jù)調(diào)整 BISAI_T: JB JA,BISAI_T_1 JNB JA,$ INC A RET BISAI_T_1:JB JD,BISAI_T_2 JNB JD,$ DEC A RET BISAI_T_2:RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;顯示時(shí),按下,延時(shí)恢復(fù) ANJIAN_SX: JB KS,ANJIAN_SX_1 JNB KS,$ AJMP BISAI_37 ANJIAN_SX_1: JB JA,ANJIAN_SX_2 JNB JA,$ AJMP BISAI_37 ANJIAN_SX_2: JB JD,ANJIAN_SX_3 JNB JD,$ AJMP BISAI_37 ANJIAN_SX_3: JB CX,ANJIAN_SX_4 JNB CX,$ AJMP CX_1 ANJIAN_SX_4: RET ;;;;;;;;;;;;;;;;;;;數(shù)據(jù)0118 SHUJU_0118: MOV A,TJ0109_1 MOV B,TJ1018_1 ADD A,B MOV TJ0118_1,A MOV A,TJ0109_2 MOV B,TJ1018_2 ADD A,B MOV TJ0118_2,A MOV A,TJ0109_3 MOV B,TJ1018_3 ADD A,B MOV TJ0118_3,A MOV A,TJ0118_3 MOV B,#10 DIV AB MOV TJ0118_3,B ADD A,TJ0118_2 MOV B,#10 DIV AB MOV TJ0118_2,B ADD A,TJ0118_1 MOV B,#10 DIV AB MOV TJ0118_1,B RET ;;;;;;;;;;;;;數(shù)據(jù)累加,盡量使用一個(gè)R爭取不要沖突使用 SHUJU_1_9: MOV TJ0109_1,#0 MOV TJ0109_2,#0 MOV TJ0109_3,#0 MOV R0,#31H SHUJU_1_9_2: MOV A,@R0 ADD A,TJ0109_3 MOV B,#100 DIV AB MOV SHUJU_B,A;;;;;;;;;;;百位臨時(shí)數(shù)據(jù) MOV A,B MOV B,#10 DIV AB MOV SHUJU_S,A;;;;;;;;十位臨時(shí)數(shù)據(jù) MOV TJ0109_3,B;;;;個(gè)位送數(shù)據(jù) ;;;;;;;;;;;;;;;十位數(shù)相加 MOV A,TJ0109_2 ADD A,SHUJU_B MOV B,#10 DIV AB ;;;;;;;;;;;;;;;;;;超過十位的,累加到百位 ADD A,TJ0109_1 MOV TJ0109_1,A ;;;;;;;累加最后值送百位 MOV TJ0109_2,B ;;;;;;;余數(shù)送百位 INC R0 MOV A,R0 CJNE A,#3AH,SHUJU_1_9_2 RET ;;;;;;;;;;;;;數(shù)據(jù)累加,盡量使用一個(gè)R爭取不要沖突使用 SHUJU_10_18: MOV TJ1018_1,#0 MOV TJ1018_2,#0 MOV TJ1018_3,#0 MOV R0,#3AH SHUJU_10_18_2: MOV A,@R0 ADD A,TJ1018_3 MOV B,#100 DIV AB MOV SHUJU_B,A;;;;;;;;;;;百位臨時(shí)數(shù)據(jù) MOV A,B MOV B,#10 DIV AB MOV SHUJU_S,A;;;;;;;;十位臨時(shí)數(shù)據(jù) MOV TJ1018_3,B;;;;個(gè)位送數(shù)據(jù) ;;;;;;;;;;;;;;;十位數(shù)相加 MOV A,TJ1018_2 ADD A,SHUJU_B MOV B,#10 DIV AB ;;;;;;;;;;;;;;;;;;超過十位的,累加到百位 ADD A,TJ1018_1 MOV TJ1018_1,A ;;;;;;;累加最后值送百位 MOV TJ1018_2,B ;;;;;;;余數(shù)送百位 INC R0 MOV A,R0 CJNE A,#43H,SHUJU_10_18_2 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比賽結(jié)束使用查詢功能 CX_1: MOV R1,#1 MOV R0,#31H CX_1_1: JB KS,CX_1_2 JNB KS,$ LCALL BISAI_37 RET CX_1_2: JB JA,CX_1_3 JNB JA,$ INC R1 INC R0 MOV A,R0 CJNE A,#43H,CX_1_1 AJMP CX_1 CX_1_3: JB JD,CX_1_4 JNB JD,$ DEC R1 DEC R0 MOV A,R0 CJNE A,#30H,CX_1_1 AJMP CX_2 RET CX_1_4: LCALL XSLED_CX AJMP CX_1_1 RET CX_2: MOV R1,#18 MOV R0,#42H AJMP CX_1_1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比賽過程查詢數(shù)據(jù) CX_1_B: MOV R1,#1 MOV R0,#31H CX_1_1_B: JB KS,CX_1_2_B JNB KS,$ LCALL BISAI_1_B RET CX_1_2_B: JB JA,CX_1_3_B JNB JA,$ INC R1 INC R0 MOV A,R0 CJNE A,#43H,CX_1_1_B AJMP CX_1_B CX_1_3_B: JB JD,CX_1_4_B JNB JD,$ DEC R1 DEC R0 MOV A,R0 CJNE A,#30H,CX_1_1_B AJMP CX_2_B RET CX_1_4_B: LCALL XSLED_CX AJMP CX_1_1_B RET CX_2_B: MOV R1,#18 MOV R0,#42H AJMP CX_1_1_B ;;;;;;;;;;;;;;;;;;;;數(shù)據(jù)顯示 XSLED_CX: LCALL XSLED MOV A,R1 ;;;;;;;;;;;;;設(shè)置洞位1 LCALL LED_LED_10 MOV A,@R0 ;;;;;;;;;;;;;將相應(yīng)洞位數(shù)據(jù)傳給A LCALL LED_LED_10 RET ;;;;;;;;;;;;;;;;;;;;閃爍數(shù)據(jù)顯示 XSLED_CX_2: LCALL XSLED MOV A,R1 ;;;;;;;;;;;;;設(shè)置洞位1 LCALL LED_LED_10 ;MOV A,@R0 ;;;;;;;;;;;;;將相應(yīng)洞位數(shù)據(jù)傳給A ;LCALL LED_LED_10 RET ;;;;;;;;;;;;;;;;;;;;;;;;;運(yùn)行時(shí)數(shù)碼管顯示 XSLED: MOV P3,#0D0H MOV A,TJ0118_1 LCALL LED INC P3 MOV A,TJ0118_2 LCALL LED INC P3 MOV A,TJ0118_3 LCALL LED INC P3 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;數(shù)碼顯示調(diào)用程序 LED: MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P1,A LCALL DELAY1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;; 除以100得百位數(shù) LED_LED_100: MOV B,#100 DIV AB LCALL LED INC P3 MOV A,B ;;;;;;;;;;;;;;;;;;;;;;;;;;;除以10得十位數(shù) LED_LED_10: MOV B,#10 DIV AB LCALL LED INC P3 MOV A,B ;;;;;;;;;;;;;;;;;;;;;;;;;;不除得個(gè)位數(shù) LED_LED_1: LCALL LED INC P3 RET TABLE: DB 0C0H ;"0" DB 0F9H ;"1" DB 0A4H ;"2" DB 0B0H ;"3" DB 99H ;"4" DB 92H ;"5" DB 82H ;"6" DB 0F8H ;"7" DB 80H ;"8" DB 90H ;"9" DB 0FFH ;"-" DB 0FFH ;"-" DB 0BFH ;"-" DB 0BFH ;"-" DELAY1: MOV R7,#10 L1: MOV R6,#50 DJNZ R6,$ DJNZ R7,L1 RET END