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

📄 biao.asm

📁 单片机开发预付费电度表方案,开发软件KEILC51
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;显示复位程序----------------
DIRRST:       CLR    A
              MOV    SEE09,A
              MOV    SEE08,A
              MOV    SEE07,A
              MOV    SEE06,A
              MOV    SEE05,A
              MOV    SEE04,A
              MOV    SEE03,A
              MOV    SEE02,A
              MOV    SEE01,A
              MOV    SEE00,A
              MOV    SEE17,A
              MOV    SEE16,A
              MOV    SEE15,A
              MOV    SEE14,A
              MOV    SEE13,A
              MOV    SEE12,A
              MOV    SEE11,A
              MOV    SEE10,A
              LCALL  LCDRESET                 ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              RET

;-------------------------------------------------------------------
;显示程序
DIR:          MOV    A,SEE
              MOV    B,#2
              MUL    AB
              ADD    A,SEE
              MOV    DPTR,#DIRR
              JMP    @A+DPTR
DIRR:         LJMP   DIR0
              LJMP   DIR1
              LJMP   DIR2
              LJMP   DIR3
              LJMP   DIR4
              LJMP   DIR5
              LJMP   DIR6
              LJMP   DIR7
              LJMP   DIR8
              LJMP   DIR9
              LJMP   DIR10
              LJMP   DIR11
              LJMP   DIR12
              LJMP   DIR13
DIR0:         MOV    DPTR,#STRING3
              MOV    XPOS,#20
              MOV    YPOS,#00H
              MOV    R1,#5
              LCALL  PUTSTR
              MOV    DPTR,#STRING6
              MOV    XPOS,#12
              MOV    YPOS,#02H
              MOV    R1,#7
              LCALL  PUTSTR
              RET
DIR1:         MOV    DPTR,#STRING4
              MOV    XPOS,#00H
              MOV    YPOS,#00H
              MOV    R1,#5
              LCALL  PUTSTR
              MOV    XPOS,#8
              MOV    YPOS,#02H
              MOV    R0,#SEE09
              MOV    RE,#7
DIRR11:       MOV    A,@R0
              MOV    B,#2
              MUL    AB
              MOV    DPTR,#STRING1
              CLR    C
              ADD    A,DPL
              MOV    DPL,A
              CLR    A
              ADDC   A,DPH
              MOV    DPH,A
              MOV    R1,#1
              LCALL  PUTSTR
              INC    R0
              DJNZ   RE,DIRR11
              MOV    DPTR,#STRING23
              MOV    R1,#1
              LCALL  PUTSTR
              MOV    R0,#SEE02
              MOV    RE,#3
DIRR12:       MOV    A,@R0
              MOV    B,#2
              MUL    AB
              MOV    DPTR,#STRING1
              CLR    C
              ADD    A,DPL
              MOV    DPL,A
              CLR    A
              ADDC   A,DPH
              MOV    DPH,A
              MOV    R1,#1
              LCALL  PUTSTR
              INC    R0
              DJNZ   RE,DIRR12
              MOV    DPTR,#STRING2
              MOV    R1,#3
              LCALL  PUTSTR
              RET
DIR2:         MOV    DPTR,#STRING5
              MOV    XPOS,#00H
              MOV    YPOS,#00H
              MOV    R1,#5
              LCALL  PUTSTR
              MOV    XPOS,#24
              MOV    YPOS,#02H
              MOV    R0,#SEE17
              MOV    RE,#5
DIRR21:       MOV    A,@R0
              MOV    B,#2
              MUL    AB
              MOV    DPTR,#STRING1
              CLR    C
              ADD    A,DPL
              MOV    DPL,A
              CLR    A
              ADDC   A,DPH
              MOV    DPH,A
              MOV    R1,#1
              LCALL  PUTSTR
              INC    R0
              DJNZ   RE,DIRR21
              MOV    DPTR,#STRING23
              MOV    R1,#1
              LCALL  PUTSTR
              MOV    R0,#SEE12
              MOV    RE,#3
