📄 复件 液体速度.asm
字号:
beep bit p1.0
green bit p1.1
red bit p1.2
relay1 bit p1.3
relay2 bit p1.4
LEVEL BIT P1.6
control bit p1.7
CS BIT P2.0
CLK BIT P2.1
DAT BIT P2.2
KEY BIT P3.3
COMPARE BIT 00H
press_xing bit 01h
press_enter bit 02h
SET_NUM equ 24h
READ_NUM EQU 25H
codd equ 3fh
COD EQU 40H
DATA_IN EQU 41H
DATA_OUT EQU 42H
BIT_COUNT EQU 43H
TIMER EQU 44H
NUM EQU 45H
PULSE EQU 46H
COUNT1 EQU 30H
COUNT2 EQU 31H
COUNT3 EQU 32H
COUNT4 EQU 33H
COUNT5 EQU 34H
COUNT6 EQU 35H
COUNT7 EQU 36H
COUNT8 EQU 37H
org 0
ljmp main
org 0003h
ljmp SERIAL
org 0013h
ljmp read_key
org 0040h
MAIN:
RST: MOV DATA_OUT,#0A4H
LCALL SEND
SETB CS
mov codd,#85h
mov count2,#4
DIS: MOV COD,#080H
MOV NUM,#0AH
LCALL LONG_DELAY
LCALL DISPLAY
INC COD
LCALL DISPLAY
INC COD
LCALL DISPLAY
INC COD
LCALL DISPLAY
INC COD
LCALL DISPLAY
INC COD
LCALL DISPLAY
CLR COMPARE
INIT: mov sp,#60h
CLR control
clr relay1
clr relay2
clr green
clr press_xing
clr press_enter
setb beep
setb red
MOV TMOD,#21H
MOV TH1,#0D0H
MOV TL1,#0D0H
MOV PCON,#80H
MOV SCON,#50H
SETB TR1
setb ex0
setb ex1
setb ea
begin: jnb level,jmp_alarm
NOP
LCALL DEAL_CONT
LCALL ADJUST1
NOP
MOV NUM,PULSE
MOV COD,#0C8H
LCALL DISPLAY
MOV NUM,PULSE+1
INC COD
LCALL DISPLAY
MOV NUM,PULSE+2
INC COD
LCALL DISPLAY
JB COMPARE,COMP_BEGIN
ljmp init;begin
COMP_BEGIN: CLR GREEN
MOV A,READ_NUM
CJNE A,SET_NUM,COMP_BEGIN1
JMP init
COMP_BEGIN1: JC TURN_SONG
JMP TURN_JIN
TURN_SONG: MOV A,SET_NUM
SUBB A,READ_NUM
SUBB A,#40
JNC LONG_SONG
LCALL SONG
SETB COMPARE
JMP init
TURN_JIN: SUBB A,SET_NUM
SUBB A,#40
JNC LONG_JIN
LCALL JIN
SETB COMPARE
JMP init
jmp_alarm: lcall alarm
JMP init
LONG_JIN: LCALL JIN
LCALL JIN
LCALL JIN
LCALL JIN
LCALL JIN
LCALL JIN
LCALL JIN
LCALL JIN
SETB COMPARE
JMP INIT
LONG_SONG: LCALL SONG
LCALL SONG
LCALL SONG
LCALL SONG
LCALL SONG
LCALL SONG
LCALL SONG
LCALL SONG
SETB COMPARE
JMP INIT
read_key: mov r0,#21h
push a
push psw
push dpl
push dph
lcall clear_qian3
mov codd,#85h
mov count2,#4
dis2: clr ex1
DIS1: JB KEY, dis1
MOV DATA_OUT,#15H
LCALL SEND
LCALL RECEIVE
SETB CS
MOV A,DATA_IN
lcall test_key
jb press_xing,read_key
mov @r0,num
inc r0
djnz count2,dis3
jmp return_int
dis3: mov cod,codd
nop
lcall display
lcall s1
dec codd
jmp dis1
return_int: mov codd,#85h
mov count2,#4
lcall san_to_hex
pop dph
pop dpl
pop psw
pop a
SETB COMPARE
clr press_xing
clr press_enter
setb ex1
reti
serial: CLR EX0
CLR EX1
CLR TR0
push a
push psw
push tmod
push th1
push tl1
push pcon
push scon
MOV TMOD,#21H
MOV TH1,#0D0H
MOV TL1,#0D0H
MOV PCON,#80H
MOV SCON,#50H
SETB TR1
MOV COUNT4,#2
MOV R0,#50H
LCALL SERIAL_RECEIVE
NOP
DEC R0
DEC R0
MOV A,@R0
CJNE A,#1,RE_RETI
INC R0
MOV A,@R0
CJNE A,#2,RE_RETI
MOV A,#1
LCALL TRANSFER
NOP
MOV A,READ_NUM
LCALL TRANSFER
NOP
RE_RETI: pop scon
pop pcon
pop tl1
pop th1
pop tmod
pop psw
pop a
SETB EX0
setb ex1
setb tr0
SETB EA
reti
test_key: inc a
DEC A
JZ key_0
DEC A
JZ key_1
DEC A
JZ key_2
DEC A
JZ key_3
DEC A
JZ key_4
DEC A
JZ key_5
dec a
jz key_6
dec a
jz key_7
dec a
jz key_8
dec a
jz key_9
dec a
jz key_a
dec a
jz key_b
dec a
jz key_c
dec a
jz key_d
dec a
jz key_e
dec a
jz key_f
ljmp quit_key
key_0: mov num,#1
JMP quit_key
key_1: mov num,#2
JMP quit_key
key_2: mov num,#3
JMP quit_key
key_3: NOP
jmp quit_key
key_4: mov num,#4
JMP quit_key
key_5: mov num,#5
JMP quit_key
key_6: mov num,#6
JMP quit_key
key_7: NOP
JMP quit_key
key_8: mov num,#7
JMP quit_key
key_9: mov num,#8
JMP quit_key
key_a: mov num,#9
jmp quit_key
key_b: nop
JMP quit_key
key_c: lcall clear_qian3
mov codd,#85h
mov count2,#4
mov r0,#21h
setb press_xing
JMP quit_key
key_d: mov num,#0
jmp quit_key
key_e: lcall flash_input
setb press_enter
JMP quit_key
key_f: nop
JMP quit_key
quit_key: ret
alarm: clr red
clr beep
lcall s2
lcall s2
LCALL S2
LCALL S2
setb beep
setb red
ret
jin: clr relay1
setb relay2
lcall s2
clr relay2
SETB GREEN
ret
song: setb relay1
clr relay2
lcall s2
clr relay1
SETB GREEN
ret
DEAL_CONT: CLR green
MOV COUNT5,#83
COUNT_BEGIN: MOV TMOD,#15H
MOV TH1,#00H
MOV TL1,#00H
MOV TH0,#0
MOV TL0,#0
CLR TF1
SETB TR1
SETB TR0
WAIT0: JNB TF1, WAIT0
CLR TR1
CLR TF1
DJNZ COUNT5,COUNT_AGAIN
LJMP COUNT_QUIT
COUNT_AGAIN: SETB TR1
LJMP WAIT0
COUNT_QUIT: CLR TR0
CLR TR1
CLR TF1
MOV R4,TL0
MOV R5,TH0
nop
RET
SERIAL_RECEIVE:CLR CONTROL
SETB REN
WAIT1: JBC RI,READ
AJMP WAIT1
READ: MOV A,SBUF
MOV @R0,A
INC R0
DJNZ COUNT4,WAIT1
RET
TRANSFER: SETB CONTROL
CLR REN
MOV SBUF,A
SEND1: JNB TI,SEND1
CLR TI
CLR A
;CLR CONTROL
RET
;-----------------SEND-------------------
SEND:PUSH ACC
MOV BIT_COUNT,#08H
CLR CS
LCALL LONG_DELAY
CLR CLK
CLR C
SLOOP: MOV A,DATA_OUT
MOV C,ACC.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
LCALL SHORT_DELAY
CLR CLK
DJNZ BIT_COUNT,SLOOP
CLR DAT
POP ACC
RET
;-----------------------------------
;--------RECEIVE--------------------
RECEIVE:PUSH ACC
MOV BIT_COUNT,#08H
SETB DAT
MOV DATA_IN,#00H
LCALL LONG_DELAY
RELOOP:SETB CLK
LCALL SHORT_DELAY
CLR C
MOV C,DAT
MOV A,DATA_IN
RLC A
MOV DATA_IN,A
MOV C,DAT
CLR CLK
DJNZ BIT_COUNT,RELOOP
CLR DAT
POP ACC
RET
;-----------------------------------------------------
DISPLAY:
MOV DATA_OUT,COD
LCALL SEND
MOV DATA_OUT,NUM
LCALL SEND
NOP
SETB CS
RET
clear_qian3: MOV COD,#083H
MOV NUM,#0AH
LCALL LONG_DELAY
LCALL DISPLAY
INC COD
LCALL DISPLAY
INC COD
LCALL DISPLAY
ret
flash_input: mov cod,#88h
mov num,#0c7h
lcall display
lcall s2
LCALL S2
LCALL S2
LCALL S2
mov cod,#88h
mov num,#0ffh
lcall display
ret
ADJUST1: MOV A,R4
;ADD A,R4
;MOV R4,A
;ADD A,R4
MOV B,#3
MUL AB
MOV READ_NUM,A
MOV B,#100
DIV AB
MOV PULSE+2,A
MOV A,#10
XCH A,B
DIV AB
MOV PULSE+1,A
XCH A,B
MOV PULSE,A
RET
san_to_hex:
CLR C
mov r0,#21h
MOV A,@r0
MOV B,#100
MUL AB
MOV SET_NUM,A
inc r0
MOV A,@r0
MOV B,#10
MUL AB
XCH A,SET_NUM
ADD A,SET_NUM
inc r0
ADD A,@r0
MOV SET_NUM,a
RET
S1: MOV COUNT8,#8
S11: MOV COUNT7,#100
S12: MOV COUNT6,#255
S13: DJNZ COUNT6,S13
DJNZ COUNT7,S12
DJNZ COUNT8,S11
RET
S2: MOV COUNT8,#1
S21: MOV COUNT7,#250
S22: MOV COUNT6,#250
S23: DJNZ COUNT6,S23
DJNZ COUNT7,S22
DJNZ COUNT8,S21
RET
LONG_DELAY: MOV TIMER,#25
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY: MOV TIMER,#4
D_LOOP1: DJNZ TIMER,D_LOOP1
RET
ID_TAB: DB 01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -