请教:单片机与PC机的232通讯 点击:2197 | 回复:14



努力就会进步

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 32回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2006年6月22日
发表于:2006-07-24 16:11:00
楼主
  请教:我想实验单片机与PC机的RS232接口通讯,结果PC机收到的信息与预期不相符,请高手指教,谢谢!我所做的如下:
单片机侧:   硬件 89C2051系统 MAX232单元电路
             软件         ORG   0000H
                          LJMP  MAIN
                          ORG   0023H
                          LJMP  RECTI
                          ORG   0100H
                   MAIN:  MOV   R0,#50H
                          MOV   R7,#10H
                          MOV   A,#55H
                  LOOP:   MOV   @R0,A
                          INC   R0
                          DJNZ  R7,LOOP
                          MOV   SP,#60H
                          MOV   TMOD,#20H
                          MOV   TH1,#0FAH
                          MOV   TL1,#0FAH
                          MOV   SCON,#50H
                          MOV   PCON,#00H
                          SETB  EA
                          SETB  ES
                          SETB  TR1
                  RECTI:  PUSH  ACC
             &nbs



虞先生

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 16回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2006年6月19日
发表于:2006-07-25 09:38:00
1楼
如果你真是用这个程序来调试的话,我看根本不能收发数据哦。你的接收中断RECTI:似乎没读回数据就返回了。而你的发送入口SENDWT:好象永远走不进去啊。

努力就会进步

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 32回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2006年6月22日
发表于:2006-07-25 11:19:00
2楼
请问应该如何改呢?为什么通讯时又能收到乱码呢?感谢!

虞先生

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 16回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2006年6月19日
发表于:2006-07-25 12:00:00
3楼
我现在比较忙,等下有空点我帮你看看怎么改吧。要不加我QQ:88076273吧。

owenwan

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 10回
  • 年度积分:0
  • 历史总积分:38
  • 注册:2006年7月28日
发表于:2006-07-29 00:16:00
4楼
串口中断程序:
UART:  PUSH ACC
       PUSH PSW
       SETB RS0
       SETB RS1
       JBC RI, UART1
       LJMP RETURN
UART1: MOV A, SBUF
       MOV R1, 2EH  //定义buffer地址
       MOV @R1, A
       INC 2EH
       MOV A, 2EH
       CJNE A, #40H, RETURN //收到10个字节;
       MOV 2EH, #35H //再赋初值,
RETURN:CLR TI
       POP PSW
       POP ACC
       RETI
串口发送程序:
SEND:  CLR ES
       MOV A, #0A5H
       MOV SBUF, A
SEND0: JBC   TI,SEND1
       JMP SEND0
...自已定义发送多少个字节
...

SEND13:JBC   TI,SEND14
       JMP SEND13
SEND14:SETB ES
       RET
初始化串口:
SETUP: MOV TMOD, #25H               
//T1 for rs232 baud generator, 8 bit auto-reload
       MOV TL1, #0FDH                ; rs232 baud rate 9600
       MOV TH1, #0FDH 

....

....

cuiying_beijing

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 62回
  • 年度积分:0
  • 历史总积分:195
  • 注册:2004年9月24日
发表于:2006-08-01 10:55:00
5楼
检查一下你的晶振,波特率设置!

happyoicq

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 1382回
  • 年度积分:0
  • 历史总积分:3120
  • 注册:2005年10月16日
发表于:2006-08-09 13:53:00
6楼
学习学习

zajiju

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2006年9月08日
发表于:2006-09-16 08:40:00
7楼
多半是波特率不对,我也做过,不过我用的是三极管代的232

zajiju

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2006年9月08日
发表于:2006-09-16 08:42:00
8楼
补点:晶振要用11.0592的不然你波特率会不准的.就这样,多半行了.

160元单片机USB通信板

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-11-06 19:58:00
9楼
我这里有串口发命令给单片机,再由单片机读写IIC的程序
需要请联系
http://www.lgmcu.com/
电话:13632846183
E-MAIL:jx_0009@yahoo.com.cn
QQ: 617715546

zajiju

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2006年9月08日
发表于:2006-12-22 18:26:00
10楼
PC与你的单片机波特率要一样.再有用自动重载的,就可以在收中断不再对定时器付值了.有问题:QQ573618118

zajiju

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2006年9月08日
发表于:2006-12-22 18:27:00
11楼
电路没接好,也可能收到乱码的.

沙漠的风雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 461回
  • 年度积分:0
  • 历史总积分:1069
  • 注册:2003年10月23日
发表于:2006-12-31 16:58:00
12楼
从你的描述来看,是可一通讯就是数据不正确,应该是两边的波特率不一样吧,还要注意DTR, RTS

努力就会进步

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 32回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2006年6月22日
发表于:2007-02-09 08:44:00
13楼
对,就是DTR,RTS引起的,我用的是三线式,实际上,这种方式时,PC机侧连接头内还有短接线.

草地呢

  • 精华:1帖
  • 求助:0帖
  • 帖子:14帖 | 238回
  • 年度积分:0
  • 历史总积分:492
  • 注册:2006年10月12日
发表于:2007-04-07 16:21:00
14楼
波特率应该是0xfdh,9600,n,8,1设置试以下.

热门招聘
相关主题

官方公众号

智造工程师