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

📄 dyb.asm

📁 我找的一个小设计,希望对初学者有一定的帮助
💻 ASM
字号:
        ORG 0000H
        CE EQU P0.4    ;伪指令定义ISD25120管脚
        PD EQU P0.5
        PR EQU P0.7
        EOM EQU P0.6
        AJMP MAIN
MAIN:   MOV 20H,#00H   ;定义按键防抖动寄存器初值
        LCALL CAIJI    ;调用数据采集子程序 
        LCALL TV       ;调用显示子程序
        AJMP MAIN


;*****************************************************************
;
;                   以下为子程序
;
;*****************************************************************

;*******************************************************
;        电压采集程序 CAIJI 
;       输入数据:P1.3-P1.0
;       位选:P1.7-P1.4
;       出口参数:数据存放在10H-13H
;******************************************************
          
CAIJI:     MOV R3,#01FH;循环采集次数
 CAI:      MOV P0,#0FH;屏蔽高位
           MOV P1,#0FFH
           NOP
           MOV A,P1
           JB ACC.4,LOOP1;判断是否千位
           JB ACC.5,LOOP2;判断是否百位
           JB ACC.6,LOOP3;判断是否十位
           JB ACC.7,LOOP4;判断是否个位
           AJMP LOOP5
LOOP1:     MOV  13H,A;千位值放入13H中
           AJMP LOOP5
LOOP2:     MOV 12H,A;百位值放入12H中
           AJMP LOOP5
LOOP3:     MOV 11H,A;十位值放入11H中
           AJMP LOOP5
LOOP4:     MOV 10H,A;个位值放入10H中
LOOP5:     LCALL DELAY1
           DJNZ R3,CAI 
	       NOP
           RET

;************************************************************
;           显示子程序 TV
;            入口参数:10H-13H
;*************************************************************

TV:     MOV P1,#0FH;定义P1口为输入
        MOV P0,10H;
        MOV P3,#0F7H;显示个位
        LCALL DELAY1;延时
        MOV P0,11H
        MOV P3,#0BH;显示十位
        LCALL DELAY1
        MOV P0,12H
        MOV P3,#0FDH;显示百位
        LCALL DELAY1
        MOV P0,13H
        MOV P3,#0FEH;显示千位
        LCALL DELAY1
        NOP
KEY:    INC 20H
        JNB P3.4,HH;判断是否有读音键按下
        LJMP TV
 HH:    MOV A,20H
        CJNE A,#30H,KEY;去抖动
        LCALL DELAY
        LCALL DUYIN;有键按下,调用读音程序
        RET

;**********************************************************
;               延时程序
;           DELAY1-延时1MS
;           DELAY-延时0.1s
;***********************************************************
DELAY1: MOV R7,#02H
  K1:   MOV R6,#0FFH
  K2:   DJNZ R6,K2
        DJNZ R7,K1
	    RET
DELAY:  MOV R7,#0FFH
  K5:   MOV R6,#0FFH
  K6:   DJNZ R6,K6
        DJNZ R7,K5
	    RET
;******************************************
;
;       读音程序 DUYIN
;       入口参数:要读数据放入10H-13H中
;
;******************************************

DUYIN:     ANL 10H,#0FH
           ANL 11H,#0FH
           ANL 12H,#0FH
           ANL 13H,#0FH;屏蔽高位
           MOV R2,#04H;地址转换4次
           MOV R1,20H;转换后地址放入20H-23H中
           MOV R0,#10H;数据放在10H-13H中
           MOV A,@R0 ;数据给A
           MOV DPTR,#TABLE
           MOVC A,@A+DPTR;查表
           MOV @R1,A;送数
           INC R0
           DJNZ R2,DUYIN
;***************************************************************
           MOV R2,#00H
           LCALL DUYIN1;读“现在电压”
           LCALL DELAY
;*************************************************************
           MOV R2,23H
           LCALL DUYIN1;读千位
           LCALL DELAY
;***************************************************************
           MOV R2,22H
           LCALL DUYIN1;读百位
           LCALL DELAY
;****************************************************************
           MOV R2,#6EH
           LCALL DUYIN1;读小数点
           LCALL DELAY
;****************************************************************
           MOV R2,21H
           LCALL DUYIN1;读十位
           LCALL DELAY
;****************************************************************
           MOV R2,20H
           LCALL DUYIN1;读个位
           LCALL DELAY
;********************************************************************
           MOV R2,#78H
           LCALL DUYIN1;读“伏与谢谢使用,请加测试电压”
           LCALL DELAY
           RET
;********************************************************************
DUYIN1:  CLR PR
	     NOP
	     NOP
         SETB PR
         NOP
         NOP
         MOV P2,R2
	     NOP
	     NOP
        CLR PD
        NOP
        NOP
        SETB CE
        NOP
        NOP
        CLR CE
	    NOP
	    NOP
	    NOP
        SETB CE
        NOP
  K9:   JNB P0.6,K10
        AJMP K9
K10:    SETB P0.6
	    NOP
	    NOP
	    SETB PD
	    NOP
        RET
;**************************************************************

TABLE:DB  0AH,  14H,  1EH,  28H,  32H
      DB  3CH,  46H,  50H,  5AH,  64H
END

⌨️ 快捷键说明

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