登录
首页 单片机论坛
回帖 发帖
正文

主题:请教 串口通信问题

点击:1384 回复:5

请教各位:
    下面这段程序是:PC向单片机发送14个字节数据,单片机将14个字节存入30开始的地址单元,然后比较31单元数据与P1是否相等,如不等返回,继续等待接收PC数据,如果相等就将33单元的数据送到P0(P0口有发光2极管)显示。PC与单片机是用485方式 通讯。我在做这个实验时,出现奇观现象,单片机显示的数据和PC发送的数据不一致,如果33单元的数据是01-0F时单片机显示正常,如果33单元高4位不是0则显示不正常,例如33单元是2F单片机显示4F,如果33单元是4F单片机显示8F,不知是什么原因。
    MOV   40H,#08H
     MOV   41H,#10H
     MOV   42H,#04H
     MOV   43H,#02H
     MOV   44H,#40H
     MOV   45H,#20H
dl2:  MOV   TMOD,#20H
     MOV   TH1,#0FaH
     MOV   TL1,#0FaH
     SETB  TR1
     MOV   SCON,#50H
     MOV   P0,#00H
     MOV   R7,#0EH
     MOV   R0,#30H
dl6:  JNB   RI,$
     CLR   RI
     MOV   @R0,SBUF
     INC   R0
     DJNZ  R7,dl6
     MOV   SCON,#40H
     MOV   A,P1
     XRL   A,31H
     JZ    dl5
     SJMP  dl2
dl5:  MOV   P0,33H
     MOV   R3,#0FFH
dl3:  MOV   A,#0FFH
dl4:  DEC   A
     JNZ   dl4
     DJNZ  R3,dl3
     AJMP  dl2
     RET
     end  
06-06-13 20:42
首先看端口输出数据是否正确,可能是硬件接错.
06-06-16 13:15
如果你确定33H单元的内容是正确的,那你的问题似乎和串口通信无关,是你的显示部分有问题,不能正确显示33H单元的内容. 如果你33H单元的内容也不对,那可能是通信有错.
06-06-18 21:50
例如:当PC发送“ FF 01 FF 02 FF FF FF FF FF FF FF FF FF FF” 时,33H单元内容是‘02’ P0口显示02,当PC发送“ FF 01 FF20 FF FF FF FF FF FF FF FF FF FF” 时,33H单元内容是‘40’ P0口显示40,我实验过多次,只有PC发送的数据高4位是‘F’或‘0’时,单片机接收的数是正确的。如果高4位是1--E则单片机接收的数是不正确的,但好象有规律,PC发20单片机接收是40。PC发送40单片机接收是80。(我用的是串口精灵)
06-06-18 22:35
你首先要判断错误在哪边?先确定PC串口发出的数据是否正确?再看单片机这边有没错误?从你说的来看,你单片机的接线好象没错,因为你看到33H的内容和P0端口的内容是一致的。象这种调试,最好有个独立的串口监视器,看看线路上的数据就明了。似乎是高4位的数据被左移了一位,所以2变成4,4变成8,你不妨送个10H看看是不是会变成20H?送个60H是不是会变成C0H?送个50H是不是变成A0H?
06-06-21 13:48
我平时不常上这里来,如果需要继续讨论,请加我的QQ:88076273,或MSN:charlie_yu88@hotmail.com .
06-06-21 13:52

工控新闻

更多新闻资讯