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

📄 xxx_1.asm

📁 电磁铁测试仪,1604显示
💻 ASM
📖 第 1 页 / 共 2 页
字号:
dec      temp_on2
MM:
ACALL    lcm_dis_1
ret
;-------------------------------------------
add_2:
MOV      A,      #35H
CJNE     A,      45H,    OK2
mov      45h,   #30h;------0
MOV      46H,   #30H;------0
MOV      47H,   #30H;------0
MOV      48H,   #31H;------1
mov      a,     #01h
mov      temp_off1,  a
clr      a
mov      temp_off2,  a
AJMP     JJ2
OK2:
mov      a,      #03ah
INC      48H;---------------------个位数+1
CJNE     A,      48H,    add2_nt
MOV      48H,    #30H
INC      47H;---------------------十位数+1
CJNE     A,      47H,    add2_nt
MOV      47H,    #30H
INC      46H;---------------------百位数+1
CJNE     A,      46H,    add2_nt
MOV      46H,    #30H
inc      45h;---------------------千位数+1
;-------------------------------------------
add2_nt:
inc      temp_off1
mov      a,   #0ffh
cjne     a,   temp_off1,    JJ2
INC      temp_off2
JJ2:
acall    lcm_dis_2
ret
;-------------------------------------------
sub_2:
MOV      A,      #31H
CJNE     A,      48H,    de2_1
mov      a,      #30h
CJNE     A,      47H,    de2_1
CJNE     A,      46H,    de2_1
cjne     a,      45h,    de2_1
mov      48h,    #30h
mov      47h,    #30h
mov      46h,    #30h
mov      45h,    #35h
;-------------------------------------------
mov      a,      #088h
mov      temp_off1,    a
mov      a,      #013h
mov      temp_off2,    a
lJMP     MM2
;-------------------------------------------

de2_1:   MOV      A,      #2FH
         DEC      48H;---------------------个位数-1
         CJNE     A,      48H,    sub2_nt
         CJNE     A,      47H,    de2_10
         CJNE     A,      46H,    de2_100
         cjne     a,      45h,    de2_1000
         AJMP     sub2_nt
de2_10:  MOV      A,      #2FH
         MOV      48H,    #39H
         DEC      47H;---------------------十位数-1
         CJNE     A,      47H,    sub2_nt
de2_100: MOV      48H,    #39H
         MOV      47H,    #39H
         DEC      46H;---------------------百位数-1
         mov      a,      #2fh
         CJNE     A,      46H,    sub2_nt
         mov      46h,    #39h
         mov      a,      #30h
         CJNE     A,      45H,    de2_1000
         ajmp     sub2_nt
de2_1000:MOV      48H,    #39H
         MOV      47H,    #39H
         mov      46H,    #39h
         dec      45h;--------------------千位数-1
sub2_nt: dec      temp_off1
         mov      a,   #00h
         cjne     a,   temp_off1,MM2
         mov      a,   #0ffh
         mov      temp_off1,  a
         dec      temp_off2
MM2:     ACALL    lcm_dis_2
         ret
;-------------------------------------------
save_data:
         mov      67h,   34h
         mov      68h,   35h
         mov      69h,   36h
         mov      6ah,   37h
         mov      6bh,   45h
         mov      6ch,   46h
         mov      6dh,   47h
         mov      6eh,   48h
         mov      6fh,   temp_on1
         mov      70h,   temp_on2
         mov      71h,   temp_off1
         mov      72h,   temp_off2
;------------------------------------------
         mov      r0,    #30h
         mov      dptr,  #tab_4
go_4:    clr      a
         movc     a,     @a+dptr
         mov      @r0,   a
         inc      r0
         inc      dptr
         cjne     r0,    #3ah,  go_4
;------------------------------------------
         mov      r0,    #40h
         mov      dptr,  #tab_5
go_5:    clr      a
         movc     a,     @a+dptr
         mov      @r0,   a
         inc      r0
         inc      dptr
         cjne     r0,    #4ch,  go_5
;------------------------------------------
         MOV      A,     #01H ;LCM_RAM清0
         ACALL     write_zi
;------------------------------------------
         MOV      A,     #0c0H
         ACALL     write_zi
         MOV      R0,    #30H
         MOV      R7,    #08H
         acall    loop2
;-------------------------------------------
         MOV      A,     #090H
         ACALL     write_zi
         MOV      R0,    #40H
         MOV      R7,    #0BH
         acall    loop3
