📄 rt.a51
字号:
;请浏览“浙中电子村”网站 http://zzdzc.126.com
;单片机串口与计算机RS232接口三线连接,设置好波特率
;T1重装载数=256-晶振频率×2^SMOD÷32÷12÷波特率
;可以使用“终极串口调试”附带的“51波特率计算工具”
;本程序适用单片机晶振为12MHz,波特率为1200bps
;有问题和建议请Email到 yinhe_xi@tom.com 和我联系!
;------------------------------------------------------
org 0000h
ajmp star
org 0030h
ajmp rs232
;------------------------------------------------------
org 0030h
rs232: clr ea ;串口中断服务
mov a,sbuf ;接收一个字节
clr RI
cjne a,#0a5h,fd0
jnb ri,$
mov sbuf,a ;回送
jnb ti,$
clr ti
mov a,sbuf ;收到A5
mov a,57h
mov dptr,#ml ;命令处理
fa: mov sp,#58h
push dpl
push dph
fd0: mov 57h,a ;字节寄存57
reti
;--------------------------------------------------------
;串口预置程序
star: mov pcon,#00h ;SMOD=0
mov scon,#50h ;mod1 ren=1
mov tmod,#20h ;t1 mod2
mov tl1,#0e6h ;14 buad 110
mov th1,#0e6h ;E6 buad 1200 (12mhz )
clr tr1
clr ea
clr et1
setb es
setb tr1
ajmp $
;--------------------------------------------------------
;串口命令执行
ml: anl a,#0fh
mov r0,a
rl a
add a,r0
mov dptr,#bat
jmp @a+dptr
bat: ljmp 2000h ;转2000运行(10)
ljmp tram ;转发送Hex文件(11)
ljmp 0000h ;(12)
ljmp 0000h ;(13)
ljmp 0000h ;(14)
ljmp 0000h ;(15)
ljmp 0000h ;(16)
ljmp 0000h ;(17)
ljmp 0000h ;(18)
ljmp ram ;转接收Hex文件(19)
;---------------------------------------------------------
ram: mov dptr,#2000h ;接收Hex文件
pr0: jnb ri,$
mov a,sbuf ;接收一字节
clr ri
mov r1,a
pr1: movx @dptr,a ;存入RAM
inc dptr
cjne a,#0a5h,pr0 ;结束标记
jnb ri,$ ;A5 AA
mov a,sbuf
cjne a,#0aah,pr1
movx @dptr,a
mov sbuf,a
jnb ti,$
clr ti
mov dptr,#0000h
ajmp fa
;-----------------------------------------------------
tram: mov dptr,#2000h ;发送Hex文件
movx a,@dptr ;从RAM读入
tpr0: mov sbuf,a
jnb ti,$
clr ti
mov r1,a
tpr1:
inc dptr
cjne a,#0a5h,tpr0 ;结束标记
movx a,@dptr ;A5 AA
cjne a,#0aah,tpr1
mov sbuf,a
jnb ti,$
clr ti
mov dptr,#0000h
ajmp fa
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -