急……AT89C51的串行口按工作方式1进行串行数据通信,假定波特率为2400bit/s

AT89C51的串行口按工作方式1进行串行数据通信,假定波特率为2400bit/s以查询方式传送数据,请编写发送程序... AT89C51的串行口按工作方式1进行串行数据通信,假定波特率为2400bit/s以查询方式传送数据,请编写发送程序 展开
 我来答
百度网友b86abfb
2020-04-10
知道答主
回答量:1
采纳率:0%
帮助的人:638
展开全部
ORG  0000H

AJMP MAIN    ;上电,转向主程序

ORG  0023H    ;串行口的中断入口地址

AJMP SERVE  ;转向中断服务程序

ORG  0040H    ;主程序

MAIN: MOV  SP,#60H  ;设置堆栈指针

MOV  SCON ,#50H

MOV  PCON ,#00H

MOV  TMOD,#20H

MOV  TH1,#0F3H

MOV  TL1,#0F3H

SETB  TR1

MOV  R0 ,#20H  ;置发送数据区首地址

MOV  R1 ,#40H  ;置接收数据区首地址

MOV  R7 ,#10H  ;置发送字节长度

MOV  R6 ,#10H  ;置接收字节长度

SETB ES            ;允许串行口中断

SETB EA            ;CPU允许中断

MOV  A ,@R0      ;取第一个数据发送

MOV  SBUF ,A        ;发送第一个数据

SJMP $      ;等待中断

SERVE: JNB  RI ,SEND  ;TI=1,为发送中断

CLR RI

MOV A ,SBUF  ;读出接收缓冲区内容

MOV @R1 ,A    ;读入接收缓冲区

DJNZ R6 ,L1  ;判断数据块发送完否

SJMP L2    ;数据块接收完,转L2

L1:INC  R1    ;修改数据区指针

L2:RETI                ;中断返回

SEND:

CLR  TI            ;清除发送中断标志

DJNZ R7 ,L3  ;判断数据块发送完否

SJMP L4    ;数据块接收完,转L4

L3:  MOV  A ,@R0    ;取数据发送

MOV  SBUF ,A    ;发送数据

INC  R0            ;修改数据地址

L4:

RETI                ;中断返回

END
查晓筠0i5
2015-01-14 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4997万
展开全部
需要给你做一份吗
更多追问追答
追问
好的
谢了,麻烦你了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式