;-------------------------------------------
         MOV    R0,    #67H
         MOV     TEMP,  #55H
         MOV     R7,    #06H
         CALL    W_DATA
         call    delay_1s
         ajmp    start
;-------------------------------------------
W_DATA:  CALL    W_R_IF       ;调用时序
         MOV     A,#30H       ;写能使指令
         CALL    WRITE        ;调用写
         CLR     CS           ;写完后CS=0
         CALL    DE_30US      ;调用延时
         CALL    W_R_IF       ;调用时序
         MOV     A,  TEMP     ;写地址指令
         CALL    WRITE        ;调用写
         MOV     A,  @R0      ;间址取数据
         CALL    WRITE        ;调用写
         INC     R0           ;间址指针加1
         MOV     A,  @R0      ;间址取数
         CALL    WRITE        ;调用写
         CLR     CS           ;写完后CS=0
         CALL    DE_30US      ;调用延迟
         CALL    W_R_IF       ;调用时序
         CLR     A            ;取禁止写数据
         CALL    WRITE        ;写禁止指令
         CLR     CS           ;写完后CS=0
         CALL    DE_30US      ;调用延迟
         INC     R0           ;间址指针加1
         INC     TEMP         ;地址加1
         DJNZ    R7, W_DATA   ;循环写入12个单元的数据
         RET                  ;程序返回
;----------------------------------------------
read_eeprom:
         MOV    TEMP,   #95H
         MOV     R0,    #67H
         MOV     R7,    #06H
         CALL    R_DATA
         mov    34h,    67h
         mov    35h,    68h
         mov    36h,    69h
         mov    37h,    6ah
;---------------------------------------------
         mov    45h,    6bh
         mov    46h,    6ch
         mov    47h,    6dh
         mov    48h,    6eh
;---------------------------------------------
         mov    temp_on1, 6fh
         mov    temp_on2, 70h
         mov    temp_off1, 71h
         mov    temp_off2, 72h
         ret
;----------------------------------------------
R_DATA:  CALL    W_R_IF       ;调用时序
         MOV     A,  TEMP     ;读地址指令
         CALL    WRITE        ;写入指令
         call    de_30us
         CALL    READ         ;读数据
         MOV     @R0, A       ;间址存数据
         INC     R0           ;指针加1
         CALL    READ         ;读数据
         MOV     @R0, A       ;间址存数据
         clr     cs
         call    de_30us
         INC     R0           ;指针加1
         INC     TEMP         ;地址加1
         DJNZ    R7,R_DATA    ;循环读出12个单元的数据
         RET                  ;程序返回
;------------------------------------------------------------------
W_R_IF:  SETB    CS
         SETB    DI
         SETB    CLK
         CALL    DE_30US
         CLR     CLK
         CALL    DE_30US
         RET
;------------------------------------------------------------------
WRITE:   MOV     R6,#08H
         CLR     C
LOOP_W:  RLC     A
         MOV     DI,C
         SETB    CLK
         CALL    DE_30US
         CLR     CLK
         CALL    DE_30US
         DJNZ    R6,LOOP_W
         RET
;------------------------------------------------------------------
READ:    MOV     R6,#08H
         CLR     A
LOOP_R:  SETB    CLK
         CALL    DE_30US
         CLR     CLK
         CALL    DE_30US
         MOV     C,DO
         RLC     A
         DJNZ    R6,LOOP_R
         RET
;------------------------------------------------------------------
DE_30US: MOV    R5, #0ffh
         DJNZ   R5, $
         RET
;------------------------------------------------------
run_1:   mov    count_on1,temp_on1
         mov    count_on2,temp_on2
         mov    count_off1,temp_off1
         mov    count_off2,temp_off2
;------------------------------------------------------
ggg:     SETB   TR0
         mov    5Ch, #52H   ;字符R
         MOV    5DH, #55H   ;字符U
         MOV    5EH, #4EH   ;字符N
         MOV    5FH, #2EH   ;字符.
         MOV    60H, #2EH   ;字符.
         ACALL  LCM_DIS_4
;------------------------------------------------------
CCC_1:   MOV      A,     #093H
         MOV      A,     #093H
         LCALL     write_zi
         MOV      R0,    #53H
         MOV      R7,    #06H
         LCALL    LOOP3
         JNB      ON_OFF,break
         ACALL    DELAY_50MS
         AJMP     CCC_1
