两个8051做串行多工数据传输程序
org 00h
jmp start
org 23h
jmp uarti ;uart中断子程序
start: MOV tmod,#20h ;timer1工作在mode2
MOV scon,#50h ;uart工作在mode1
MOV th1,#0f3h ;波特率2400
setb tr1 ;启动timer1
MOV ie,#10010000b ;uart中断使能
MOV 30h,#0ffh ;指拨开关初值
l1: MOV a,p1 ;读入指拨开关
cjne a,30h,keyin ;指拨开关有变化否?
jmp l1
keyin: MOV 30h,a ;指拨开关存入新值
MOV sbuf,a ;发送出去
wait: jbc ti,l1 ;发送完毕否?
jmp wait
uarti: push aCC ;压入堆栈
push psw
jbc ri,l2 ;是否接收中断?
jmp return
l2: MOV a,sbuf ;将sbuf载入acc
MOV p2,a ;输出至p2
return: pop psw
pop acc ;取回acc
reti
end