中易网

编写串行口工作程序,使串行口工作于方式3,晶振频率为11.0592MHz,波特率为9600bps,第九位为偶校验位

答案:1  悬赏:50  
解决时间 2021-01-16 00:25
  • 提问者网友:愿为果
  • 2021-01-15 20:51
编写串行口工作程序,使串行口工作于方式3,晶振频率为11.0592MHz,波特率为9600bps,第九位为偶校验位
最佳答案
  • 二级知识专家网友:轮獄道
  • 2021-01-15 21:35
;-----------------------本程序,既有发送能力,也有接收能力.

ORG 0000H
SJMP MAIN
ORG 0023H
SJMP RECE_S
ORG 0030H
MAIN:
LCALL INI_S_T1 ;调用初始化子程序.
;串行口工作在方式3,允许接收,允许中断;T1控制波特率.
;-----------------------下面写些数据,准备发送.
MOV A, #88H
MOV R0, #20H
MOV R1, #18
INI_LOOP:
MOV @R0, A
INC R0
DEC A
DJNZ R1, INI_LOOP
MOV @R0, '$'
;-----------------------发送程序.
CLR PSW.5
MOV R0, #20H
MOV R1, #40H
FA_LOOP:
MOV A, @R0 ;第一个,取自20H单元.
MOV C, P
MOV TB8, C
MOV SBUF, A ;发送.
INC R0 ;地址指针加一.
JNB TI, $ ;等待发送结束.
CLR TI
CJNE A, #'$', FA_LOOP ;不是$,继续发送.

WAIT: AJMP WAIT ;结束了
;-------------------------------------------
RECE_S: ;中断接收子程序.
CLR RI
MOV A, SBUF ;取出收到的.
JB P, P_1
JB RB8, ERR
SJMP GOOD
P_1:
JNB RB8, ERR
GOOD:
MOV @R1, A ;保存数据.
INC R1
CJNE A, #'$', RE_END ;不是$,继续接收.
CLR REN ;是,则停止接收.
RE_END:
RETI
ERR:
SETB PSW.5 ;即F0标志位.
RETI
;-------------------------------------------
INI_S_T1:
MOV SCON, #11010000B ;串行口工作在方式3,允许接收.
MOV PCON, #0
MOV TMOD, #20H ;T1工作方式2
MOV TH1, #0E8H ;[email protected]
MOV TL1, #0E8H
SETB TR1 ;启动T1
SETB ES
SETB EA
RET
END追问不好意思 我是新手 这是考试题目 所以麻烦能不能用C语言写的详细一点 谢谢了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息