?? dianyayuan.asm
字號:
ORG 0000H
LJMP MAIN
ORG 0030H
;******************
;初始化變量
;******************
MAIN: MOV R0,#30H
MOV R7,#10H
MOV P3,#00H
CLR C
MOV 00H,C
LOOP: MOV @R0,#00H
INC R0
DJNZ R7,LOOP
MOV R1,#2FH
LOOP1: LCALL DISPLAY
LCALL SHUCHU;電壓D/A轉(zhuǎn)換輸出
JNB P1.0,WEIXUAN;進(jìn)入位選狀態(tài)
JNB P1.2,JIA;進(jìn)入加狀態(tài)
JNB P1.3,JIAN;進(jìn)入減狀態(tài)
AJMP LOOP1
;******************
;位選程序
;******************
WEIXUAN:LCALL DISPLAY
JNB P1.0,WEIXUAN;去抖動
INC R1
MOV A,R1
CJNE A,#34H,LOP1
MOV R1,#30H
LOP1: JNB P1.1,DUANXUAN;進(jìn)入段選狀態(tài)
JNB P1.0,WEIXUAN;進(jìn)入位選狀態(tài)
LCALL DISPLAY
JNB P1.4,LOP2; 進(jìn)入確定狀態(tài)
AJMP LOP1
LOP2: JNB P1.4,LOP2;去抖動
MOV R1,#2FH
AJMP LOOP1
;******************
;段選程序
;******************
DUANXUAN:LCALL DISPLAY
JNB P1.1,DUANXUAN;去抖動
MOV A,R1
MOV R0,A
MOV A,@R0
INC A
CJNE A,#10,L1
MOV A,#00H
L1: MOV @R0,A
LCALL DISPLAY
AJMP LOP1
;******************
;加1程序
;******************
JIA: LCALL DISPLAY
JNB P1.2,JIA;去抖動
MOV A,30H
JZ Y4
AJMP MAIN
Y4: CLR C
MOV A,33H
ADD A,#5
ACALL BIJIAO1
MOV 33H,A
MOV C,00H
MOV A,32H
ADDC A,#00H
MOV 00H,C;存進(jìn)位
ACALL BIJIAO1
MOV 32H,A
MOV C,00H
MOV A,31H
ADDC A,#00H
MOV 00H,C;存進(jìn)位
ACALL BIJIAO1
MOV 31H,A
MOV A,#00H
ADDC A,#00H
MOV 30H,A
Y3: AJMP LOOP1
BIJIAO1:CJNE A,#0AH,Y1
MOV A,#00H
SETB C
MOV 00H,C
AJMP Y2
Y1: CLR C
Y2: RET
;******************
;減1程序
;******************
JIAN: LCALL DISPLAY
JNB P1.3,JIAN;去抖動
MOV A,30H
JNZ Y7
MOV A,31H
JNZ Y7
MOV A,32H
JNZ Y7
MOV A,33H
JNZ Y7
MOV 30H,#01H
AJMP LOOP1
Y7: CLR C
MOV A,33H
SUBB A,#5
JZ Y8
MOV A,#05H
Y8: MOV 33H,A
MOV A,32H
SUBB A,#00H
ACALL BIJIAO2
MOV 32H,A
MOV A,31H
SUBB A,#00H
ACALL BIJIAO2
MOV 31H,A
MOV A,30H
SUBB A,#00H
MOV 30H,A
AJMP LOOP1
BIJIAO2:JNC Y9
MOV A,#09H
Y9: RET
;******************
;電壓D/A轉(zhuǎn)換輸出子程序
;******************
SHUCHU: SETB RS0
MOV A,30H
JZ Y5
MOV A,#200
AJMP Y6
Y5: MOV A,30H
SWAP A
ORL A,31H
MOV B,#20
MUL AB
MOV 45H,A
MOV A,32H
MOV B,#2
MUL AB
ADD A,45H
MOV 45H,A
MOV A,33H
MOV B,#5
DIV AB
ADD A,45H
MOV 45H,A
Y6: MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV P3,A
CLR RS0
ACALL CLZ;調(diào)用電壓測量值子程序
RET
;******************
;調(diào)用電壓測量值子程序
;******************
CLZ: MOV 48H,A
MOV R0,#34H
MOV R6,#4
LOOP7: MOV B,#10
MUL AB
MOV 62H,A
MOV A,B
MOV @R0,A
ADD A,62H
MOV 63H,A
MOV A,@R0
ADDC A,#00H
MOV @R0,A
MOV A,63H
INC R0
DJNZ R6,LOOP7
RET
;******************
;顯示子程序
;******************
DISPLAY:MOV A,#01H
MOV R7,#8
MOV R0,#30H
LOOP2: MOV P2,A
MOV 10H,A
MOV A,@R0
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV 60H,A
MOV A,R0
CJNE A,#31H,M1
M3: MOV A,60H
ANL A,#7FH
MOV 60H,A
AJMP M2
M1: CJNE A,#34H,M2
AJMP M3
M2: MOV P0,60H
LCALL DS1MS
INC R0
MOV A,10H
RL A
MOV 10H,A
DJNZ R7,LOOP2
RET
;******************
;延時1ms子程序
;******************
DS1MS: MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#18H
SETB TR0
LOOP3: JBC TF0,NOOP
SJMP LOOP3
NOOP: CLR TR0
RET
TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
TAB2: DB 00H, 01H, 03H, 04H, 05H, 06H, 08H, 09H, 0AH, 0BH
DB 0DH, 0EH, 0FH, 11H, 12H, 13H, 14H, 16H, 17H, 18H
DB 1AH, 1BH, 1CH, 1DH, 1FH, 20H, 21H, 22H, 24H, 25H
DB 26H, 28H, 29H, 2AH, 2BH, 2DH, 2EH, 2FH, 30H, 32H
DB 33H, 34H, 36H, 37H, 38H, 39H, 3BH, 3CH, 3DH, 3EH
DB 40H, 41H, 42H, 44H, 45H, 46H, 47H, 49H, 4AH, 4BH
DB 4DH, 4EH, 4FH, 50H, 52H, 53H, 54H, 55H, 57H, 58H
DB 59H, 5BH, 5CH, 5DH, 5EH, 60H, 61H, 62H, 63H, 65H
DB 66H, 67H, 69H, 6AH, 6BH, 6CH, 6EH, 6FH, 70H, 71H
DB 73H, 74H, 75H, 77H, 78H, 79H, 7AH, 7CH, 7DH, 7EH
DB 80H, 81H, 82H, 83H, 85H, 86H, 87H, 88H, 8AH, 8BH
DB 8CH, 8EH, 8FH, 90H, 91H, 93H, 94H, 95H, 96H, 98H
DB 99H, 9AH, 9CH, 9DH, 9EH, 9FH, 0A1H,0A2H,0A3H,0A4H
DB 0A6H,0A7H,0A8H,0AAH,0ABH,0ACH,0ADH,0AFH,0B0H,0B1H
DB 0B2H,0B4H,0B5H,0B6H,0B8H,0B9H,0BAH,0BBH,0BDH,0BEH
DB 0BFH,0C1H,0C2H,0C3H,0C4H,0C6H,0C7H,0C8H,0C9H,0CBH
DB 0CCH,0CDH,0CFH,0D0H,0D1H,0D2H,0D3H,0D5H,0D6H,0D7H
DB 0D9H,0DAH,0DBH,0DDH,0DEH,0DFH,0E0H,0E2H,0E3H,0E4H
DB 0E5H,0E7H,0E8H,0E9H,0EBH,0ECH,0EDH,0EEH,0F0H,0F1H
DB 0F2H,0F4H,0F5H,0F6H,0F7H,0F9H,0FAH,0FBH,0FCH,0FEH,0FFH
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -