PC机通过9针RS232给单片机数据

时间:2022-04-03 16:05:39
PC机通过9针RS232给单片机数据,单片机由串口中断获取数据并执行判断   
  为了方便调试,在p0/p2口接了灯。  
    
  可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶尔碰到连接线时,该LED会出现明灭现象。   
    
  1.应该是单片机没有收到PC通过MAX232发来的数据,不知道如何判断是PC和MAX232还是MAX232和MCU之间的问题。   
    
  2.PC端采用串口调试精灵程序,进行了9600.n.8.1设置,打开的串口,并选择16进制方式在文本区域输入数据,发送。灯仍然没有变化 ~~~~、
请各位大侠帮忙呀。。。万谢~~~~

18 个解决方案

#1


ORG 0000H
     AJMP MAIN
     ORG 0023H
     AJMP INTRP

MAIN: MOV TL1,#0FDH  ;定时器1作波特率发生器
      MOV TH1,#0FDH  ;波特率为9600
      MOV TMOD,#20H  ;定时器1方式2
      MOV SP,#5FH ;初始化堆栈
      CLR RI
      SETB ES
      SETB EA
      SETB TR1
      CLR ET1         ;禁止定时中断
      CLR ET0
      MOV SCON,#50H   ;串行方式1,允许串行接收

WAIT:AJMP WAIT


INTRP:MOV A,SBUF

      MOV P0,A
      CLR RI

RETURN:RETI
END
用这个程序,串口调试助手。。可以吗

#2


copy mypgm.asm com1 /b

#3


灯闪的太快?
接示波器,从头量,

#4


谢谢楼上的~~~

#5


1、先判断max232是否有问题
测量max232的2、6脚的电压在正负8V以上,说明max232的电路没有问题;

2、在max232的TTL电平处接LED和限流电阻到VCC,接收的时候应该LED闪烁;如果没有闪烁说明pc到max232的连线有问题;

#6


那就得先确定一端没有问题...

PC端:用别人成功正常的工具,你调试助手什么的,配置好正常的信息,用单片机来发数据和收数据.只做最简单的收发,这样就可以知道单片机是不是OK的

如果单片机OK了,那就可以用单片机来测自己的PC应用软件了...

#7


有示波器很容易就确定是哪个问题了!

#8


你直接在串口中断里取反led的驱动端,然后通过调试软件发送数据,使发送的数据长度满足产生奇数个串口中断,这样就可以看到中断工作没有,如果连串口中断都没有的话,谈何接收数据?

#9


 可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶尔碰到连接线时,该LED会出现明灭现象。 ----------可能是你在P0、P2没有接上拉电阻吧,所以LED的状态不稳定

#10


用PC一直发0x55 0xAA 然后用示波器,观察接收电路,如果不行,暂时用3线通讯,调试好了再加其他的控制线。

#11


确定好电路,确定好程序

或者先仿真 在实际调试

#12


看电路和连线是否正确.

#13


用示波器先看一p0/p1端的波形,确定有没问题;再检查MAX232的TTL电平,确定有没问题。最后再去检查软件

#14


这很简单哦

#15


1、用示波器,保证Rxd有正确的波形;
2、确认单片机串口配置正确,收到正确的数据;
3、串口把收到的数据返回PC;

#16


先支持一下

#17


K~~原来是老贴。。。

#18


接分是王道!

#1


ORG 0000H
     AJMP MAIN
     ORG 0023H
     AJMP INTRP

MAIN: MOV TL1,#0FDH  ;定时器1作波特率发生器
      MOV TH1,#0FDH  ;波特率为9600
      MOV TMOD,#20H  ;定时器1方式2
      MOV SP,#5FH ;初始化堆栈
      CLR RI
      SETB ES
      SETB EA
      SETB TR1
      CLR ET1         ;禁止定时中断
      CLR ET0
      MOV SCON,#50H   ;串行方式1,允许串行接收

WAIT:AJMP WAIT


INTRP:MOV A,SBUF

      MOV P0,A
      CLR RI

RETURN:RETI
END
用这个程序,串口调试助手。。可以吗

#2


copy mypgm.asm com1 /b

#3


灯闪的太快?
接示波器,从头量,

#4


谢谢楼上的~~~

#5


1、先判断max232是否有问题
测量max232的2、6脚的电压在正负8V以上,说明max232的电路没有问题;

2、在max232的TTL电平处接LED和限流电阻到VCC,接收的时候应该LED闪烁;如果没有闪烁说明pc到max232的连线有问题;

#6


那就得先确定一端没有问题...

PC端:用别人成功正常的工具,你调试助手什么的,配置好正常的信息,用单片机来发数据和收数据.只做最简单的收发,这样就可以知道单片机是不是OK的

如果单片机OK了,那就可以用单片机来测自己的PC应用软件了...

#7


有示波器很容易就确定是哪个问题了!

#8


你直接在串口中断里取反led的驱动端,然后通过调试软件发送数据,使发送的数据长度满足产生奇数个串口中断,这样就可以看到中断工作没有,如果连串口中断都没有的话,谈何接收数据?

#9


 可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶尔碰到连接线时,该LED会出现明灭现象。 ----------可能是你在P0、P2没有接上拉电阻吧,所以LED的状态不稳定

#10


用PC一直发0x55 0xAA 然后用示波器,观察接收电路,如果不行,暂时用3线通讯,调试好了再加其他的控制线。

#11


确定好电路,确定好程序

或者先仿真 在实际调试

#12


看电路和连线是否正确.

#13


用示波器先看一p0/p1端的波形,确定有没问题;再检查MAX232的TTL电平,确定有没问题。最后再去检查软件

#14


这很简单哦

#15


1、用示波器,保证Rxd有正确的波形;
2、确认单片机串口配置正确,收到正确的数据;
3、串口把收到的数据返回PC;

#16


先支持一下

#17


K~~原来是老贴。。。

#18


接分是王道!