还是串口通讯的问题,唉......(300分)

  • 主题发起人 主题发起人 U100
  • 开始时间 开始时间
乱码一般有两种可能性:
1:串口设置不正确。
2:你发送的内容不对。

不好意思,单片机没玩过。
 
字节数组接收
 
我的发送程序,发一个1到PC去,哪位高人看一下
  org 0000h
  ajmp start
start:mov tmod,#20h ;设置定时器T1方式2
   mov pcon,#00h;使SMOD为0
   mov tl1,#0fdh;波特率为9600b/s
   mov th1,#0fdh
   setb ea;开全局中断
   clr et1;关T1中断
   setb es;开串行中断
   setb tr1;开T1定时
   mov scon,#50h;串行方式1,允许接收
send:mov a,#31h;发送数据,r0为存放数据的地址
   mov sbuf,a
   jnb ti,$
   clr ti
   end
 
从你的程序看也没有什么大的问题,只是从习惯上不要使用
  JNB TI,$
这样的写法,正确的做法是:
  JBC TI,ON_TXBYTE
  ...
ON_TXBYTE:
  ...
另外,对中断的处理也一样,你的程序里好象没有直接使用ES中断源,你开放它是没有意义
的,况且,如果你开放了ES,那么在地址0023H的位置你必须有所处理。
 
谢谢SupermanTm,这段程序是为了在大富翁贴帖令时改的,确实有你上面说的问题,谢谢提
醒。但是这些还不足以改变结果。发送端没错的话,接收端有问题的可能性也不大了,我已
经试过几个不同的方案了。看来只有怀疑硬件了。
 
我在其他贴上看到收发的字符模式或二进制模式,是不是这个原因,请高手值点
波特率应该是没有问题的了,我把发送和接收程序的波特率都改成2400收到的乱码和不
改是一样的,改成不同的收到的乱码就不同,可以认为不是波特率的问题了。
 
你用这个串行口测试程序试试看:
http://www.smartvdox.com/upload/exe/com_demo.exe

这是我自己编写的简单串行口程序,它的接受总是使用二进制的
 
谢谢SupermanTm兄,这就去实验室是一下。
 
没人的话自己顶一下。
板子已经送检,如果是硬件问题就散分了。
 
多人接受答案了。
 
结贴,谢谢大家
 
后退
顶部