找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

串口发送程序(汇编)

[复制链接]
admin 发表于 2012-9-2 18:34:35 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP COM_INT
ORG 1000H
MAIN MOV SP,#53Hv ;设置堆栈指针
MOV 78H,#20H ;设置要发送的数据块的首、末地址
MOV 77H,#00H
MOV 76H,#20H
MOV 75H,#40H
ACALL TRANS ;调用发送子程序
SJMP $
TRANS: MOV TMOD,#20H ;设置定时器/计数器
MOV TH1,#0F3H ;设置计数器1初值
MOV TL1,#0F3H
MOV PCON,#80H ;波特率加倍
SETB TR1 ;打开计数器1
MOV SCON,#40H ;设置串行口工作方式
MOV IE,#00H ;先关闭中断,利用查询方式发送地址侲
CLR F0
MOV SBUF,78H ;发送首地址高8位
WAIT1 JNB TI,WAIT1
CLR TI
MOV SBUF,77H ;发送首地址低8位
WAIT2 JNB TI,WAIT2
CLR TI
MOV SBUF,76H ;发送末地址高8位
WAIT3 JNB TI,WAIT3
CLR TI
MOV SBUF,75H ;发送末地址低8位
WAIT4 JNB TI,WAIT4
CLR TI
MOV IE,#90H
MOV DPH,78H
MOV DPL,77H
MOVX A,@DPTR
MOV SBUF,A
WAIT JNB F0 WAIT
RET
COM_INT:CLR TI ;关发送中断标志位TI
INC DPTR ;数据指针加1,准备发送下个数据
MOV A,DPH ;判断当前被发送的数据的地址是不是末地址
CJNE A,76H,END1 ;不是末地址则跳转
MOV A,DPL ;同上
CJNE A,75H,END1
SETB F0 ;数据发送完毕,置1标志位
CLR ES ;关串行口中断
CLR EA ;关中断
RET ;中断返回
END1: MOVX A,@DPTR ;将要发送的数据送累加器,准备发送
MOV SBUF,A ;发送数据
RETI ;中断返回
END
问题:
1.为什么子程序里要先发一遍首末地址的高低8位?
2. COM_INT中断中,INC DPTR语句后DPTR这个数据指针指向了哪里?
3.CJNE这两句如果不是末地址就都不是末地址,要是末地址就都是末地址?
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 04:44 , Processed in 0.052411 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表