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

📄 adc小数显示.asm

📁 用单片机实现方搏输出
💻 ASM
字号:
       ;  SJ EQU 40H
         ORG 0100H
	 LJMP MAIN
	; ORG 0013H
	; LJMP INT

MAIN:   /* SETB EA
         CLR EX0
         SETB EX1
         CLR IT1*/

LOOP:    MOV DPTR,#7FF8H  ;送入地址
         MOVX @DPTR,A      ;启动AD转换
         MOV R6,#09H       ;延时等待
DELAY:   NOP
         NOP
         DJNZ R6,DELAY
         MOVX A,@DPTR  ;数据送入累加器
         CALL XSZH
         mov p0,#00
	 lCALL DISPLAY
	 JMP LOOP
;*********************************************************
;               一位小数转换子程序(转换成显码)
;入口数据存放在累加器A中(8位有效数),中间寄存器有: B,R0,R1
;出口显示: 共阳极数码管,显示数据个位存放R0 中,十分位存放R1中
;
;;********************************************************
XSZH:  MOV B,#2H     ;V0扩大100倍,即5.0----〉(256~250)*2
        MUL AB        ;乘法A*B=BA
        MOV R2,B         
        CJNE R2,#00H,SS   ;判断是否存在进位
        MOV R0,#00H        ;无进位时R0,R1的值
        MOV R1,#00H
        JMP SSS
SS:    MOV R0,#2H         ;有进位时R0,R1的值
        MOV R1,#5H
SSS:   MOV B,#0AH         ;缩小10倍
        DIV AB              ;A/B=A....B
	NOP
        NOP
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       /* PUSH ACC
        MOV R4,B
        MOV A,R4
	SUBB A,#03
	MOV R4,A
	POP ACC*/
        ADD A,R1           ;并修正十分位
        MOV B,#0AH         ;再缩小10倍
        DIV AB
        NOP
	NOP
	ADD A,R0            ;修正个位
        MOV R0,A            ;个位存在R0
        MOV R1,B            ;十分位存在R1
              
DL0:   MOV  A,R0              ;取个位,
       ACALL TABLE0           ;转换为显码
       MOV 33H,A          ;送显码输出
       mov a,#00
       MOV A,R1             ;取十分位
       ACALL TABLE           ;转换为显码       
       MOV 34H,A           ;送显码输出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       MOV A,R4
       CALL TABLE0
       MOV 35H,A
       RET
;******************************************
;
;
;******************************************
TABLE:  INC  A                  ;读十分位表
        MOVC A,@A+PC
	;MOV DPTR,#SHI      
        ;MOVC A,@A+DPTR
        RET
SHI:DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H  ;十分位表*/

TABLE0:  INC A                                  ;读个位表
         MOVC A,@A+PC
	 ;MOV DPTR,#GW
         ;MOVC A,@A+DPTR
         RET
GW:DB   40H,079H,024H,030H,19H,12H,2H,078H,0FFH,10H  ;个位表

  

;******************************************;
;       LED 显示子程序
;   显示缓冲区为33H--35H
;******************************************;
DISPLAY: 
         MOV A,33H ;
       	; DA A
         MOV P1,A      ;送至P1口进行显示
         SETB P3.0
         CLR P3.1
	 
         LCALL DELAY1
         MOV A,34H 
	 ;DA A
         MOV P1,A
         SETB P3.1
         CLR P3.0
	  
         LCALL DELAY1
	 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	/*  MOV A,35H 
	 ;DA A
         MOV P1,A
         SETB P3.2
         CLR P3.0
	 CLR P3.1 
         LCALL DELAY1*/
 	 RET	
;****************************************
;延时程序
;****************************************
DELAY1:   MOV R5,#01H    ;延时子程序
       D: MOV R3,#0FFH
       E: DJNZ R3,E
          DJNZ R5,D
          RET 
DELAY2:   MOV R5,#01H    ;延时子程序
       X: MOV R3,#0E2H
       Z: DJNZ R3,Z
          DJNZ R5,X
          RET 
 END

⌨️ 快捷键说明

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