📄 接收.asm
字号:
r_byte_i equ 30h ;30H代表中断接收到的字节数
r_byte_in equ 31h ;中断需要接收的字节数
r_data_i equ 32h ;中断接收使用的数据
r_bit_i equ 33h ;中断接收的位数
r_data_l equ 34h ;接收的临时数据
r_addr_i equ 20h ;中断接收到的字节的起始单元
org 0000h
ajmp start
org 0003h
ajmp int_outside
org 0003h
ajmp int_outside
org 0040h
start:
mov sp,#60h
mov r_bit_i,#0
mov a,#0
mov p1,#00111111b
setb p3.2
setb p3.3
clr p3.7
setb ea
setb it0
setb ex0
mov r_data_i,#0
mov r_byte_i,#0
mov r0,#20h
mov r_byte_in,#1
lcall rece_onebyte_int0
mov p1,r_data_l
ajmp $
rece_severalbyte_int0: ;中断接收多字节
rre:
lcall rece_onebyte_int0
mov @r0,r_data_l
inc r_byte_i
inc r0
djnz r_byte_in, rre
ret
rece_onebyte_int0: ;中断接收1字节
coo:
mov r2,r_bit_i
cjne r2,#8,coo
mov r_bit_i,#0
mov r_data_l,r_data_i
mov r_data_i,#0
ret
int_outside: ;外中断
push psw
push acc
nop
nop
mov a,r_data_i
rl a
mov r3,#0
test: ;5条指令数数
jb p3.3,out
inc r3
ajmp test
out:
cjne r3,#70,j70
j70:
jnc up70
ajmp error
up70:
cjne r3,#110,j110
j110:
jnc up110
ajmp exit
up110:
cjne r3,#140,j140
j140:
jnc up140
ajmp error
up140:
cjne r3,#180,j180
j180:
jnc up180
inc a
ajmp exit
up180:
ajmp error
exit:
inc r_bit_i
ajmp last
error:
rr a
last:
mov r_data_i,a
pop acc
pop psw
reti
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -