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

📄 xxx_1.asm

📁 电磁铁测试仪,1604显示
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;--------------------------------------------
;作者:Vneus
;MCU:AT89C51
;显示屏:1604
;EEPROM:AT93C46
;日期:2009.02.23
;项目:电磁铁测试仪(ON/OFF.时间可调,每输出一个脉冲计数加1)
;--------------------------------------------
RS        equ  p3.2;EQU  P1.0;
RW        equ  p3.1;EQU  P1.1;       显示屏赋值
E         equ  p3.0;EQU  P1.2;
;--------------------------------------------
SETUP     EQU  P2.0
ADD_F     EQU  P2.1;       KEY赋值
SUB_F     EQU  P2.2
ON_OFF    EQU  P2.3
save      equ  p2.4
;--------------------------------------------
CS        equ  p0.2;equ  P1.6
CLK       equ  p0.1;equ  P1.5;       eeprom赋值
DI        equ  p0.3;equ  P1.4
DO        equ  p0.4;equ  P1.3
;--------------------------------------------
;index_1    EQU  4bH ;
temp_1     EQU  4cH
temp_2     EQU  4dH
count_on1  equ  26h
count_on2  equ  27h
count_off1 equ  28h
count_off2 equ  29h
temp_on1   equ  2ah
temp_on2   equ  2bh
temp_off1  equ  2ch
temp_off2  equ  2dh
temp       equ  2eh
;--------------------------------------------
ORG       0000H
AJMP      START
ORG       000BH
lJMP      TO
;--------------------------------------------
ORG       0030H
START:
MOV       SP,  #75H
LCALL     port_ini
LCALL     saf_ini
LCALL     lcm_ini
lcall     read_eeprom
LCALL     lcm_dis_1
LCALL     lcm_dis_2
lcall     lcm_dis_3
LCALL     LCM_DIS_4
LJMP      key_0
;--------------------------------------------
port_ini:
MOV      P0,    #00h
MOV      P1,    #00h
MOV      P2,    #07fH
mov      p3,    #00h
RET
;--------------------------------------------
saf_ini:
MOV TMOD,#01H
SETB EA
SETB ET0
CLR  TR0
;-----------------------------------------------

mov      r0,    #30h
mov      dptr,  #tab_1
go_1:
clr      a
movc     a,     @a+dptr
mov      @r0,   a
inc      r0
inc      dptr
cjne     r0,    #3ah,  go_1

;------------------------------------------------
mov      r0,    #40h
mov      dptr,  #tab_2
go_2:
clr      a
movc     a,     @a+dptr
mov      @r0,   a
inc      r0
inc      dptr
cjne     r0,    #4ch,  go_2

;---------------------------------------------
mov      r0,    #50h
mov      dptr,  #tab_3
go_3:
clr      a
movc     a,     @a+dptr
mov      @r0,   a
inc      r0
inc      dptr
cjne     r0,    #59h,  go_3
;-----------------------------------------------
mov      r0,    #5bh
mov      dptr,  #tab_6
go_6:
clr      a
movc     a,     @a+dptr
mov      @r0,   a
inc      r0
inc      dptr
cjne     r0,    #66h,  go_6
;----------------------------------------------
MOV      TL0,   #018h
MOV      TH0,   #0fch
RET
;---------------------------------------------
lcm_ini:
MOV      A,     #38H ;显示模式16*2,5*7
ACALL     write_zi
MOV      A,     #38H ;显示模式16*2,5*7
ACALL     write_zi
MOV      A,     #38H ;显示模式16*2,5*7
ACALL     write_zi
;---------------------------------------------
MOV      A,     #08H ;显示关
ACALL     write_zi
MOV      A,     #01H ;LCM_RAM清0
ACALL     write_zi
MOV      A,     #0cH ;显示开
ACALL     write_zi
MOV      A,     #06H ;指针设置
ACALL     write_zi
RET
;---------------------------------------------
lcm_dis_1:
MOV      A,     #080H
ACALL     write_zi
MOV      R0,    #30H
MOV      R7,    #0aH
loop1:
MOV      A,     @R0
ACALL     write_su
INC      R0
DJNZ     R7,    loop1
RET
;----------------------------------------------
lcm_dis_2:
MOV      A,     #0c0H
ACALL     write_zi
MOV      R0,    #40H
MOV      R7,    #0bH
loop2:
MOV      A,     @R0
ACALL     write_su
INC      R0
DJNZ     R7,    loop2
RET
;----------------------------------------------
lcm_dis_3:
MOV      A,     #090H
ACALL     write_zi
MOV      R0,    #50H
MOV      R7,    #09H
loop3:
MOV      A,     @R0
ACALL     write_su
INC      R0
DJNZ     R7,    loop3
RET
;----------------------------------------------
lcm_dis_4:
MOV      A,     #0d0H
ACALL     write_zi
MOV      R0,    #5bH
MOV      R7,    #0bH
loop4:
MOV      A,     @R0
ACALL     write_su
INC      R0
DJNZ     R7,    loop4
RET

;----------------------------------------------

write_zi:
MOV      P1,    A
CLR      RS
CLR      RW
CLR      E
LCALL    delay_1ms
SETB     E
RET
;----------------------------------------------
write_su:
MOV      P1,     A
SETB     RS
CLR      RW
CLR      E
LCALL    delay_1ms
SETB     E
RET
;----------------------------------------------
 key_0:
 jnb     on_off,   run
 jnb     setup,    add_sub
 ajmp    key_0
 ;-------------------------------------------
 run:
 call    delay_50ms
 jb      on_off,   key_0
 call    delay_50ms
 jnb      on_off,   $
 ljmp    run_1
 ;------------------------------------------
 add_sub:
 call    delay_50ms
 call    delay_50ms
 jb      setup,   key_0
 call    delay_50ms
 call    delay_50ms
 jb      setup,   key_0
