接收.asm
来自「红外接受的发送程序载波38k」· 汇编 代码 · 共 107 行
ASM
107 行
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 + =
减小字号Ctrl + -
显示快捷键?