打印

RS232 上位机发送16字节,下位机只接收到前2个

[复制链接]
1549|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlcqu|  楼主 | 2011-11-16 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上位机 一次发送16字节
DIM SENDATA() AS BYTE
SENDDATA(0)=VAL("&H" & 55)
...
...
SENDDATA(15)=VAL("&H" & AA)
SERIALPORT1.WRITE(SENDDATA,0,16)

下位机循环接收16字节
         MOVLW  0X30
         MOVWF  FSR
         MOVLW  0X10
         MOVWF  0X78
LOOP
         CALL      RECV_DATA
         MOVWF   INDF
         INCF       FSR,F
         DECFSZ  0X78,F
         GOTO      LOOP

接收一字节子程序
RECV_DATA
         BANK0
         BTFSS     PIR1,RCIF
         GOTO      $-1
         MOVF      RCREG,W
         RETURN
为什么每次只能收到前两个字节。。请高手分析
沙发
xlcqu|  楼主 | 2011-11-16 20:37 | 只看该作者
问题已经找到,OERR溢出,只要加入BCF RCSTA,SREN即可

使用特权

评论回复
板凳
yewuyi| | 2011-11-17 10:49 | 只看该作者
接收要使用中断,否则数据丢包是很自然的事情。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

8

帖子

0

粉丝