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

📄 biao.asm

📁 单片机典型系统设计实例精讲 第3章 单相电子式预付费电度表的设计与实现
💻 ASM
📖 第 1 页 / 共 4 页
字号:
              CLR    SCLI
              DJNZ   R7,WLPI
              RET
WR1I:         SETB   SDAI
              SETB   SCLI
              NOP
              NOP
              NOP
              NOP
              NOP
              CLR    SCLI
              CLR    SDAI
              DJNZ   R7,WLPI
              RET

CACKI:        SETB   SDAI
              SETB   SCLI
              NOP
              NOP
              NOP
              MOV    C,SDAI
              MOV    F0,C
              CLR    SCLI
              NOP
              NOP
              NOP
              RET

RDBI:         MOV    R7,#8
RLPI:         SETB   SDAI
              SETB   SCLI
              MOV    C,SDAI
              MOV    A,R6
              RLC    A
              MOV    R6,A
              CLR    SCLI
              DJNZ   R7,RLPI
              RET

MACKI:        CLR    SDAI
              SETB   SCLI
              NOP
              NOP
              NOP
              NOP
              NOP
              CLR    SCLI
              SETB   SDAI
              RET

MNACKI:       SETB   SDAI
              SETB   SCLI
              NOP
              NOP
              NOP
              NOP
              NOP
              CLR    SCLI
              CLR    SDAI
              RET

;------------------------------------------------------------
;显示复位程序----------------
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

⌨️ 快捷键说明

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