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

📄 biao.asm

📁 单片机典型系统设计实例精讲 第3章 单相电子式预付费电度表的设计与实现
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;---------------------------------------------------------------------------------------------------
;指示性语句--------------

CS1ADDR      EQU  0FAFFH       ;P2.2
CS2ADDR      EQU  0FCFFH       ;P2.1
A0ADDR       EQU  0100H        ;P2.0  COMMAND:0 DATA:1
XPOS           EQU  20H
YPOS           EQU  21H

SEE            EQU  30H           ;显示缓冲区
SEER       EQU  3DH
SEERR          EQU  2FH
SEE09          EQU  32H
SEE08          EQU  33H
SEE07          EQU  34H
SEE06          EQU  35H
SEE05          EQU  36H
SEE04          EQU  37H
SEE03          EQU  38H
SEE02          EQU  39H
SEE01          EQU  3AH
SEE00          EQU  3BH
SEE17          EQU  57H
SEE16          EQU  58H
SEE15          EQU  59H
SEE14          EQU  5AH
SEE13          EQU  5BH
SEE12          EQU  5CH
SEE11          EQU  5DH
SEE10          EQU  5EH

DEL            EQU  31H
KEYW           EQU  22H
S1             EQU  97H      ;P1.7
RE             EQU  3CH

SLA            EQU  08H
NUMBYT         EQU  09H
SCL            EQU  0B0H     ;P3.0
SDA            EQU  0B1H     ;P3.1
MTD            EQU  0EH      ;E2PROM写缓冲区
MTD1           EQU  0FH
MTD2           EQU  10H
MTD3           EQU  11H
MTD4           EQU  12H
MTD5           EQU  13H
MTD6           EQU  14H
MTD7           EQU  15H
MTD8           EQU  16H
MRD            EQU  17H       ;E2PROM读缓冲区
MRD1           EQU  18H
MRD2           EQU  19H
MRD3           EQU  1AH
MRD4           EQU  1BH
MRD5           EQU  1CH
MRD6           EQU  1DH
MRD7           EQU  1EH
MRD8           EQU  1FH

SCLI           EQU  94H      ;P1.4
SDAI           EQU  93H      ;P1.3
MTDI           EQU  3EH      ;IC卡写缓冲区
MTD1I          EQU  3FH
MTD2I          EQU  40H
MTD3I          EQU  41H
MTD4I          EQU  42H
MTD5I          EQU  43H
MTD6I          EQU  44H
MTD7I          EQU  45H
MTD8I          EQU  46H
MRDI           EQU  47H      ;IC卡读缓冲区
MRD1I          EQU  48H
MRD2I          EQU  49H
MRD3I          EQU  4AH
MRD4I          EQU  4BH
MRD5I          EQU  4CH
MRD6I          EQU  4DH
MRD7I          EQU  4EH
MRD8I          EQU  4FH
VCCI           EQU  96H     ;P1.6
VCCDL          EQU  95H     ;P1.5
K2             EQU  92H     ;P1.2

YDL1           EQU  50H
YDL2           EQU  51H
YDL3           EQU  52H
YDL4           EQU  53H
SDL1           EQU  54H
SDL2           EQU  55H
SDL3           EQU  56H

DYKG           EQU  91H      ;P1.1

JWW            EQU  18H      ;23H.00H

COL            EQU  5FH

ZY4            EQU  24H
ZY3            EQU  25H
ZY2            EQU  26H
ZY1            EQU  27H
ZS3            EQU  28H
ZS2            EQU  29H
ZS1            EQU  2AH



               ORG  0000H
              LJMP   MAIN           ;跳主程序运行

               ORG  0003H
              LJMP   DDJC           ;跳外中断0服务程序运行

               ORG  000BH
              LJMP   DLCS           ; 跳定时器0服务程序运行

               ORG  0100H
;-----------------------------------------------------------------------
;主程序-------------

MAIN:         MOV    SP,#60H        ;堆栈设置
              LCALL  DIRRST         ;执行显示复位程序
              LCALL  KEYRST         ;执行键盘复位程序
              LCALL  AT24RST        ;执行E2PROM复位程序
              LCALL  AT24RSTI       ;执行IC卡复位程序
              LCALL  DDJCRST        ;设置中断
              LCALL  DLCSRST        ;设置定时器0
MAIN1:        LCALL  KEY            ;执行键扫描程序
              MOV    A,SEER
              CJNE   A,SEE,MAIN3
              MOV    A,#1
              CJNE   A,SEE,MAIN2
              SJMP   MAIN4
MAIN2:        MOV    A,#2
              CJNE   A,SEE,MAIN5
              SJMP   MAIN4
MAIN3:        MOV    SEER,SEE
              LCALL  LCDRESET        ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
MAIN4:        LCALL  DIR             ;执行显示程序
MAIN5:        LCALL  ICK             ;执行IC卡检测及读写程序
              AJMP   MAIN1

;--------------------------------------------------------------
; IC卡检测及读写程序
ICK:          JNB    K2,ICK1
              SETB   VCCI
              RET
ICK1:         MOV    DEL,#10
              LCALL  DELY
              JNB    K2,ICK2
              SETB   VCCI
              RET
ICK2:         CLR    VCCI
              MOV    DEL,#10
              LCALL  DELY
              JB     VCCDL,ICK3
              SETB   VCCI
              MOV    SEERR,SEE
              MOV    SEE,#5
              MOV    SEER,SEE
              LCALL  LCDRESET             ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              LCALL  DIR
              MOV    DEL,#60
              LCALL  DELY
              MOV    SEE,SEERR
              RET
ICK3:         MOV    MRDI,#00H
              MOV    NUMBYT,#8
              MOV    SLA,#0A0H
              LCALL  RDNBYTI
              MOV    A,#0AAH
              CJNE   A,MRD1I,ICK4
              CJNE   A,MRD2I,ICK4
              CJNE   A,MRD3I,ICK4
              CJNE   A,MRD4I,ICK4
              CJNE   A,MRD5I,ICK4
              CJNE   A,MRD6I,ICK4
              CJNE   A,MRD7I,ICK4
              CJNE   A,MRD8I,ICK4
              SJMP   ICK5
ICK4:         MOV    SEERR,SEE
              MOV    SEE,#4
              MOV    SEER,SEE
              LCALL  LCDRESET                ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              LCALL  DIR
              MOV    DEL,#60
              LCALL  DELY
              MOV    SEE,SEERR
              RET
ICK5:         MOV    MRDI,#10H
              MOV    NUMBYT,#3
              MOV    SLA,#0A0H
              LCALL  RDNBYTI
              MOV    A,#00H
              CJNE   A,MRD1I,ICK6
              CJNE   A,MRD2I,ICK6
              CJNE   A,MRD3I,ICK6
              MOV    SEERR,SEE
              MOV    SEE,#7
              MOV    SEER,SEE
              LCALL  LCDRESET               ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              LCALL  DIR
              MOV    DEL,#60
              LCALL  DELY
              MOV    SEE,SEERR
              RET
ICK6:         MOV    SEERR,SEE
              MOV    SEE,#8
              MOV    SEER,SEE
              LCALL  LCDRESET              ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              LCALL  DIR
              MOV    MTD1I,#00H
              MOV    MTD2I,#00H
              MOV    MTD3I,#00H
              MOV    MTDI,#10H
              MOV    NUMBYT,#4
              MOV    SLA,#0A0H
              LCALL  WRNBYTI
              CLR    ET0
              CLR    TR0
              MOV    A,MRD3I
              CLR    C
              ADD    A,SDL3
              MOV    SDL3,A
              MOV    A,MRD2I
              ADDC   A,SDL2
              MOV    SDL2,A
              MOV    A,MRD1I
              ADDC   A,SDL1
              MOV    SDL1,A
              LCALL  ZHCS
              MOV    TH0,#0FFH
              MOV    TL0,#0FEH
              SETB   ET0
              SETB   TR0
              MOV    DEL,#60
              LCALL  DELY
              MOV    SEE,#12
              LCALL  LCDRESET            ;执行液晶显示器复位程序
              MOV    A,#00H
              LCALL  LCDFILL
              LCALL  DIR
ICK7:         JB     K2,ICK8
              SJMP   ICK7
ICK8:         SETB   VCCI
              MOV    SEE,#2
              RET


;----------------------------------------------------------------
;定时器0初始化程序
DLCSRST:      MOV    TMOD,#05H
              MOV    TH0,#0FFH
              MOV    TL0,#0FFH
              MOV    MRD,#00H
              MOV    SLA,#0A0H
              MOV    NUMBYT,#7
              LCALL  RDNBYT
              MOV    YDL1,MRD1
              MOV    YDL2,MRD2
              MOV    YDL3,MRD3
              MOV    YDL4,MRD4
              MOV    SDL1,MRD5
              MOV    SDL2,MRD6
              MOV    SDL3,MRD7
              LCALL  ZHCS
              MOV    A,SDL1
              CJNE   A,#00H,DLCSRST1
              MOV    A,SDL2
              CJNE   A,#00H,DLCSRST1
              MOV    A,SDL3
              CJNE   A,#00H,DLCSRST1
              SETB   DYKG
              MOV    SEE,#9
              RET
DLCSRST1:     CLR    DYKG
              MOV    DEL,#10
              LCALL  DELY
              SETB   EA
              SETB   ET0
              SETB   TR0
              RET