;------------------------------------------
 mov      40h,   #3eh
 acall    lcm_dis_2
 MOV      A,     #080H
 ACALL     write_zi
 mov     30h,   #0ffh
 mov     r0,    #30h
 mov     r7,    #01h
 call    loop1
 jnb     setup,  $
 acall   delay_50ms
 jnb      setup,  $
 ;-------------------------------------------
 key_1:
 jnb     add_f,   onadd_1
 jnb     sub_f,   onsub_1
 jnb     setup,   selet
 jnb     save,    save_1
 ajmp    key_1
 ;-------------------------------------------

;----------------------------------------------
selet:
ACALL    delay_50ms
JB       setup,  key_1
ACALL    delay_50ms
JB       setup,  key_1
;---------------------------------------------
mov       30h,   #3eh
acall     lcm_dis_1
MOV      A,     #0c0H
ACALL     write_zi
mov      40h,  #0ffh
mov      r0,   #40h
mov      r7,   #01h
lcall    loop2
jnb      setup,  $
acall    delay_50ms
jnb      setup,  $
;---------------------------------------------

key_2:
 jnb     add_f,   offadd_1
 jnb     sub_f,   offsub_1
 jnb     setup,   add_sub
 jnb     save,    save_2
 ajmp    key_2

;--------------------------------------------
onadd_1:
ACALL    delay_50ms
JB       add_f,  key_1
ACALL    delay_50ms
JB       ADD_F,  key_1
call     add_1
AJMP     key_1
;--------------------------------------------
save_1:
ACALL    delay_50ms
JB       save,  key_1
ACALL    delay_50ms
JNB       save,  $
ajmp     save_data
;--------------------------------------------
onsub_1:
ACALL    delay_50ms
JB       SUB_F,  key_1
ACALL    delay_50ms
JB       SUB_F,  key_1
call     sub_1
ajmp     key_1
;---------------------------------------------
save_2:
ACALL    delay_50ms
JB       save,  key_2
ACALL    delay_50ms
JNB       save,  $
ajmp     save_data
;-----------------------------------------------
offadd_1:
ACALL    delay_50ms
JB       add_f,  key_2
ACALL    delay_50ms
JB       ADD_F,  key_2
call     add_2
AJMP     key_2
;--------------------------------------------
offsub_1:
ACALL    delay_50ms
JB       SUB_F,  key_2
ACALL    delay_50ms
JB       SUB_F,  key_2
call     sub_2
ajmp     key_2
;-------------------------------------------
add_1:
MOV      A,     #35H
CJNE     A,     34H,    OK
mov      34h,   #30h;------0
MOV      35H,   #30H;------0
MOV      36H,   #30H;------0
MOV      37H,   #31H;------1
mov      a,     #01h
mov      temp_on1,  a
clr      a
mov      temp_on2,  a
AJMP     JJ
OK:
MOV      A,      #3AH
INC      37H;---------------------个位数+1
CJNE     A,      37H,    add_next
MOV      37H,    #30H
INC      36H;---------------------十位数+1
CJNE     A,      36H,    add_next
MOV      36H,    #30H
INC      35H;---------------------百位数+1
CJNE     A,      35H,    add_next
mov      35h,    #30h
inc      34h;---------------------千位数+1
;-------------------------------------------
add_next:
inc      temp_on1
mov      a,   #0ffh
cjne     a,   temp_on1,    JJ
INC      temp_on2
JJ:
acall    lcm_dis_1
ret
;-------------------------------------------
sub_1:
MOV      A,      #31H
CJNE     A,      37H,    de_1
MOV      A,      #30H
CJNE     A,      36H,    de_1
CJNE     A,      35H,    de_1
cjne     a,      34h,    de_1
mov      37h,    #30h
mov      36h,    #30h
mov      35h,    #30h
mov      34h,    #35h
;----------------------------------------
mov      a,      #088h
mov      temp_on1,  a
mov      a,      #013h
mov      temp_on2,  a
AJMP     MM
;---------------------------------------
de_1:
MOV      A,      #2fH
DEC      37H;---------------------个位数-1
CJNE     A,      37H,    sub_next
CJNE     A,      36H,    de_10
CJNE     A,      35H,    de_100
cjne     a,      34h,    de_1000
AJMP     sub_next
de_10:
MOV      A,      #2fH
MOV      37H,    #39H
DEC      36H;---------------------十位数-1
CJNE     A,      36H,    sub_next
de_100:
MOV      37H,    #39H
MOV      36H,    #39H
DEC      35H;---------------------百位数-1
mov      a,      #2fh
CJNE     A,      35H,    sub_next
mov      35h,    #39h
mov      a,      #30h
CJNE     A,      34H,    de_1000
ajmp     sub_next
de_1000:
MOV      37H,    #39H
MOV      36H,    #39H
mov      35H,    #39h
dec      34h;--------------------千位数-1
sub_next:
dec      temp_on1
mov      a,   #00h
cjne     a,   temp_on1,MM
mov      a,   #0ffh
mov      temp_on1,   a

⌨️ 快捷键说明

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