必须设置InputMode为comInputModeBinary以及确认Settings格式正确

解决方案 »

  1.   

    InputMode好象是PC机接收的属性,我说的是单片机接收到PC机发送的数据有错误!
      

  2.   

    双方的定义要一致 如都是asc码 or 都是十六进制数 萡特率一致等
      

  3.   

    下面是我写的单片机接收程序,不知有没有错误,请各位指点!
        PML  EQU 0D000H    
        PA   EQU 0D001H
        PB   EQU 0D002H
        PCC  EQU 0D003H
        DBPS  EQU 0E8H
        TX  BIT 20H.0
        DZ  EQU 36H
          ORG 0000H
           AJMP MAIN
          ORG 0023H
           AJMP INTU
          ORG 0100H
     MAIN:MOV R0,#20H
           MOV R7,#60H
    MAIN0:MOV @R0,#00H
          INC R0
          DJNZ R7,MAIN0
          MOV SP, #40H
          SETB EA
          SETB ES
          MOV TMOD,#20H
          MOV TH1,#DBPS
          MOV TL1,#DBPS
          SETB TR1
          MOV SCON,#0D0H
          MOV 30H,#0FH
          MOV 31H,#0DH
          MOV 32H,#0CH
          MOV 33H,#0BH
          MOV 34H,#0AH
          MOV 35H,#0FH
     GOOD:JB TX,LJ1
           AJMP LED INTU:JBC RI,RR1
          JBC TI,RR2
          RETI
      RR1:MOV A,SBUF
          MOV DZ,A
          SETB TX
      RR2:RETI
      
      LJ1:MOV R4,DZ
      LJ0:INC 30H
          MOV A,30H
           CJNE A, #0AH,LJ
          MOV 30H,#00H
          INC 31H
          MOV A,31H
           CJNE A, #0AH,LJ
          MOV 31H,#00H
          INC 32H
       LJ:DJNZ R4,LJ0
          MOV 33H,#0FH
          MOV 34H,#0FH
          MOV 35H,#0FH  LED:MOV DPTR,#PML
          MOV  A,#0FH
          MOVX @DPTR,A
          MOV R0,#30H
          MOV R3,#01H
          MOV A,R3
     LD02:MOV A,#0FFH
          MOV DPTR,#PA
          MOVX @DPTR,A
          MOV A,R3
          MOV DPTR,#PCC
          MOVX @DPTR,A
          MOV A,@R0
          MOV DPTR,#TABLE
          MOVC A,@A+DPTR
          MOV DPTR,#PA
          MOVX @DPTR,A
           ACALL DL
          INC R0
          MOV A,R3
           JB ACC.5,LD1
          RL A
          MOV R3,A
           AJMP LD02
      LD1:AJMP GOOD
    TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H
          DB 92H,82H,0F8H,80H,90H
          DB 90H,0A3H,0A3H,0A1H,86H
          DB 0FFH
      

  4.   

    对于你的单片机程序,我认为有以下几点问题,现提出来与你交流一下:
    1、在计算波特率的时候,不知你用的是多少,据我计算可能是2400bps,
        这要基于以下几个条件:smod=1、fosc=11.059mhz、th1=e8h(这是你程序里的是设定值)
         在这里smod=1是很关键的,如果没有将smod设为1,则计算出的波特率就为1200bps,
         不知是否与你的想法吻合。
    2、另外我发现在你的LJ1程序段里,好象有些问题,提出来分析一下:
        当跳转进入LJ1时,dz中为从pc机收到的数据,接着以dz中的值来累加30h中的值,但是在判断条件
        cjne a,30ah,lj处会有问题,因为你的30h内的初始值是#0fh,累加的结果无法满足你的条件(逢十进一)
       这样送到显示程序的数就不是你期望的值了,是否应将30h的初始值设为00h(31h、32h也是同样的)
    3、关于串行方式的选择我想谈谈我的看法,不知你选择方式3是什么用意,在sm2=1的情况下,若第九位
        数据(RB8)为0时,RI是不置位的,也就是单片机认为没有数据,不知在pc端你是怎么处理的?
        我建议如果没有特别的要求,还是使用方式1比较好一点。
      最后希望能多交流,在这里能遇到做单片机的满珍贵。
      有什么问题可以直接E-mail:[email protected]