⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ok.asm

📁 ADC0809(中断汇编实现)数字电压表
💻 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 + -