;----------------------------------------------------------
;定时器0中断服务程序
DLCS:         PUSH   A
              PUSH   B
              PUSH   DPL
              PUSH   DPH
              PUSH   00H
              PUSH   01H
              PUSH   02H
              PUSH   03H
              PUSH   04H
              PUSH   05H
              PUSH   06H
              PUSH   07H
              MOV    JWW,C
              MOV    A,SDL1
              CJNE   A,#00H,DLCS1
              MOV    A,SDL2
              CJNE   A,#00H,DLCS1
              MOV    A,SDL3
              CJNE   A,#00H,DLCS1
              SETB   DYKG
              MOV    SEE,#9
              CLR    ET0
              CLR    TR0
              AJMP   DLCS3
DLCS1:        CLR    DYKG
              MOV    A,#100
              CLR    C
              ADD    A,YDL4
              MOV    YDL4,A
              CLR    A
              ADDC   A,YDL3
              MOV    YDL3,A
              CLR    A
              ADDC   A,YDL2
              MOV    YDL2,A
              CLR    A
              ADDC   A,YDL1
              MOV    YDL1,A
              MOV    A,SDL3
              CLR    C
              SUBB   A,#100
              MOV    SDL3,A
              MOV    A,SDL2
              SUBB   A,#00H
              MOV    SDL2,A
              MOV    A,SDL1
              SUBB   A,#00H
              MOV    SDL1,A
              LCALL  ZHCS
              MOV    A,SDL1
              CJNE   A,#00H,DLCS2
              MOV    A,SDL2
              CJNE   A,#4EH,DLCS2
              MOV    A,SDL3
              CJNE   A,#20H,DLCS2
              MOV    SEERR,SEE
              MOV    SEE,#13
DLCS2:        MOV    TH0,#0FFH
              MOV    TL0,#0FFH
              SETB   ET0
              SETB   TR0
DLCS3:        MOV    C,JWW
              POP    07H
              POP    06H
              POP    05H
              POP    04H
              POP    03H
              POP    02H
              POP    01H
              POP    00H
              POP    DPH
              POP    DPL
              POP    B
              POP    A
              RETI



ZHCS:         MOV    ZY4,YDL4
              MOV    ZY3,YDL3
              MOV    ZY2,YDL2
              MOV    ZY1,YDL1
              MOV    ZS3,SDL3
              MOV    ZS2,SDL2
              MOV    ZS1,SDL1
              MOV    R7,#32
              CLR    A
              MOV    R2,A
              MOV    R3,A
              MOV    R4,A
              MOV    R5,A
              MOV    R6,A
YBCDT1:       CLR    C
              MOV    A,ZY4
              RLC    A
              MOV    ZY4,A
              MOV    A,ZY3
              RLC    A
              MOV    ZY3,A
              MOV    A,ZY2
              RLC    A
              MOV    ZY2,A
              MOV    A,ZY1
              RLC    A
              MOV    ZY1,A
              MOV    A,R6
              ADDC   A,R6
              DA     A
              MOV    R6,A
              MOV    A,R5
              ADDC   A,R5
              DA     A
              MOV    R5,A
              MOV    A,R4
              ADDC   A,R4
              DA     A
              MOV    R4,A
              MOV    A,R3
              ADDC   A,R3
              DA     A
              MOV    R3,A
              MOV    A,R2
              ADDC   A,R2
              DA     A
              MOV    R2,A
              DJNZ   R7,YBCDT1
              MOV    A,R2
              ANL    A,#0FH
              MOV    SEE08,A
              MOV    A,R2
              SWAP   A
              ANL    A,#0FH
              MOV    SEE09,A
              MOV    A,R3
              ANL    A,#0FH
              MOV    SEE06,A
              MOV    A,R3
              SWAP   A
              ANL    A,#0FH
              MOV    SEE07,A
              MOV    A,R4
              ANL    A,#0FH
              MOV    SEE04,A
              MOV    A,R4
              SWAP   A
              ANL    A,#0FH
              MOV    SEE05,A
              MOV    A,R5
              ANL    A,#0FH
              MOV    SEE02,A
              MOV    A,R5
              SWAP   A
              ANL    A,#0FH
              MOV    SEE03,A
              MOV    A,R6
              ANL    A,#0FH
              MOV    SEE00,A
              MOV    A,R6
              SWAP   A
              ANL    A,#0FH
              MOV    SEE01,A

              MOV    R7,#24
              CLR    A
              MOV    R2,A
              MOV    R3,A
              MOV    R4,A
              MOV    R5,A
SBCDT1:       CLR    C
              MOV    A,ZS3
              RLC    A
              MOV    ZS3,A
              MOV    A,ZS2
              RLC    A
              MOV    ZS2,A
              MOV    A,ZS1
              RLC    A
              MOV    ZS1,A
              MOV    A,R5
              ADDC   A,R5
              DA     A
              MOV    R5,A
              MOV    A,R4
              ADDC   A,R4
              DA     A
              MOV    R4,A
              MOV    A,R3
              ADDC   A,R3
              DA     A
              MOV    R3,A
              MOV    A,R2

⌨️ 快捷键说明

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