led_show.asm

来自「LED显示」· 汇编 代码 · 共 80 行

ASM
80
字号
	DATA_BUF BQU 30H
	POL equ P1.3    	;符号位
	CTRL_Pin1 equ P2.1	  ;万位选通端
	CTRL_Pin2 equ P2.2	  ;千位选通端
    CTRL_Pin3 equ P2.3	  ;百位选通端
    CTRL_Pin4 equ P2.0	  ;十位选通端
    CTRL_Pin5 equ P2.4    ;个位选通端
	
 ;--------------------------------------------------------------------------------------------------
 		ORG 0000H
		LJMP START
		ORG 0080H
START:	LCALL LED_SHOW
		SJMP $
LED_SHOW:	PUSH ACC			 ;保护现场		
			PUSH DPH
			PUSH DPL				

LOOP1:		CLR  CTRL_Pin5
			MOV	A,DATA_BUF		  ;万位调整
			ANL		A,#0FH

			MOV C,POL			  ;取出符号
			JC	SHOW_positive	  ;是正电压?
		;	CLR	7FH				  设负电压标志
		
			MOV A,#11				;置负1偏移量
			LCALL Get_LED
			MOV P0,A				;万位显示值设置---负1
			SETB  CTRL_Pin1
			SJMP NEXT1

SHOW_positive:	LCALL Get_LED
				MOV P0,A		  万;万位显示值设置——正1或0
				SETB CTRL_Pin1
				SJMP NEXT1

NEXT1:		CLR  CTRL_Pin1
			MOV	A,DATA_BUF+1		  ;千位调整
			SWAP A					
			ANL		A,#0FH
			LCALL Get_LED
			MOV P0,A			  ;千位显示值设置
			SETB  CTRL_Pin2
			
			CLR  CTRL_Pin2
			MOV	A,DATA_BUF+1		  ;百位调整
			ANL		A,#0FH
			LCALL Get_LED
			MOV P0,A			  ;百位显示值设置
			SETB  CTRL_Pin3

			CLR  CTRL_Pin3
			MOV	A,DATA_BUF+2		  ;十位调整
			SWAP A					
			ANL		A,#0FH
			LCALL Get_LED
			MOV P0,A			  ;十位显示值设置
			SETB  CTRL_Pin4

			CLR  CTRL_Pin4
			MOV	A,DATA_BUF+2		  ;个位调整
			ANL		A,#0FH
			LCALL Get_LED
			MOV P0,A			  ;个位显示值设置
			SETB  CTRL_Pin5
	
		;	POP DPL
		;	POP DPH
		;	POP ACC			 ;恢复现场		
			SJMP LOOP1

Get_LED:	PUSH	DPH				;读取表值,入口A,出口A
			PUSH	DPL
			MOV DPTR,#TAB1
			MOVC	A,@A+DPTR
			POP		DPL
			POP		DPH
			RET
TAB1:DB		0FAH,87H,0B9H,0ABH,0C3H,6BH,7BH,0A2H,0FBH,0EBH,86H	;分别表示0,1,2,3,4,5,6,7,8,9,-1

⌨️ 快捷键说明

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