DIRR22:       MOV    A,@R0
              MOV    B,#2
              MUL    AB
              MOV    DPTR,#STRING1
              CLR    C
              ADD    A,DPL
              MOV    DPL,A
              CLR    A
              ADDC   A,DPH
              MOV    DPH,A
              MOV    R1,#1
              LCALL  PUTSTR
              INC    R0
              DJNZ   RE,DIRR22
              MOV    DPTR,#STRING2
              MOV    R1,#3
              LCALL  PUTSTR
              RET
DIR3:         MOV    DPTR,#STRING7
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#3
              LCALL  PUTSTR
              MOV    DPTR,#STRING8
              MOV    XPOS,#00H
              MOV    YPOS,#02H
              MOV    R1,#7
              LCALL  PUTSTR
              RET
DIR4:         MOV    DPTR,#STRING9
              MOV    XPOS,#24
              MOV    YPOS,#00H
              MOV    R1,#4
              LCALL  PUTSTR
              MOV    DPTR,#STRING10
              MOV    XPOS,#24
              MOV    YPOS,#02H
              MOV    R1,#5
              LCALL  PUTSTR
              RET
DIR5:         MOV    DPTR,#STRING11
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#3
              LCALL  PUTSTR
              MOV    DPTR,#STRING12
              MOV    XPOS,#24
              MOV    YPOS,#02H
              MOV    R1,#4
              LCALL  PUTSTR
              RET
DIR6:         MOV    DPTR,#STRING13
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#3
              LCALL  PUTSTR
              MOV    DPTR,#STRING10
              MOV    XPOS,#24
              MOV    YPOS,#02H
              MOV    R1,#5
              LCALL  PUTSTR
              RET
DIR7:         MOV    DPTR,#STRING14
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#4
              LCALL  PUTSTR
              MOV    DPTR,#STRING15
              MOV    XPOS,#16
              MOV    YPOS,#02H
              MOV    R1,#5
              LCALL  PUTSTR
              RET
DIR8:         MOV    DPTR,#STRING16
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#3
              LCALL  PUTSTR
              MOV    DPTR,#STRING21
              MOV    XPOS,#00H
              MOV    YPOS,#2
              MOV    R1,#8
              LCALL  PUTSTR
              RET
DIR9:         MOV    DPTR,#STRING17
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#3
              LCALL  PUTSTR
              MOV    DPTR,#STRING18
              MOV    XPOS,#16
              MOV    YPOS,#02H
              MOV    R1,#5
              LCALL  PUTSTR
              RET
DIR10:        MOV    DPTR,#STRING19
              MOV    XPOS,#24
              MOV    YPOS,#00H
              MOV    R1,#4
              LCALL  PUTSTR
              MOV    DPTR,#STRING10
              MOV    XPOS,#24
              MOV    YPOS,#02H
              MOV    R1,#5
              LCALL  PUTSTR
              RET
DIR11:        MOV    DPTR,#STRING20
              MOV    XPOS,#32
              MOV    YPOS,#00H
              MOV    R1,#4
              LCALL  PUTSTR
              RET
DIR12:        MOV    DPTR,#STRING22
              MOV    XPOS,#32
              MOV    YPOS,#1
              MOV    R1,#3
              LCALL  PUTSTR
              RET
DIR13:        MOV    DPTR,#STRING18
              MOV    XPOS,#24
              MOV    YPOS,#1
              MOV    R1,#5
              LCALL  PUTSTR
              RET


DELAY400MS:   MOV    R0,#20          ;延时子程序(400MS)
DL4_PA:       MOV    R1,#100
DL4_PB:       MOV    R2,#100
              DJNZ   R2,$
              DJNZ   R1,DL4_PB
              DJNZ   R0,DL4_PA
              RET

DELAY:        MOV    R6,#2
DLY_PA:       MOV    R5,#2H
DLY_PB:       MOV    R4,#2H
              DJNZ   R4,$
              DJNZ   R5,DLY_PB
              DJNZ   R6,DLY_PA
              RET

GETSTRCHAR:
GSC_PA:       CLR    A
              MOVC   A,@A+DPTR
              INC    DPTR
              MOV    B,A
              INC    A
              CLR    C
              JZ     GSC_LAX
              CLR    A
              MOVC   A,@A+DPTR
              INC    DPTR
              SETB   C
