📄 m1_2051.1.asm
字号:
mov a,recievebuf0
orl a,b
mov idbuf4,a
mov a,recievebuf1
swap a
mov b,a
mov a,recievebuf2
orl a,b
mov idbuf5,a
mov a,recievebuf3
swap a
mov b,a
mov a,recievebuf4
orl a,b
mov idbuf6,a
mov a,recievebuf5
swap a
mov b,a
mov a,recievebuf6
orl a,b
mov idbuf7,a
mov a,recievebuf7
swap a
mov b,a
mov a,recievebuf8
orl a,b
mov idbuf8,a
mov a,recievebuf9
swap a
mov b,a
mov a,recievebuf10
orl a,b
mov idbuf9,a
mov a,recievebuf11
swap a
mov b,a
mov a,recievebuf12
orl a,b
mov idbuf10,a
ret
;=======================================
;turn assic to hex
;=======================================
change: mov rrx,#6
mov r0,#recievebuf
chang2: mov a,@r0
clr c
cjne a,#40h,chang0
chang0: jc chang1
clr c
subb a,#37h
mov @r0,a
inc r0
djnz rrx,chang2
ljmp chang3
chang1: clr c
subb a,#30h
mov @r0,a
inc r0
djnz rrx,chang2
chang3: mov a,recievebuf
swap a
mov b,a
mov a,recievebuf0
orl a,b
mov idbuf1,a
mov a,recievebuf1
swap a
mov b,a
mov a,recievebuf2
orl a,b
mov idbuf2,a
clr c
subb a,idbuf1
mov idbuf2,a
mov a,idbuf1
xrl a,#42h
mov idbuf1,a
mov a,idbuf2
xrl a,#84h
mov idbuf2,a
ret
;=========================================
;hex to assic
;=========================================
hextoassic: mov rrx,#3
mov r0,#idbuf1
mov r1,#recievebuf
hextoassic0: mov a,@r0
inc r0
mov @r1,a
inc r1
inc r1
djnz rrx,hextoassic0
inc r0
inc r0
inc r0
mov rrx,#4
hextoassic1: mov a,@r0
inc r0
mov @r1,a
inc r1
inc r1
djnz rrx,hextoassic1
mov recievebuf30,idbuf4
mov rrx,#16
mov r0,#recievebuf
one_two: mov a,@r0
mov b,a
swap a
anl a,#0fh
mov @r0,a
mov a,b
anl a,#0fh
inc r0
mov @r0,a
inc r0
djnz rrx,one_two
hex_assic: mov rrx,#32
mov r0,#recievebuf
hex_assic2: mov a,@r0
clr c
cjne a,#0ah,hex_assic0
hex_assic0: jnc hex_assic1
add a,#30h
mov @r0,a
inc r0
djnz rrx,hex_assic2
ljmp hex_assic3
hex_assic1: clr c
add a,#37h
mov @r0,a
inc r0
djnz rrx,hex_assic2
hex_assic3: nop
ret
;===================================;
;===================================;
delay: mov r5,#0fah
dl0: mov r6,#0fah
dl1: nop
djnz r6,dl1
djnz r5,dl0
ret
;===================================;
;初始化波特率为9600 ;
;允许定时器0,1中断 ;
;外部中断0为跳变触发方式 ;
;===================================;
iniall: mov rimod,#0
mov scon,#01010000B ;SM0 SM1 SM2 REN TB8 RB8 TI RI
mov tmod,#21h
mov th0,#15h
mov tl0,#9fh
mov th1,#0fdh
mov tl1,#0fdh
mov ie, #00010011b ;EA - ET2 ES ET1 EX1 ET0 EX0
mov tcon,#01010001b ;TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
setb ea
ret
;=====================================
;接受assic码中断
;=====================================
r_recieve: push psw
push acc
push 00h
jbc ri,r_receve
jbc ti,r_send
sjmp d_reti
r_send: mov a,sendnum
jz d_ireti
mov r0,sicon
mov a,@r0
mov sbuf,a
dec sendnum
inc sicon
ljmp d_reti
r_receve: mov rega,sbuf
mov a,rimod
rl a
add a,rimod
mov dptr,#ritab
jmp @a+dptr
ritab: ljmp r_mod0
ljmp r_mod1
ljmp r_mod2
;===================
r_mod0: mov a,rega
cjne a ,#02h,r_mod00
inc rimod
mov ricon,#recievebuf
mov checksum,#0
mov recievnum,#0
ljmp r_mod00
r_mod00: ljmp d_reti
;===================
r_mod1: mov a,rega
cjne a,#03h,r_mod10
inc rimod
ljmp d_reti
r_mod10: mov r0,ricon
mov @r0,a
xrl checksum,a
inc ricon
inc recievnum
ljmp d_reti
r_mod2: mov a,rega
cjne a,checksum,d_reti
mov rimod,#0
setb f_recieve
d_ireti: nop
nop
d_reti: pop 00h
pop acc
pop psw
reti
;==========================================
;定时器0中断
;==========================================
_time_0: push psw
push acc
clr tr0
mov th0,#15h
mov tl0,#9fh
inc timeout
;inc ledtime
;mov a,ledtime
cjne a,#10,_time_01
cpl led
;mov ledtime,#0
_time_01: setb tr0
pop acc
pop psw
reti
;========================================
;外部中断0
;========================================
_int_0: push psw
push acc
push 00h
jnb f_send,_int_recieve
mov r0,sicon
mov a,@r0
mov p1,a
setb requ
nop
nop
nop
nop
clr requ
nop
nop
nop
nop
nop
setb requ
inc sicon
djnz rrx,_int_01
clr f_send
ljmp _int_01
_int_recieve:mov a,ex0_rimod
rl a
add a,ex0_rimod
mov dptr,#ex0_ritab
jmp @a+dptr
ex0_ritab: ljmp ex_r_mod0
ljmp ex_r_mod1
ljmp ex_r_mod2
ex_r_mod0: setb requ
nop
nop
nop
nop
clr requ
nop
nop
nop
nop
setb requ
mov p1,#0ffh
inc ex0_rimod
mov rrx0,#12
mov rricon,#idbuf0
ljmp _int_01
ex_r_mod1: mov r0,rricon
mov a,p1
mov @r0,a
inc rricon
djnz rrx0,_int_00
mov ex0_rimod,#0
ex_r_mod2: mov a,idbuf0
cjne a,#02h,_int_01
mov a,idbuf11
cjne a,#0dh,_int_01
setb f_money
ljmp _int_01
_int_00: setb requ
nop
nop
nop
nop
clr requ
nop
nop
nop
nop
nop
setb requ
_int_01: pop 00h
pop acc
pop psw
reti
numkey: db 0dh,0deh,6fh,37h,83h,83h,
db 14h,8ah,0c5h,0e2h,28h,28h,
db 7dh,3eh,9fh,4fh,95h,95h,
db 0adh,0d6h,06bh,35h,0c8h,0c8h,
db 0dfh,0efh,77h,0bbh,0e4h,0e4h,
db 09h,84h,42h,21h,0bch,0bch,
db 5fh,0afh,0d7h,0ebh,0a5h,0a5h,
db 29h,14h,8ah,0c5h,9fh,9fh,
db 0fah,0fdh,0feh,7fh,0ffh,0ffh,
db 73h,39h,9ch,0ceh,0beh,0beh,
db 0fch,7eh,0bfh,0dfh,0bfh,0bfh,
db 0cfh,0e7h,73h,39h,51h,51h,
db 0f7h,0fbh,7dh,3eh,5ah,5ah,
db 0f2h,79h,3ch,1eh,8dh,8dh,
db 0cfh,0e7h,73h,39h,45h,45h,
db 0b7h,0dbh,06dh,0b6h,7dh,7dh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -