dac0808.asm

来自「基于PROTEUS的仿真 含带源代码 C语言编程」· 汇编 代码 · 共 66 行

ASM
66
字号
MAIN:MOV 30H,#00H
LOOP:JB P2.0,NEXT
LOOP1:MOV R0,#33H;显示缓冲区首地址
      LCALL DISPLAY;调用显示子程序
      JNB P2.0,LOOP1
      INC 30H;+1
NEXT:MOV P3,30H
     MOV A,30H
     LCALL HBCD;调用单字节十六进制数转BCD子程序
     MOV R2,#02H;N个待分离的BCD
     MOV R0,#33H;分离后BCD首地址
     MOV R1,#31H;待分离BCD首地址
     LCALL CBCD;分离压缩的BCD码
     MOV R0,#33H;显示缓冲区首地址
     LCALL DISPLAY;调用显示子程序
     LJMP LOOP

;=========================
HBCD:	MOV	B,#100	
	DIV	AB
	MOV	R3,A
	MOV	A,#10	
	XCH	A,B
	DIV	AB
	SWAP	A
	ORL	A,B
	MOV 31H,R3
	MOV 32H,A
	RET
;======================================
CBCD:MOV A,@R1     ;分离后将占2N个单元
     MOV B,A
     ANL A,#0F0H
     SWAP A
     MOV 4CH,A
     MOV A,B
     ANL A,#0FH
     MOV 4DH,A
     MOV @R0,4CH
     INC R0
     MOV @R0,4DH
     INC R0
     INC R1
     DJNZ R2,CBCD
     RET

;===================================
DISPLAY:MOV R4,#04H;位数选择
        MOV R5,#00H
DISP:MOV A,R5
     SWAP A
     ORL A,@R0
     MOV P0,A
     ACALL DELAY1
     INC R5
     INC R0
     DJNZ R4,DISP
     RET

DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
      DJNZ R6,LOOP11
      RET
;=============================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?