GSC_LAX:      RET

PUTSTR:       LCALL  DELAY
              LCALL  GETSTRCHAR
              PUSH   DPL
              PUSH   DPH
              JNC    PSR_LAX
              JNB    B.7,PSR_LBY
              LCALL  HZKPOS
              LCALL  PUTCHARDOT
              LCALL  PUTCHARDOT
              LJMP   PSR_LBX
PSR_LBY:      LCALL  HZKPOS
              LCALL  PUTCHARDOT
PSR_LBX:      POP    DPH
              POP    DPL
              DJNZ R1,PUTSTR
              RET
SR_LAX:       POP    DPH
              POP    DPL
              RET

PUTCHARDOT:   MOV    R7,#8
PAC_PA:       CLR    A
              MOVC   A,@A+DPTR
              LCALL  LCDWRITE
              INC    YPOS
              INC    DPTR
              CLR    A
              MOVC   A,@A+DPTR
              LCALL  LCDWRITE
              DEC    YPOS
              INC    DPTR
              LCALL  CUSORNEXT
              MOV    A,XPOS
              JNZ    PAC_LAX
              INC    YPOS
PAC_LAX:      DJNZ   R7,PAC_PA
              RET

HZKPOS:       MOV    R2,#5
HTP_PA:       CLR    C
              RLC    A
              XCH    A,B
              RLC    A
              XCH    A,B
	          DJNZ   R2,HTP_PA
              MOV    DPTR,#HZKDOT
	          ADD    A,DPL
	          MOV    DPL,A
	          MOV    A,B
	          ADDC   A,DPH
	          MOV    DPH,A
	          RET

LCDFILL:      MOV    R7,A           ;LCD整屏显示A的内容
              MOV    YPOS,#0
LFL_PB:       MOV    XPOS,#0
LFL_PA:       MOV    A,R7
              LCALL  LCDWRITE       ;定位并写数据
              LCALL  CUSORNEXT
              MOV    A,XPOS
              JNZ    LFL_PA
              MOV    A,YPOS
              JNZ    LFL_PB
              RET
LCDWRITE:     LCALL  LCDPOS       ;定位并写数据子程序,内部写数指针定位
              LCALL  LCDWD        ;写数据
              RET

CUSORNEXT:    INC    XPOS
              MOV    A,XPOS
              CJNE   A,#128,CNT_LAX
	          MOV    XPOS,#0
	          INC    YPOS
	          ANL    YPOS,#3H
CNT_LAX:      RET

LCDWD:        MOV    B,A
	          MOV    A,YPOS
	          JNB    ACC.1,LWD_LBX
	          MOV    A,B
	          LCALL  REVERSE
	          MOV    B,A
LWD_LBX:      MOV    A,XPOS
              CJNE   A,#61,$+3
	          JNC    LWD_LA1
	          MOV    A,B
	          LCALL  LCDWD1
	          JMP    LWD_LAX
LWD_LA1:      CJNE   A,#122,$+3
	          JNC    LWD_LA2
	          MOV    A,B
	          LCALL  LCDWD2
	          LJMP   LWD_LAX
LWD_LA2:
LWD_LAX:
	          RET

LCDPOS:       PUSH   ACC
	          MOV    A,YPOS
	          ANL    A,#3
	          CJNE   A,#0,LPS_LB1
	          MOV    A,#2
	          LJMP   LPS_LBX
LPS_LB1:      CJNE   A,#1,LPS_LB2
	          MOV    A,#3
	          LJMP   LPS_LBX
LPS_LB2:      CJNE   A,#2,LPS_LB3
	          MOV    A,#1
	          LJMP   LPS_LBX
LPS_LB3:      MOV    A,#0
LPS_LBX:      ADD    A,#0B8H
              MOV    B,A
	          MOV    A,XPOS
	          CJNE   A,#61,$+3
	          JNC    LPS_LA1
	          ANL    A,#3FH
	          ADD    A,#13H
	          LCALL  LCDWC1
	          MOV    A,B
	          LCALL  LCDWC1
	          LJMP   LPS_LAX
LPS_LA1:      CJNE   A,#122,$+3
	          JNC    LPS_LA2
	          CLR    C
	          SUBB   A,#61
	          ADD    A,#13H
	          LCALL  LCDWC2
	          MOV    A,B
	          LCALL  LCDWC2
	          LJMP   LPS_LAX
LPS_LA2:
LPS_LAX:      POP    ACC
              RET
REVERSE:      PUSH   B
 	          MOV    B,A
	          CLR    A
	          JNB    B.7,RVR_LA
	          SETB   ACC.0
RVR_LA:       JNB    B.6,RVR_LB
	          SETB   ACC.1
RVR_LB:       JNB    B.5,RVR_LC
	          SETB   ACC.2
RVR_LC:       JNB    B.4,RVR_LD
	          SETB   ACC.3
RVR_LD:       JNB    B.3,RVR_LE
	          SETB   ACC.4
RVR_LE:       JNB    B.2,RVR_LF
	          SETB   ACC.5
RVR_LF:       JNB    B.1,RVR_LG
	          SETB   ACC.6
RVR_LG:       JNB    B.0,RVR_LH
	          SETB   ACC.7
RVR_LH:       POP     B
	          RET

LCDRESET:     MOV    A,#0C0H        ;LCD控制器复位 ,设置显示初始行
              LCALL  LCDWC1
	          LCALL  LCDWC2
	          MOV    A,#0A1H              ;设置列序方向为正向
	          LCALL  LCDWC1
	          LCALL  LCDWC2
	          MOV    A,#0A4H              ;设置显示模式为正常显示
	          LCALL  LCDWC1
	          LCALL   LCDWC2
	          MOV    A,#0A9H              ;设置显示占空比为1/32
	          LCALL  LCDWC1
	          LCALL  LCDWC2
	          MOV    A,#0AFH              ;开显示
	          LCALL  LCDWC1
	          LCALL  LCDWC2
	          RET

LCDWC1:       PUSH   DPL
              PUSH   DPH                   ;送片1控制字子程序
              LCALL  WAITIDLE1
	          MOV    DPTR,#CS1ADDR         ;CS1=0 CS2=1 A0=0
	          MOVX   @DPTR,A
	          POP    DPH
	          POP    DPL
       	      RET

LCDWC2:       PUSH   DPL                   ;送片2控制字子程序
              PUSH   DPH
              LCALL  WAITIDLE2
	          MOV    DPTR,#CS2ADDR;CS1=1 CS2=0 A0=0
	          MOVX   @DPTR,A
	          POP    DPH
	          POP    DPL
       	      RET

LCDWD1:	      PUSH   DPL	                ;片1写数据子程序
              PUSH   DPH
	          LCALL  WAITIDLE1
	          ;MOV    DPTR,#CS1ADDR+A0ADDR   ;CS1=0 CS2=1 A0=1
              MOVX   @DPTR,A
	          POP    DPH
	          POP    DPL
       	      RET

LCDWD2:	      PUSH   DPL                 ;片2写数据子程序
              PUSH   DPH
	          LCALL  WAITIDLE2
	          ;MOV    DPTR,#CS2ADDR+A0ADDR;CS1=1 CS2=0 A0=1
	          MOVX   @DPTR,A
	          POP    DPH
	          POP    DPL
        	  RET

WAITIDLE1:    PUSH   ACC                  ;片1"忙"检测
              MOV    DPTR,#CS1ADDR;CS1=0 CS2=1 A0=0
WT_PA:        MOVX   A,@DPTR
              JB     ACC.7,WT_PA
              POP    ACC
              RET

WAITIDLE2:    PUSH   ACC                ;片2"忙"检测
              MOV    DPTR,#CS2ADDR      ;CS1=1 CS2=0 A0=0
WT1_PA:       MOVX   A,@DPTR
              JB     ACC.7,WT1_PA
              POP    ACC
              RET

HZKDOT:       $INCLUDE "HZKLIB.ASM"     ;汉字库文件
              $INCLUDE "HZKSTR.ASM"     ;汉字字符串文件
              END



⌨️ 快捷键说明

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