?? ok.asm
字號:
LED1 EQU 30H ;定義變量
LED2 EQU 31H
LED3 EQU 32H
TEMP EQU 33H
ORG 0000H
JMP START
ORG 0013H
JMP ADINT
ORG 0030H
START:
MOV DPTR,#07FF8H ;A/D轉換初始化
SETB IT1
SETB EA
SETB EX1
MOVX @DPTR,A ;啟動轉換
JMP $
MUL21:
MOV R3,#0F4H
MOV R2,#01H
MOV R7,TEMP
MOV A,R3
MOV B,R7
MUL AB
MOV R5,B
MOV R6,A
MOV A,R2
MOV B,R7
MUL AB
ADD A,R5
MOV R5,A
CLR A
ADDC A,B
MOV R4,A
RET
DIV31:
CLR C
MOV R7,#0FFH
MOV A,R4
SUBB A,R7
JC DV30
SETB OV ;商溢出
RET
DV30: MOV R2,#10H ;求R4R5R6/R7→R5R6
DM23: CLR C
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DM24
MOV R4,A
INC R6
DM24: DJNZ R2,DM23
MOV A,R4 ;四舍五入
ADD A,R4
JC DM25
SUBB A,R7
JC DM26
DM25: INC R6
MOV A,R6
JNZ DM26
INC R5
DM26: CLR OV
RET ;商在R5R6中
BCDC: ;雙字節16進制數轉BCD碼
MOV R0,#3
MOV R1,#32H
LOOP:
MOV A,R5
SWAP A
ANL A,#0FH ;取R6高四位
MOV B,#10
DIV AB
SWAP A
XCH A,R5
ANL A,#0FH
XCH A,B
SWAP A
ORL A,B ;余數作高四位與R6低四位拼成字節
MOV B,#10
DIV AB
ORL A,R5
MOV R5,A
MOV A,B
SWAP A
MOV B,A
MOV A,R6
SWAP A
ANL A,#0FH
ORL A,B
MOV B,#10
DIV AB
SWAP A
XCH A,R6
ANL A,#0FH
XCH A,B
SWAP A
ORL A,B
MOV B,#10
DIV AB
ORL A,R6
MOV R6,A
MOV @R1,B
DEC R1
DJNZ R0,LOOP
RET
DISP:
MOV DPTR,#TABLE2
MOV A,LED1
MOVC A,@A+DPTR
MOV LED1,A
MOV DPTR,#TABLE1
MOV A,LED2
MOVC A,@A+DPTR
MOV LED2,A
MOV DPTR,#TABLE1
MOV A,LED3
MOVC A,@A+DPTR
MOV LED3,A
CLR P2.0
MOV P1,LED1
CALL DELAY
SETB P2.0
CLR P2.1
MOV P1,LED2
CALL DELAY
SETB P2.1
CLR P2.2
MOV P1,LED3
CALL DELAY
SETB P2.2
RET
DELAY: ;延時10ms
MOV R7,#20
DL: MOV R6,#250
DJNZ R6,$
DJNZ R7,DL
RET
ADINT: ;中斷服務程序
PUSH PSW
PUSH ACC
MOVX A,@DPTR
MOV TEMP,A
CALL MUL21
CALL DIV31
CALL BCDC
CALL DISP
CALL DELAY
MOVX @DPTR,A
POP ACC
POP PSW
RETI
TABLE1:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TABLE2:
DB 0bfH,86H,0dbH,0cfH,0e6H,0edH,0fdH,87H,0ffH,0efH ;帶點的0-9
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -