八路循環顯示數字電壓表
51hei圖片20200723182724.jpg (250.89 KB, 下載次數: 53)
下載附件
仿真結果
2020-7-23 18:27 上傳
- TEMP EQU 60H
- ORG 0000H
- LJMP START
- ORG 0003H
- RETI
- ORG 000BH
- LJMP INT
- ORG 0013H
- RETI
- ORG 001BH
- RETI
- ORG 0023H
- RETI
- ORG 002BH
- RETI
- CLEARMENIO:
- CLR 00H
- MOV P2,A
- MOV R0,#30H
- MOV R2,#0DH
- LOOPMEM:MOV @R0,A
- INC R0
- DJNZ R2,LOOPMEM ;地址30H到3DH清零
- MOV 20H,#00H ;20H清零
- MOV A,#0FFH
- MOV P0,A
- MOV P1,A ;P0,P1,P3置位
- MOV P3,A
- RET
- START:
- LCALL CLEARMENIO ;初始化
- MOV TMOD,#02H
- MOV TH0,#255
- MOV TL0,#255
- MOV IE,#82H
- SETB TR0
- LCALL CLEARMENIO ;初始化
- DISPLAY:
- MOV R3,#08H ;八路循環顯示
- MOV R0,#30H ;數據地址在70H-77H
- MOV R1,#30H
- MOV 3BH,#00H ;顯示路初值
- ANL P2,#11111000B
- DISLOOP1:
- LCALL TEST
- LCALL TUNBCD ;顯示數據轉化為3位BCD碼存7AH,79H,78H
- MOV R2,#071H ;每路顯示時間為4ms*255,約為1s
- DISLOOP2:
- CLR A
- CLR 00H
- MOV DPTR,#TABLE
- LCALL DISP ;調用四位顯示程序
- LCALL KEYWORK1
- JMP Q1
- TZ3:
- LJMP DISP11
- Q1:
- JB 00H,TZ3
- DJNZ R2,DISLOOP2
- INC R1 ;顯示下一路
- INC 3BH ;通道顯示數加1
- CJNE R3,#08H,M1
- JMP N1
- M1:
- CJNE R3,#07H,M2
- JMP N2
- M2:
- CJNE R3,#06H,M3
- JMP N3
- M3:
- CJNE R3,#05H,M4
- JMP N4
- M4:
- CJNE R3,#04H,M5
- JMP N5
- M5:
- CJNE R3,#03H,M6
- JMP N6
- M6:
- CJNE R3,#02H,M7
- JMP N7
- M7:
- CJNE R3,#01H,M8
- JMP N8
- M8:LJMP DISPLAY
- N1:
- ANL P2,#11111000B
- ORL P2,#00000001B
- JMP TZ
- N2:
- ANL P2,#11111000B
- ORL P2,#00000010B
- JMP TZ
- N3:
- ANL P2,#11111000B
- ORL P2,#00000011B
- JMP TZ
- N4:
- ANL P2,#11111000B
- ORL P2,#00000100B
- JMP TZ
- N5:
- ANL P2,#11111000B
- ORL P2,#00000101B
- JMP TZ
- N6:
- ANL P2,#11111000B
- ORL P2,#00000110B
- JMP TZ
- N7:
- ANL P2,#11111000B
- ORL P2,#00000111B
- JMP TZ
- N8:
- ANL P2,#11111000B
- ORL P2,#00000111B
- JMP TZ
- TZ1:
- LJMP DISLOOP1
- TZ:
- DJNZ R3,TZ1 ;顯示八路
- LJMP START
- DISP11:
- MOV R2,#0FH
- DISLOOP11:
- LCALL TEST
- LCALL TUNBCD
- DISLOOP22:
- LCALL DISP
- LCALL KEYWORK2
- MOV R3,3BH
- Z0:
- CJNE R3,#00H,D0
- JMP O0
- D0:
- CJNE R3,#01H,D1
- JMP O1
- D1:
- CJNE R3,#02H,D2
- JMP O2
- D2:
- CJNE R3,#03H,D3
- JMP O3
- D3:
- CJNE R3,#04H,D4
- JMP O4
- D4:
- CJNE R3,#05H,D5
- JMP O5
- D5:
- CJNE R3,#06H,D6
- JMP O6
- D6:
- CJNE R3,#07H,D7
- JMP O7
- D7:LJMP DISLOOP11
- O0:
- ANL P2,#11111000B
- ORL P2,#00000001B
- JMP TZ5
- O1:
- ANL P2,#11111000B
- ORL P2,#00000001B
- JMP TZ5
- O2:
- ANL P2,#11111000B
- ORL P2,#00000010B
- JMP TZ5
- O3:
- ANL P2,#11111000B
- ORL P2,#00000011B
- JMP TZ5
- O4:
- ANL P2,#11111000B
- ORL P2,#00000100B
- JMP TZ5
- O5:
- ANL P2,#11111000B
- ORL P2,#00000101B
- JMP TZ5
- O6:
- ANL P2,#11111000B
- ORL P2,#00000110B
- JMP TZ5
- O7:
- ANL P2,#11111000B
- ORL P2,#00000111B
- JMP TZ5
- TZ5:
- JNB 00H,TZ2
- DJNZ R2,TZ4
- LJMP DISLOOP11
- INT:
- CPL P3.7
- RETI
- TZ2:
- MOV 3BH,#00H
- LJMP DISLOOP1
- TZ4:
- LJMP DISLOOP11
- TUNBCD:
- MOV A,@R1
- MOV B,#51
- DIV AB
- MOV 3AH,A
- MOV A,B
- CLR F0
- SUBB A,#1AH
- MOV F0,C
- MOV A,#10
- MUL AB
- MOV B,#51
- DIV AB
- JB F0,LOOP2
- ADD A,#5
- LOOP2:
- MOV 39H,A
- MOV A,B
- CLR F0
- SUBB A,#1AH
- MOV F0,C
- MOV A,#10
- MUL AB
- MOV B,#51
- DIV AB
- JB F0,LOOP3
- ADD A,#5
- LOOP3:
- MOV 38H,A
- RET
- TEST:
- MOV R0,#30H
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;30H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;31H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;32H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;33H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;34H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;35H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;36H
- MOV @R0,P0
- CLR P3.4
- INC R0
- SETB P2.6
- CLR P2.6
- JNB P2.7,$
- SETB P3.4 ;37H
- MOV @R0,P0
- CLR P3.4
- RET
- DISP:
- MOV 70H,R1
- PUSH 70H
- MOV P3,#01100001B
- MOV R1,#38H
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- CALL DL10MS
- MOV P3,#01100010B
- MOV R1,#39H
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- CALL DL10MS
- MOV P3,#01100100B
- MOV R1,#3AH
- MOV A,@R1
- MOVC A,@A+DPTR
- ADD A,#10000000B
- MOV P1,A
- CALL DL10MS
- MOV P3,#01101000B
- MOV R1,#3BH
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- POP 70H
- MOV R1,70H
- CALL DL10MS
- RET
- DL10MS:MOV R6,#0FH
- DL1:
- MOV R7,#0FH
- DL2:
- DJNZ R7,DL2
- DJNZ R6,DL1
- RET
- DL1MS:MOV R4,#0FFH
- LOOP11:DJNZ R4,LOOP11
- MOV R4,#0FFH
- LOOP22:DJNZ R4,LOOP22
- RET
- TABLE:
- DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
- KEYWORK1:
- JNB P3.5,KEY1
- KEYOUT:
- RET
- KEY1:
- LCALL DISP ;延時消抖
- JB P3.5,KEYOUT
- WAIT11:
- JNB P3.5,WAIT12
- CPL 00H
- RET
- WAIT12:
- LCALL DISP
- AJMP WAIT11
- KEYWORK2:
- JNB P3.5,KEY1
- JNB P3.6, KEY2
- RET
- KEY2:
- LCALL DISP ;延時消抖
- JB P3.6,KEYOUT
- WAIT22:
- JNB P3.6,WAIT21
- INC 3BH
- MOV A,3BH
- CJNE A,#08H,KEYOUT11
- KEYOUT11:
- JC KEYOUT1
- MOV 3BH,#00H
- KEYOUT1: RET
- WAIT21:
- LCALL DISP ;鍵釋放時等待
- AJMP WAIT22
- END
復制代碼
|