80C51串口以方式3进行串行通信

一个51单片机程序,麻烦高手指点!!

80C51串口以方式3进行串行通信,第9个数据作为奇校验位,要求以中断方式(这个地方就头晕了),设波特率1200bps。

假设:1.fosc = 11.0592MHz;
      2.收发数据以$为结束符号;
      3.发送的数据存放在内部RAM 20H为首地址的区域,收到的数据存放在内部RAM以40H为首的地址区域;
      4.若收到的数据出错,则PSW中的F0标志位为1;
      5.当收到$时,数据已经发送完。

这个程序我这次是真的头疼了,不太会编啊!但还是硬着编了!但肯定是必错的程序!书本上的例子都是SM2有关的,老师说不要求掌握,说这题用不到。。。。。我也没什么参考的。
说实话这个题目都不太理解,它要求我们收发写在一个程序里,我就理解为,收部分数据,发部分数据,两个没什么关系,是两个程序,以下是我的程序。

比较长,略。

1.我现在知道我到底是什么不懂了,首先我弄不懂我这个编出来的到底是不是中断传送,而且这个中断和那个子程序调用有什么区别啊,我怎么觉得没什么区别啊?
2.还有不懂的我们下次基于这个再来,反正现在好多不理解啊!泪奔......

悬赏分:20 - 解决时间:2009-10-23 19:53
;--------------------------------------------------------
最佳答案:

;-----------------------本程序,既有发送能力,也有接收能力。

    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        ;1200bps@11.0592MHz
    MOV  TL1, #0E8H
    SETB TR1               ;启动T1
    SETB ES
    SETB EA
    RET
END

;--------------------------------------------------------
回答者: 做而论道 - 八级   2009-10-22 20:17
原文网址:http://zhidao.baidu.com/question/122462324.html
;--------------------------------------------------------
后记:

本程序在理论上还是正确的。
但是不好做实验,因为需要两台单片机协同操作,传输的几十字节的数据还在内存中,也无法显示,故此也没有进行实验验证。
后来经过百度Hi了解到,提问者他们也并不是要做实验,只是个大作业的形式。本程序已经得到老师的认同,获得通过。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值