导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→51串口通信出错,第一个数据被覆盖[求助]

* 29661: 51串口通信出错,第一个数据被覆盖[求助]

   yangdong5979 
yangdong5979发表的帖子 

 51串口通信出错,第一个数据被覆盖[求助]
我是一个单片机初学者,希望大侠不吝赐教!
我写了个串口数据接受程序(蛮菜的一个程序)!如果我一位一位的发送数据,接受端就可以正确的接受,但是一旦一起发送,如:01 02 03 04 05 06(我这个程序,只接受6字节数据),那么接收的数据就成了:02 03 04 05 06 06!
我不知道是甚么原因,希望各位高手指点!以下是我的程序:
要是各位高手看出甚么不对的地方,就请直接提出,小弟这里受教了,都是为了学习嘛!

ORG 0070H
COMM_BUFFER: DS 7;接受缓冲区
STOP_NUM EQU 77H ;本地识别号,判断是否为发送给自己的数据
REC_NUM EQU COMM_BUFFER+3;存放识别号
  ORG  0000H
  SJMP INIT
  ORG 0023H
  SJMP COM_INT
  ORG 0050H
INIT:
                  MOV R0,#STOP_NUM
  MOV A,#07H
  MOV @R0,A
  MOV TMOD,#20H;以下把波特率设置为9600
  MOV TH1,#0FAH
  MOV TL1,#0FAH
  MOV SCON,#50H
  MOV PCON,#80H
  SETB TR1
  SETB ES
  SETB EA
  MOV R0,#COMM_BUFFER
  MOV R7,#0 ;计数器
MAIN:   JMP $ ;主循环

COM_INT:
  PUSH ACC
  PUSH B
  CLR RI
   CLR EA
  MOV A,SBUF;我看了好像只要一起发送,第一个接收的就是02
                                   ;而不是01
  MOV @R0,A
  INC R7
  INC R0
  CJNE R7,#6,GO_ON
  MOV A,REC_NUM
  CJNE A,STOP_NUM,NO_MINE;不是自己的数据就不管
  MOV A,74H ;74H存放的是识别号
  CJNE A,#0A1H,NOT_A1
  MOV P1,#0FFH
  CALL DELAY
  JMP GO_ON
NOT_A1: 
  CJNE A,#0A2H,NOT_A2
  MOV P2,#0FFH
  CALL DELAY
  JMP GO_ON
NOT_A2: 
  CJNE A,#0A3H,NOT_A3
  MOV P3,#0FFH
  CALL DELAY
  JMP GO_ON
NOT_A3: ;命令等待执行
  CALL DELAY
  JMP NO_MINE
GO_ON: SETB EA
  POP B
  POP ACC
  RETI 
NO_MINE:
  MOV R0,#COMM_BUFFER
  MOV R7,#0
  JMP MAIN
DELAY:                      MOV R2,#78
DELAY1:                 MOV R3,#0FFH
DELAY2:                    MOV R4,#0FFH
                                DJNZ R4,$
  DJNZ R3,DELAY2
  DJNZ R2,DELAY1
  RET
  END

发表时间:2007年9月8日12:55:35

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:请问大虾,为什么同一程序偶用不同的编译器会有不同的结果?请问大虾:偶用SH51文件夹的编译器(在DO
[下一篇帖子]:呵呵 ~真不错哟呵呵 ~真不错哟呵呵 ~真不错哟呵呵 ~真不