;------------------------------------------------------
break:   call   delay_50ms
         JB     ON_OFF,ccc_1
         call   delay_50ms
         JB     ON_OFF,ccc_1
         clr    tr0
         CLR    P2.7
         SETB   ON_OFF
         mov    5Ch, #42H   ;字符b
         MOV    5DH, #72H   ;字符r
         MOV    5EH, #65H   ;字符e
         MOV    5FH, #61H   ;字符a
         MOV    60H, #6bH   ;字符k
         ACALL  LCM_DIS_4
         JnB    ON_OFF,$
         call   delay_50ms
         JnB    ON_OFF,$
         call   delay_50ms
jjj:     JnB    ON_OFF,re_run
         jmp    jjj
;--------------------------------------------------
re_run:  call   delay_50ms
         call   delay_50ms
         call   delay_50ms
         JB     ON_OFF,jjj
         call   delay_50ms
         call   delay_50ms
         JB     ON_OFF,ggg
         call   delay_50ms
         call   delay_50ms
         call   delay_50ms
         JB     ON_OFF,ggg
         call   delay_50ms
         ljmp   start
;-----------------------------------------------
TO:      CLR      TR0
         MOV      TL0,   #020h
         MOV      TH0,   #0fch
         jb       25h.0, on
;----------------------------------------------
         djnz     count_off1, out_next
         mov      a,      #00h
         cjne     a,      count_off2,in_off
         setb     p2.7
         mov      25h,  #0ffh
         mov      count_off1, temp_off1
         mov      count_off2, temp_off2
         ajmp     out_to
;----------------------------------------------
in_off:  mov      count_off1,  #0ffh
         dec      count_off2
         ajmp     out_next
;----------------------------------------------
on:      djnz     count_on1, out_next
         mov      a,      #00h
         cjne     a,      count_on2,in_on
         clr      p2.7
         mov      25h,  #00h
         mov      count_on1, temp_on1
         mov      count_on2, temp_on2
         ajmp     out_to
;-----------------------------------------------
in_on:   mov      count_on1,  #0ffh
         dec      count_on2
         ajmp     out_next
;-----------------------------------------------
OUT_TO:  CPL      P2.6
         jb       p2.6,         OUT_next
         MOV      A,     #35h
         CJNE     A,     53H,   GO_C
         CLR      TR0
         ajmp     to_out
go_c:    MOV      A,     #3AH
         INC      58H
         CJNE     A,     58H,   OUT_next
         MOV      58H,   #30H
         INC      57H
         CJNE     A,     57H,   OUT_next
         MOV      57H,   #30H
         INC      56H
         CJNE     A,     56H,   OUT_next
         MOV      56H,   #30H
         inc      55h
         CJNE     A,     55H,   OUT_next
         MOV      55H,   #30H
         inc      54h
         CJNE     A,     54H,   OUT_next
         MOV      54H,   #30H
         inc      53h
         MOV      A,     #35h
         CJNE     A,     53H,   GO_C
         CLR      TR0
         ajmp     to_out
;----------------------------------------------
;-----------------------------------------------
OUT_next:SETB     TR0
TO_OUT:  RETI
;-----------------------------------------------
delay_1ms:
         MOV      21H,    #05D
D1:      MOV      20H,    #200D
D2:      DJNZ     20H,    D2
         DJNZ     21H,    D1
         RET
;-----------------------------------------------
delay_50ms:
         MOV      21H,    #100D
D3:      MOV      20H,    #250D
D4:      DJNZ     20H,    D4
         DJNZ     21H,    D3
         RET
;-----------------------------------------------
delay_1s:
         MOV      22H,    #50D
D7:      MOV      21H,    #200D
D5:      mov      20h,    #250d
D6:      DJNZ     20H,    D6
         DJNZ     21H,    D5
         djnz     22h,    d7
         RET

;------------------------------------------------
tab_1:
db 3eh 4fh 4eh 3dh 30h 30h 30h 31h 6dh 73h
tab_2:
db 3eh 4fh 46h 46h 3dh 30h 30h 30h 31h 6dh 73h 00h
tab_3:
db 3eh 43h 3dh 30h 30h 30h 30h 30h 30h
tab_4:
db 53h 61h 76h 65h 44h 61h 74h 61h
tab_5:
db 50h 6ch 65h 61h 73h 65h 57h 61h 69h 74h 2eh 2eh 2eh
tab_6:
db 3eh  41h 77h 61h 69h 74h 2eh 2eh 2eh 2eh 2eh
end

⌨️ 快捷键说明

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