程序分享出來給需要的人作參考
- ;==========================================================================
- ;===========Disassemble information========================================
- ;==========================================================================
- ; File Name: test.hex
- ; IC Body: MCS-51
- ; Date: 2022/9/17
- ;==========================================================================
- ;==========================================================================
- ;標號==============指令================================地址===機器碼=======
- ;==========================================================================
- Q0000: LJMP Q05CA ;至主程序
- ;==========================================================================
- Q0003: LJMP Q001E ;DB 02H, 00H, 1EH ;... 至外部中斷0程序
- ;==========================================================================
- Q0006: MOV R6,07H
- CLR A
- MOV R5,A
- MOV 55H,A
- Q000C: MOV A,R5
- CLR C
- SUBB A,R6
- JNC Q001D
- MOV A,#25H
- ADD A,R5
- MOV R0,A
- MOV A,@R0
- MOV R7,A
- LCALL Q07EE
- INC R5
- Q001B: SJMP Q000C ;至定時器1中斷子程序
- ;==========================================================================
- Q001D: RET
- ;==========================================================================
- ;Q001E: DB 75H, 10H, 01H, 32H, 00H, 02H, 07H,0E3H ;u..2....
- ;外部中斷0程序
- Q001E: MOV 10H,#01H
- RETI
- NOP
- Q0023: LJMP Q07E3 ; 至串行中斷子程序
- ;==========================================================================
- Q0026: CLR A
- MOV 49H,A
- MOV 4AH,A
- MOV R0,#4BH
- MOV R4,#00H
- MOV R5,A
- MOV R3,#0FFH
- MOV R2,#07H
- MOV R1,#0DBH
- MOV R6,A
- MOV R7,#08H
- LCALL Q0575
- CLR A
- MOV 53H,A
- MOV 54H,A
- MOV P0,#0FFH ;1602LCD驅動端口
- MOV P1,#0FFH ;590使能清除
- MOV P2,#0FFH ;590計數器清零
- LCALL Q0791
- SETB P2.1 ;儲存器使能
- CLR P2.3 ;590計數器清零
- CLR P2.0 ;計數器使能
- LCALL Q07B8
- MOV R3,#00H
- MOV R2,#00H
- MOV R1,#25H
- CLR A
- MOV R7,A
- LCALL Q0712
- CLR P2.0 ;計數器使能
- CLR P2.0 ;計數器使能
- SETB P2.0 ;計數器使能
- SETB P2.0 ;計數器使能
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q006E: MOV A,#25H
- ADD A,4AH
- MOV R0,A
- MOV @R0,#20H
- INC 4AH
- MOV A,4AH
- JNZ Q007D
- INC 49H
- Q007D: XRL A,#14H
- ORL A,49H
- JNZ Q006E
- Q0083: CLR P2.2 ;?????????????? 沒有接上
- SETB P2.3 ;590計數器清零
- CLR A
- MOV 53H,A
- MOV 54H,A
- Q008C: MOV R6,53H
- MOV R7,54H
- CLR A
- MOV R4,A
- MOV R5,A
- MOV R3,#7DH
- MOV R2,#0BEH
- MOV R1,A
- MOV R0,A
- SETB C
- LCALL Q05B4
- JC Q00AE
- MOV C,P2.2 ;?????????????? 沒有接上
- CPL C
- MOV P2.2,C ;?????????????? 沒有接上
- INC 54H
- MOV A,54H
- JNZ Q008C
- INC 53H
- SJMP Q008C
- ;==========================================================================
- Q00AE: JNB P3.2,$ ;等待P3.2低
- CLR P2.3 ;590計數器清零
- CLR P2.3 ;590計數器清零
- JB P3.2,$ ;等待P3.2高
- CLR A
- MOV 10H,A
- SETB P2.2
- LCALL Q0656
- MOV A,41H
- ANL A,#0FH
- MOV 52H,A
- MOV A,41H
- SWAP A
- ANL A,#0FH
- MOV 51H,A
- MOV A,42H
- ANL A,#0FH
- MOV 50H,A
- MOV A,42H
- SWAP A
- ANL A,#0FH
- MOV 4FH,A
- MOV A,43H
- ANL A,#0FH
- MOV 4EH,A
- MOV A,43H
- SWAP A
- ANL A,#0FH
- MOV 4DH,A
- MOV A,44H
- ANL A,#0FH
- MOV 4CH,A
- MOV A,44H
- SWAP A
- ANL A,#0FH
- MOV 4BH,A
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q00F9: MOV A,#4BH
- ADD A,4AH
- MOV R0,A
- MOV A,@R0
- CLR C
- SUBB A,#0AH
- JNC Q010A
- MOV A,#30H
- ADD A,@R0
- MOV @R0,A
- SJMP Q010E
- ;==========================================================================
- Q010A: MOV A,#37H
- ADD A,@R0
- MOV @R0,A
- Q010E: INC 4AH
- MOV A,4AH
- JNZ Q0116
- INC 49H
- Q0116: XRL A,#08H
- ORL A,49H
- JNZ Q00F9
- MOV 25H,#43H
- MOV 26H,#31H
- MOV 27H,#3DH
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q012A: MOV R7,4AH
- MOV A,#4BH
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#28H
- ADD A,R7
- MOV R0,A
- MOV @R0,06H
- INC 4AH
- MOV A,4AH
- JNZ Q0140
- INC 49H
- Q0140: XRL A,#08H
- ORL A,49H
- JNZ Q012A
- MOV 30H,#0DH
- MOV R7,#0CH
- LCALL Q0006
- MOV A,45H
- ANL A,#0FH
- MOV 52H,A
- MOV A,45H
- SWAP A
- ANL A,#0FH
- MOV 51H,A
- MOV A,46H
- ANL A,#0FH
- MOV 50H,A
- MOV A,46H
- SWAP A
- ANL A,#0FH
- MOV 4FH,A
- MOV A,47H
- ANL A,#0FH
- MOV 4EH,A
- MOV A,47H
- SWAP A
- ANL A,#0FH
- MOV 4DH,A
- MOV A,48H
- ANL A,#0FH
- MOV 4CH,A
- MOV A,48H
- SWAP A
- ANL A,#0FH
- MOV 4BH,A
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q0187: MOV A,#4BH
- ADD A,4AH
- MOV R0,A
- MOV A,@R0
- CLR C
- SUBB A,#0AH
- JNC Q0198
- MOV A,#30H
- ADD A,@R0
- MOV @R0,A
- SJMP Q019C
- ;==========================================================================
- Q0198: MOV A,#37H
- ADD A,@R0
- MOV @R0,A
- Q019C: INC 4AH
- MOV A,4AH
- JNZ Q01A4
- INC 49H
- Q01A4: XRL A,#08H
- ORL A,49H
- JNZ Q0187
- MOV 25H,#43H
- MOV 26H,#32H
- MOV 27H,#3DH
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q01B8: MOV R7,4AH
- MOV A,#4BH
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#28H
- ADD A,R7
- MOV R0,A
- MOV @R0,06H
- INC 4AH
- MOV A,4AH
- JNZ Q01CE
- INC 49H
- Q01CE: XRL A,#08H
- ORL A,49H
- JNZ Q01B8
- MOV 30H,#0DH
- MOV R7,#0CH
- LCALL Q0006
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q01E1: MOV R7,4AH
- MOV A,#41H
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#0CH
- ADD A,R7
- MOV R0,A
- MOV @R0,06H
- INC 4AH
- MOV A,4AH
- JNZ Q01F7
- INC 49H
- Q01F7: XRL A,#04H
- ORL A,49H
- JNZ Q01E1
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q0202: MOV R7,4AH
- MOV A,#45H
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#08H
- ADD A,R7
- MOV R0,A
- MOV @R0,06H
- INC 4AH
- MOV A,4AH
- JNZ Q0218
- INC 49H
- Q0218: XRL A,#04H
- ORL A,49H
- JNZ Q0202
- LCALL Q0283
- MOV 25H,#46H
- MOV 26H,#3DH
- MOV 27H,#20H
- CLR A
- MOV 49H,A
- MOV 4AH,A
- Q022F: MOV A,#11H
- ADD A,4AH
- MOV R0,A
- MOV A,@R0
- MOV R7,A
- CLR C
- SUBB A,#00H
- JC Q024B
- MOV A,R7
- SETB C
- SUBB A,#09H
- JNC Q024B
- MOV A,@R0
- ADD A,#30H
- MOV R6,A
- MOV A,#28H
- ADD A,4AH
- SJMP Q0256
- ;==========================================================================
- Q024B: MOV R7,4AH
- MOV A,#11H
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#28H
- ADD A,R7
- Q0256: MOV R0,A
- MOV @R0,06H
- INC 4AH
- MOV A,4AH
- JNZ Q0261
- INC 49H
- Q0261: XRL A,#0AH
- ORL A,49H
- JNZ Q022F
- MOV 32H,#48H
- MOV 33H,#7AH
- MOV 34H,#0DH
- MOV R7,#10H
- LCALL Q0006
- MOV R3,#00H
- MOV R2,#00H
- MOV R1,#28H
- CLR A
- MOV R7,A
- LCALL Q0712
- LJMP Q0083
- ;==========================================================================
- Q0283: CLR A
- MOV 55H,A
- MOV 56H,A
- MOV 57H,A
- MOV 58H,A
- MOV 59H,A
- MOV R0,#5AH
- MOV R4,#00H
- MOV R5,A
- MOV R3,#0FFH
- MOV R2,#07H
- MOV R1,#0D7H
- MOV R6,A
- MOV R7,#04H
- LCALL Q0575
- MOV R7,#08H
- CLR A
- MOV 55H,A
- Q02A4: MOV A,#11H
- ADD A,55H
- MOV R0,A
- CLR A
- MOV @R0,A
- INC 55H
- MOV A,55H
- CJNE A,#14H,Q02A4
- MOV A,0FH
- JNZ Q02C3
- MOV A,0EH
- JNZ Q02C3
- MOV A,0DH
- JNZ Q02C3
- MOV A,0CH
- JNZ Q02C3
- RET
- ;==========================================================================
- Q02C3: MOV A,0FH
- JNZ Q0316
- MOV A,0EH
- JNZ Q0316
- MOV A,0DH
- JNZ Q0316
- MOV R7,#04H
- MOV 5AH,#10H
- MOV 5BH,#27H
- MOV 5CH,A
- MOV 57H,0CH
- MOV 0CH,A
- MOV 55H,A
- Q02E0: MOV A,55H
- CLR C
- SUBB A,57H
- JC Q02EA
- LJMP Q0369
- ;==========================================================================
- Q02EA: CLR A
- MOV 59H,A
- MOV 56H,A
- Q02EF: MOV A,#5AH
- ADD A,56H
- MOV R0,A
- MOV A,@R0
- ADD A,59H
- MOV R6,A
- MOV A,#0CH
- ADD A,56H
- MOV R0,A
- MOV A,R6
- ADD A,@R0
- MOV @R0,A
- JNB CY,Q0308
- MOV 59H,#01H
- SJMP Q030B
- ;==========================================================================
- Q0308: CLR A
- MOV 59H,A
- Q030B: INC 56H
- MOV A,56H
- CJNE A,#04H,Q02EF
- INC 55H
- SJMP Q02E0
- ;==========================================================================
- Q0316: MOV A,0FH
- JNZ Q0369
- MOV A,0EH
- JNZ Q0369
- MOV R7,#06H
- MOV 55H,A
- Q0322: MOV A,#0CH
- ADD A,55H
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#5AH
- ADD A,55H
- MOV R0,A
- MOV @R0,06H
- INC 55H
- MOV A,55H
- CJNE A,#04H,Q0322
- CLR A
- MOV 55H,A
- Q033A: CLR A
- MOV 59H,A
- MOV 56H,A
- Q033F: MOV A,#5AH
- ADD A,56H
- MOV R0,A
- MOV A,@R0
- ADD A,59H
- MOV R6,A
- MOV A,#0CH
- ADD A,56H
- MOV R0,A
- MOV A,R6
- ADD A,@R0
- MOV @R0,A
- JNB CY,Q0358
- MOV 59H,#01H
- SJMP Q035B
- ;==========================================================================
- Q0358: CLR A
- MOV 59H,A
- Q035B: INC 56H
- MOV A,56H
- CJNE A,#04H,Q033F
- INC 55H
- MOV A,55H
- CJNE A,#63H,Q033A
- Q0369: CLR A
- MOV 55H,A
- Q036C: MOV A,#0CH
- ADD A,55H
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#5AH
- ADD A,55H
- MOV R0,A
- MOV @R0,06H
- INC 55H
- MOV A,55H
- CJNE A,#04H,Q036C
- CLR A
- MOV 59H,A
- MOV 56H,A
- Q0386: MOV A,#0CH
- ADD A,56H
- MOV R0,A
- PUSH 00H
- MOV A,@R0
- MOV R6,A
- MOV A,#08H
- ADD A,56H
- MOV R0,A
- MOV A,@R0
- ADD A,59H
- MOV R5,A
- CLR C
- MOV A,R6
- SUBB A,R5
- POP 00H
- MOV @R0,A
- JNB CY,Q03A6
- MOV 59H,#01H
- SJMP Q03A9
- ;==========================================================================
- Q03A6: CLR A
- MOV 59H,A
- Q03A9: INC 56H
- MOV A,56H
- CJNE A,#04H,Q0386
- MOV A,59H
- JZ Q0402
- INC 58H
- CLR A
- MOV 55H,A
- Q03B9: MOV A,#5AH
- ADD A,55H
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#0CH
- ADD A,55H
- MOV R0,A
- MOV @R0,06H
- INC 55H
- MOV A,55H
- CJNE A,#04H,Q03B9
- CLR A
- MOV 55H,A
- Q03D1: CLR A
- MOV 59H,A
- MOV 56H,A
- Q03D6: MOV A,#5AH
- ADD A,56H
- MOV R0,A
- MOV A,@R0
- ADD A,59H
- MOV R6,A
- MOV A,#0CH
- ADD A,56H
- MOV R0,A
- MOV A,R6
- ADD A,@R0
- MOV @R0,A
- JNB CY,Q03EF
- MOV 59H,#01H
- SJMP Q03F2
- ;==========================================================================
- Q03EF: CLR A
- MOV 59H,A
- Q03F2: INC 56H
- MOV A,56H
- CJNE A,#04H,Q03D6
- INC 55H
- MOV A,55H
- CJNE A,#09H,Q03D1
- SJMP Q0408
- ;==========================================================================
- Q0402: MOV A,#11H
- ADD A,58H
- MOV R0,A
- INC @R0
- Q0408: MOV A,0CH
- JNZ Q0418
- MOV A,0DH
- JNZ Q0418
- MOV A,0EH
- JNZ Q0418
- MOV A,0FH
- JZ Q0422
- Q0418: MOV A,58H
- SETB C
- SUBB A,#14H
- JNC Q0422
- LJMP Q0369
- ;==========================================================================
- Q0422: CLR A
- MOV 55H,A
- MOV 56H,A
- Q0427: MOV A,#11H
- ADD A,55H
- MOV R0,A
- MOV A,@R0
- JNZ Q0438
- INC 56H
- INC 55H
- MOV A,55H
- CJNE A,#14H,Q0427
- Q0438: CLR C
- MOV A,R7
- SUBB A,56H
- MOV R7,A
- CLR A
- MOV 55H,A
- Q0440: MOV A,55H
- CLR C
- SUBB A,R7
- JNC Q045A
- MOV A,55H
- ADD A,56H
- ADD A,#11H
- MOV R0,A
- MOV A,@R0
- MOV R6,A
- MOV A,#11H
- ADD A,55H
- MOV R0,A
- MOV @R0,06H
- INC 55H
- SJMP Q0440
- ;==========================================================================
- Q045A: MOV A,#11H
- ADD A,R7
- MOV R0,A
- MOV @R0,#2EH
- MOV A,R7
- INC A
- MOV 55H,A
- Q0464: MOV A,55H
- CLR C
- SUBB A,#13H
- JNC Q047F
- MOV A,55H
- ADD A,56H
- ADD A,#10H
- MOV R0,A
- MOV A,@R0
- MOV R7,A
- MOV A,#11H
- ADD A,55H
- MOV R0,A
- MOV @R0,07H
- INC 55H
- SJMP Q0464
- ;==========================================================================
- Q047F: CLR A
- MOV 55H,A
- Q0482: MOV R7,56H
- MOV A,R7
- RLC A
- SUBB A,ACC
- MOV R6,A
- CLR C
- MOV A,55H
- SUBB A,R7
- MOV A,R6
- XRL A,#80H
- MOV R0,A
- MOV A,#80H
- SUBB A,R0
- JNC Q04A4
- CLR C
- MOV A,#13H
- SUBB A,55H
- ADD A,#11H
- MOV R0,A
- CLR A
- MOV @R0,A
- INC 55H
- SJMP Q0482
- ;==========================================================================
- Q04A4: RET
- ;==========================================================================
- ;Q04A5: DB 0E7H, 09H,0F6H, 08H,0DFH,0FAH, 80H, 46H ;.......F
- ;Q04AD: DB 0E7H, 09H,0F2H, 08H,0DFH,0FAH, 80H, 3EH ;.......>
- ;Q04B5: DB 88H, 82H, 8CH, 83H,0E7H, 09H,0F0H,0A3H ;........
- ;Q04BD: DB 0DFH,0FAH, 80H, 32H,0E3H, 09H,0F6H, 08H ;...2....
- ;Q04C5: DB 0DFH,0FAH, 80H, 78H,0E3H, 09H,0F2H, 08H ;...x....
- ;Q04CD: DB 0DFH,0FAH, 80H, 70H, 88H, 82H, 8CH, 83H ;...p....
- ;Q04D5: DB 0E3H, 09H,0F0H,0A3H,0DFH,0FAH, 80H, 64H ;.......d
- ;Q04DD: DB 89H, 82H, 8AH, 83H,0E0H,0A3H,0F6H, 08H ;........
- ;Q04E5: DB 0DFH,0FAH, 80H, 58H, 89H, 82H, 8AH, 83H ;...X....
- ;Q04ED: DB 0E0H,0A3H,0F2H, 08H,0DFH,0FAH, 80H, 4CH ;.......L
- ;Q04F5: DB 80H,0D2H, 80H,0FAH, 80H,0C6H, 80H,0D4H ;........
- ;Q04FD: DB 80H, 69H, 80H,0F2H, 80H, 33H, 80H, 10H ;.i...3..
- ;Q0505: DB 80H,0A6H, 80H,0EAH, 80H, 9AH, 80H,0A8H ;........
- ;Q050D: DB 80H,0DAH, 80H,0E2H, 80H,0CAH, 80H, 33H ;.......3
- ;Q0515: DB 89H, 82H, 8AH, 83H,0ECH,0FAH,0E4H, 93H ;........
- ;Q051D: DB 0A3H,0C8H,0C5H, 82H,0C8H,0CCH,0C5H, 83H ;........
- ;Q0525: DB 0CCH,0F0H,0A3H,0C8H,0C5H, 82H,0C8H,0CCH ;........
- ;Q052D: DB 0C5H, 83H,0CCH,0DFH,0E9H,0DEH,0E7H, 80H ;........
- ;Q0535: DB 0DH, 89H, 82H, 8AH, 83H,0E4H, 93H,0A3H ;........
- ;Q053D: DB 0F6H, 08H,0DFH,0F9H ;....
- Q04A5: MOV A,@R1
- INC R1
- MOV @R0,A
- INC R0
- DJNZ R7,Q04A5
- SJMP Q04F3
- Q04AD: MOV A,@R1
- INC R1
- MOVX @R0,A
- INC R0
- DJNZ R7,Q04AD
- SJMP Q04F3
- Q04B5: MOV DPL,R0
- MOV DPH,R4
- Q04B9: MOV A,@R1
- INC R1
- MOVX @DPTR,A
- INC DPTR
- DJNZ R7,Q04B9
- SJMP Q04F3
- Q04C1: MOVX A,@R1
- INC R1
- MOV @R0,A
- INC R0
- DJNZ R7,Q04C1
- SJMP Q0541
- Q04C9: MOVX A,@R1
- INC R1
- MOVX @R0,A
- INC R0
- DJNZ R7,Q04C9
- SJMP Q0541
- Q04D1: MOV DPL,R0
- MOV DPH,R4
- Q04D5: MOVX A,@R1
- INC R1
- MOVX @DPTR,A
- INC DPTR
- DJNZ R7,Q04D5
- SJMP Q0541
- Q04DD: MOV DPL,R1
- MOV DPH,R2
- Q04E1: MOVX A,@DPTR
- INC DPTR
- MOV @R0,A
- INC R0
- DJNZ R7,Q04E1
- SJMP Q0541
- Q04E9: MOV DPL,R1
- MOV DPH,R2
- Q04ED: MOVX A,@DPTR
- INC DPTR
- MOVX @R0,A
- INC R0
- DJNZ R7,Q04ED
- Q04F3: SJMP Q0541
- SJMP Q04C9
- SJMP Q04F3
- SJMP Q04C1
- SJMP Q04D1
- SJMP Q0568
- SJMP Q04F3
- SJMP Q0536
- SJMP Q0515
- SJMP Q04AD
- SJMP Q04F3
- SJMP Q04A5
- SJMP Q04B5
- SJMP Q04E9
- SJMP Q04F3
- SJMP Q04DD
- SJMP Q0548
- Q0515: MOV DPL,R1
- MOV DPH,R2
- MOV A,R4
- MOV R2,A
- Q051B: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R4
- XCH A,DPH
- XCH A,R4
- MOVX @DPTR,A
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R4
- XCH A,DPH
- XCH A,R4
- DJNZ R7,Q051B
- DJNZ R6,Q051B
- SJMP Q0543
- Q0536: MOV DPL,R1
- MOV DPH,R2
- Q053A: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOV @R0,A
- INC R0
- DJNZ R7,Q053A
- ;==========================================================================
- Q0541: MOV A,R4
- MOV R2,A
- MOV R1,B
- MOV A,R5
- MOV R3,A
- RET
- ;==========================================================================
- ;Q0548: DB 89H, 82H, 8AH, 83H,0ECH,0FAH,0E0H,0A3H ;........
- ;Q0550: DB 0C8H,0C5H, 82H,0C8H,0CCH,0C5H, 83H,0CCH ;........
- ;Q0558: DB 0F0H,0A3H,0C8H,0C5H, 82H,0C8H,0CCH,0C5H ;........
- ;Q0560: DB 83H,0CCH,0DFH,0EAH,0DEH,0E8H, 80H,0DBH ;........
- ;Q0568: DB 89H, 82H, 8AH, 83H,0E4H, 93H,0A3H,0F2H ;........
- ;Q0570: DB 08H,0DFH,0F9H, 80H,0CCH ;.....
- Q0548: MOV DPL,R1
- MOV DPH,R2
- MOV A,R4
- MOV R2,A
- Q054E: MOVX A,@DPTR
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R4
- XCH A,DPH
- XCH A,R4
- MOVX @DPTR,A
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R4
- XCH A,DPH
- XCH A,R4
- DJNZ R7,Q054E
- DJNZ R6,Q054E
- SJMP Q0543
- Q0568: MOV DPL,R1
- MOV DPH,R2
- Q056C: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOVX @R0,A
- INC R0
- DJNZ R7,Q056C
- SJMP Q0541
- ;==========================================================================
- Q0575: MOV B,R0
- MOV A,R7
- JZ Q057B
- INC R6
- Q057B: ORL A,R6
- JZ Q0541
- MOV B,R0
- MOV A,R5
- ADD A,#02H
- CJNE A,#04H,Q0586
- Q0586: JNC Q0541
- MOV DPL,A
- MOV A,R3
- ADD A,#02H
- CJNE A,#04H,Q0590
- Q0590: JNC Q0541
- RL A
- RL A
- ORL A,DPL
- RL A
- MOV DPTR,#04F5H
- JMP @A+DPTR
- ;==========================================================================
- Q059B: CJNE R3,#01H,Q05A4
- MOV DPL,R1
- MOV DPH,R2
- MOVX A,@DPTR
- RET
- ;==========================================================================
- Q05A4: JNC Q05A8
- MOV A,@R1
- RET
- ;==========================================================================
- Q05A8: CJNE R3,#0FEH,Q05AD
- MOVX A,@R1
- RET
- ;==========================================================================
- Q05AD: MOV DPL,R1
- MOV DPH,R2
- CLR A
- MOVC A,@A+DPTR
- RET
- ;==========================================================================
- Q05B4: MOV A,R3
- SUBB A,R7
- MOV B,A
- MOV A,R2
- SUBB A,R6
- ORL B,A
- MOV A,R1
- SUBB A,R5
- ORL B,A
- MOV A,R4
- XRL A,#80H
- XCH A,R0
- XRL A,#80H
- SUBB A,R0
- ORL A,B
- RET
- ;==========================================================================
- ;主程序
- Q05CA: MOV R0,#7FH
- CLR A
- Q05CD: MOV @R0,A
- DJNZ R0,Q05CD
- MOV SP,#5DH ;設置系統堆棧
- LJMP Q0611
- ;==========================================================================
- Q05D6: LJMP Q0026
- ;==========================================================================
- Q05D9: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOV R0,A
- Q05DD: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- JC Q05E5
- MOV @R0,A
- SJMP Q05E6
- ;==========================================================================
- Q05E5: MOVX @R0,A
- Q05E6: INC R0
- DJNZ R7,Q05DD
- SJMP Q0614
- ;==========================================================================
- Q05EB: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOV R0,A
- ANL A,#07H
- ADD A,#0CH
- XCH A,R0
- CLR C
- RLC A
- SWAP A
- ANL A,#0FH
- ORL A,#20H
- XCH A,R0
- MOVC A,@A+PC
- JC Q0603
- CPL A
- ANL A,@R0
- SJMP Q0604
- ;==========================================================================
- Q0603: ORL A,@R0
- Q0604: MOV @R0,A
- DJNZ R7,Q05EB
- SJMP Q0614
- ;==========================================================================
- Q0609: DB 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H ;......@. 位碼表
- ;==========================================================================
- Q0611: MOV DPTR,#06C0H ;Table
- Q0614: CLR A
- MOV R6,#01H
- MOVC A,@A+DPTR
- JZ Q05D6
- INC DPTR
- MOV R7,A
- ANL A,#3FH
- JNB ACC.5,Q062A
- ANL A,#1FH
- MOV R6,A
- CLR A
- MOVC A,@A+DPTR
- INC DPTR
- JZ Q062A
- INC R6
- Q062A: XCH A,R7
- ANL A,#0C0H
- ADD A,ACC
- JZ Q05D9
- JC Q05EB
- CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOV R2,A
- CLR A
- MOVC A,@A+DPTR
- INC DPTR
- MOV R0,A
- Q063B: CLR A
- MOVC A,@A+DPTR
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R2
- XCH A,DPH
- XCH A,R2
- MOVX @DPTR,A
- INC DPTR
- XCH A,R0
- XCH A,DPL
- XCH A,R0
- XCH A,R2
- XCH A,DPH
- XCH A,R2
- DJNZ R7,Q063B
- DJNZ R6,Q063B
- SJMP Q0614
- ;==========================================================================
- Q0656: CLR A
- MOV R7,A
- MOV 55H,A
- SETB P2.0 ;計數器使能
- MOV P1,#0FFH ;590使能
- Q065F: MOV P0,#0FFH ;1602LCD驅動端口
- CLR P2.1 ;儲存器使能
- MOV A,#39H
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV P1,A ;590使能
- MOV P1,A ;590使能
- SETB P2.1 ;儲存器使能
- MOV A,#41H
- ADD A,R7
- MOV R0,A
- MOV @R0,P0 ;590讀取端口
- MOV A,#41H
- ADD A,R7
- MOV R0,A
- MOV @R0,P0 ;590讀取端口
- CLR P2.1 ;儲存器使能
- INC R7
- CJNE R7,#04H,Q065F
- CLR A
- MOV 45H,A
- Q0684: MOV A,R7
- CLR C
- SUBB A,#08H
- JNC Q06AB
- MOV P0,#0FFH ;1602LCD驅動端口
- CLR P2.1 ;儲存器使能
- MOV A,#39H
- ADD A,R7
- MOV R0,A
- MOV A,@R0
- MOV P1,A ;590使能
- MOV P1,A ;590使能
- SETB P2.1 ;儲存器使能
- MOV A,#41H
- ADD A,R7
- MOV R0,A
- MOV @R0,P0 ;590讀取端口
- MOV A,#41H
- ADD A,R7
- MOV R0,A
- MOV @R0,P0 ;590讀取端口
- CLR P2.1 ;儲存器使能
- INC R7
- SJMP Q0684
- ;==========================================================================
- Q06AB: CLR A
- MOV 49H,A
- SETB P2.0 ;計數器使能
- SETB P2.0 ;計數器使能
- SETB P2.0 ;計數器使能
- MOV P1,#0FFH ;590使能
- CLR P2.0 ;計數器使能
- CLR P2.0 ;計數器使能
- CLR P2.0 ;計數器使能
- SETB P2.0 ;計數器使能
- RET
- ;==========================================================================
- ;數據表格
- Q06C0: DB 14H, 25H, 46H, 72H, 65H, 71H, 75H, 65H ;.%Freque
- Q06C8: DB 6EH, 63H, 79H, 00H, 00H, 00H, 00H, 00H ;ncy.....
- Q06D0: DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 10H ;........
- Q06D8: DB 00H, 04H, 41H, 00H, 00H, 00H, 00H, 04H ;..A.....
- Q06E0: DB 45H, 00H, 00H, 00H, 00H, 08H, 39H,0FEH ;E.....9.
- Q06E8: DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH, 04H ;.......
- Q06F0: DB 0CH, 00H, 00H, 00H, 00H, 04H, 08H, 00H ;........
- Q06F8: DB 00H, 00H, 00H, 14H, 11H, 00H, 00H, 00H ;........
- Q0700: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........
- Q0708: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........
- Q0710: DB 00H, 00H ;..
- ;==========================================================================
- Q0712: MOV 55H,R7
- CLR A
- MOV 56H,A
- CLR P2.7 ;LCD_EN
- MOV R7,#0CH
- LCALL Q07F8
- MOV A,55H
- JNZ Q0726
- MOV R7,#80H
- SJMP Q0728
- ;==========================================================================
- Q0726: MOV R7,#0C0H
- Q0728: LCALL Q07F8
- CLR A
- MOV 56H,A
- Q072E: LCALL Q059B
- MOV R7,A
- JZ Q0745
- SETB C
- SUBB A,#15H
- JC Q0745
- LCALL Q0800
- MOV A,#01H
- ADD A,R1
- MOV R1,A
- CLR A
- ADDC A,R2
- MOV R2,A
- SJMP Q074A
- ;==========================================================================
- Q0745: CLR A
- MOV R7,A
- LCALL Q0800
- Q074A: MOV R7,#32H
- MOV R6,#00H
- LCALL Q0773
- INC 56H
- MOV A,56H
- CLR C
- SUBB A,#10H
- JC Q072E
- MOV R7,#02H
- LCALL Q07F8
- SETB P2.7 ;LCD_EN
- RET
- ;==========================================================================
- ;向LCD寫入一個字節的數據
- Q0762: CLR P2.6 ;LCD_RW 選擇寫入
- MOV P0,R7 ;1602LCD驅動端口
- MOV R7,#05H
- MOV R6,#00H
- LCALL Q0773
- SETB P2.7 ;LCD_EN 寫入時序
- MOV R7,#05H
- MOV R6,#00H
- Q0773: SETB C
- MOV A,R7
- SUBB A,#00H
- MOV A,R6
- SUBB A,#00H
- JC Q0790 ;LCD程序返回
- MOV R5,#6EH
- MOV R4,#00H
- Q0780: MOV A,R5
- DEC R5
- JNZ Q0785
- DEC R4
- Q0785: MOV A,R5
- ORL A,R4
- JNZ Q0780
- MOV A,R7
- DEC R7
- JNZ Q0773
- DEC R6
- SJMP Q0773
- ;==========================================================================
- Q0790: RET ;LCD程序返回
- ;==========================================================================
- Q0791: MOV SCON,#50H ;傳口工作方式1,允許中斷接受
- MOV TCON,#40H ;控制寄存器
- MOV TMOD,#20H ;T1工作方式2 串口1選擇定時器1為波特率發生器
- MOV TL1,#0F3H ;波特率4800 @24MHz 4800bps@24.000MHz
- MOV TH1,#0F3H
- SETB TR1 ;打開定時器1
- CLR A ; 清除累加器A
- MOV IP,A ;中斷優先級控制寄存器清零
- MOV IE,A ;中斷允許控制寄存器清零
- MOV PCON,A ;PCON是電源和波特率選擇項 波特率不倍速
- SETB REN ;允許串行接收控制位
- SETB ES ;打開串口中斷
- SETB TR1 ;打開定時器1
- SETB IT0 ;邊沿觸發 //設置INT0的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
- SETB EX0 ;外部中斷0開
- SETB EA ;打開總中斷
- SETB EA ;打開總中斷
- RET
- ;==========================================================================
- ;初始化LCD屏
- Q07B8: CLR P2.7 ;LCD_EN
- MOV R7,#38H ;開顯示
- LCALL Q07F8 ;向LCD寫入一個字節的命令數據
- MOV R7,#0FH
- LCALL Q07F8 ;向LCD寫入一個字節的命令數據
- MOV R7,#06H ;寫一個指針加1
- LCALL Q07F8 ;向LCD寫入一個字節的命令數據
- MOV R7,#01H ;清屏
- LCALL Q07F8 ;向LCD寫入一個字節的命令數據
- SETB P2.7 ;LCD_EN
- MOV R7,#05H
- MOV R6,#00H
- LJMP Q0773
- ;==========================================================================
- Q07D7: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........
- Q07DF: DB 00H, 00H, 00H, 00H ;, 30H, 98H, 02H,0C2H ;....0...
- ;Q07E7: DB 98H, 30H, 99H, 02H,0C2H, 99H, 32H ;.0....2
- ;串行中斷子程序
- Q07E3: JNB RI,Q07E8
- CLR RI
- Q07E8: JNB TI,Q07ED
- CLR TI
- Q07ED: RETI
- ;==========================================================================
- Q07EE: CLR TI
- MOV SBUF,R7 ;將數據傳送給計算機
- JNB TI,$
- CLR TI
- RET
- ;==========================================================================
- Q07F8: CLR P2.5 ;LCD_RS 寫入命令
- LCALL Q0762 ;向LCD寫入一個字節的數據
- CLR P2.7 ;LCD_EN 使能清零
- RET
- ;==========================================================================
- Q0800: SETB P2.5 ;LCD_RS 寫入數據
- LCALL Q0762 ;向LCD寫入一個字節的數據
- CLR P2.7 ;LCD_EN 使能清零
- RET
- ;==========================================================================
復制代碼 |