程序做得很粗糙,功能還算齊全,也還沒進行優(yōu)化,所以我只讓它保存15個數(shù)據(jù),如果能優(yōu)化一下數(shù)據(jù)結(jié)構(gòu),應該可以保存更多數(shù)據(jù),分兩種模式,0和1模式。也沒有計算誤差,每次暫停會有少于1MS的誤差,開始計時也有少于1MS誤差。
寫了好幾天,往往都是因為其中一個單詞寫錯,害得我弄上他幾個小時,比如就因為我把JC寫成了JB,害得我從昨天中午開始一直弄到今天,把程序改來改去,到最后才知道原來也就差一個單詞,今天做好了,不想改了,也不用優(yōu)化了,簡易秒表嘛,要求也不是很高的,做出來,交給老師檢查,希望過關(guān)
說一下功能吧,最左邊復位鍵復位,中間鍵開始鍵,在復位被點后中間鍵沒被點前,右邊鍵改模式(0和1兩種模式,0是單人模式,記錄啟動后開始鍵點擊間隔,就是這次點擊減去上次點擊記錄下來,1模式是多人模式,記錄啟動后每次點擊開始鍵時間),開始鍵是啟動秒表的按鍵,在秒表啟動后是記錄時間的按鍵。啟動后,右邊鍵為暫停鍵,暫停后可以點中間鍵繼續(xù)計時。暫停后也可以再點暫停鍵查看記錄的數(shù)據(jù)。只能記錄15個數(shù)據(jù)哦!
ORG 0000H LJMP MAIN ORG 000BH LJMP DING ORG 0030H MAIN: MOV R7,#28H;定時器中斷40次,記下一個時間單位1次是250US, MOV SP,#30H MOV R0,#40H MOV R1,#32H MOV R5,#00H QING0: MOV @R0,#00H INC R0 DJNZ R1,QING0 MOV IE,#82H MOV TMOD,#02H MOV TH0,#06H;定時器值 MOV TL0,#06H SETB TR0 CLR IE.7 CLR 00H CLR 01H CLR 02H CLR 03H XIAN: MOV P1,#0FFH MOV A,P1 JB ACC.0,JIANGPAN MOV A,50H CJNE A,#00H,NONG LCALL AN1 NONG: MOV 50H,#32H;定義鍵盤延時,延時時間為顯示程序運行一次所需時間*定義數(shù)值 JIANGPAN: MOV A,50H CJNE A,#00H,NONG2 SJMP NONG3 NONG2: DEC 50H NONG3: MOV A,P1 JB ACC.1,JIANPAN1 MOV A,51H CJNE A,#00H,NONG1 LCALL AN2 NONG1: MOV 51H,#32H;定義鍵盤延時,延時時間為顯示程序運行一次所需時間*定義數(shù)值 JIANPAN1:MOV A,51H CJNE A,#00H,NONG8 SJMP NONG9 NONG8: DEC 51H NONG9: MOV R3, #02H MOV R0,40H MOV R2,#0FEH CLR 00H MOV R4,#00H XIAN1: MOV A,R0 MOV B,#0AH DIV AB MOV R0,A MOV A,R2 RR A MOV R2,A MOV A,B MOV DPTR,#TAB JNB 00H,XIAN2 CLR 00H ADD A,#0AH XIAN2: MOVC A,@A+DPTR MOV P0,#0FFH MOV P2,R2 CPL A MOV P0,A INC R4 DJNZ R3,XIAN1 CJNE R4,#06H,XIAN3 MOV R3,#02H MOV R0,43H SJMP XIAN4 XIAN3: JNC WEI MOV R3,#02H CJNE R4,#04H,XIAN111 MOV R0,42H SJMP XIAN4 XIAN111: MOV R0,41H XIAN4: SETB 00H LJMP XIAN1 WEI:LJMP XIAN AN1: JB 01H,AN11 SETB 01H SETB 02H MOV 40H,45H MOV 41H,46H MOV 42H,47H MOV 43H,48H SETB IE.7 LJMP AN12 AN11: SETB 02H CLR C MOV A,#0EH SUBB A,4AH JC MEINVA SJMP MEINVA1 MEINVA: LJMP AN12 MEINVA1: MOV A,4AH MOV B,#03H MUL AB ADD A,#52H MOV R0,A MOV @R0,40H INC R0 MOV @R0,41H INC R0 MOV @R0,42H MOV R1,#48H CJNE @R1,#01H,MMMMG LJMP DDDD MMMMG: MOV A,4AH CJNE A,#00H,MMMM LJMP DDDD MMMM: DEC R0 DEC R0 MOV A,R0 MOV R1,A MOV R0,#45H MOV R4,#64H MOV A,@R0 MOV R3,A MOV A,@R1 LCALL JIANFA MOV @R1,A JNC MMMM1 INC R1 MOV R3,#01H MOV A,@R1 MOV R4,#3CH LCALL JIANFA MOV @R1,A DEC R1 JNC MMMM1 INC R1 INC R1 MOV R3,#01H MOV A,@R1 LCALL JIANFA MOV @R1,A DEC R1 DEC R1 MMMM1: INC R1 INC R0 MOV R4,#3CH MOV A,@R0 MOV R3,A MOV A,@R1 LCALL JIANFA MOV @R1,A JNC MMMM18 INC R1 MOV R3,#01H MOV A,@R1 LCALL JIANFA MOV @R1,A DEC R1 MMMM18: INC R1 INC R0 MOV A,@R0 MOV R3,A MOV A,@R1 LCALL JIANFA MOV @R1,A DDDD: MOV 45H,40H MOV 46H,41H MOV 47H,42H INC 4AH AN12: RET JIANFA: CLR C MOV 4FH,R3 CJNE A,4FH,JIANDA12 NOP JIANDA12: JC JIANDA1 SUBB A,R3 SJMP JIANFA2 JIANDA1: ADD A,R4 SUBB A,R3 SETB C JIANFA2: RET AN2: JNB 01H,AN21 CLR IE.7 MOV 45H,40H MOV 46H,41H MOV 47H,42H CLR 01H MOV R5,#01H LJMP AN22 AN21: JB 02H,AN23 MOV A,#01H XRL A,43H MOV 43H,A MOV 48H,A LJMP AN22 AN23: MOV 43H,R5 MOV A,R5 MOV B,#03H MUL AB ADD A,#4FH MOV R1,A MOV 43H,R5 MOV 40H,@R1 INC R1 MOV 41H,@R1 INC R1 MOV 42H,@R1 MOV A,R5 CJNE A,4AH,AN24 MOV R5,#00H AN24: INC R5 AN22: RET DING: PUSH 00H PUSH ACC PUSH PSW PUSH DPH PUSH DPL DJNZ R7,DINGSHI1 MOV R0,#40H MOV R7,#28H;定時器中斷40次,記下一個時間單位1次是250US, INC @R0 CJNE @R0,#64H,DINGSHI1 MOV @R0,#00H INC R0 INC @R0 CJNE @R0,#3CH,DINGSHI1 MOV @R0,#00H INC R0 INC @R0 CJNE @R0,#3CH,DINGSHI1 MOV @R0,#00H DINGSHI1: POP DPL POP DPH POP PSW POP ACC POP 00H RETI TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH END