PC机通过9针RS232给单片机数据,单片机由串口中断获取数据并执行判断
为了方便调试,在p0/p2口接了灯。
可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶尔碰到连接线时,该LED会出现明灭现象。
1.应该是单片机没有收到PC通过MAX232发来的数据,不知道如何判断是PC和MAX232还是MAX232和MCU之间的问题。
2.PC端采用串口调试精灵程序,进行了9600.n.8.1设置,打开的串口,并选择16进制方式在文本区域输入数据,发送。灯仍然没有变化 ~~~~、
请各位大侠帮忙呀。。。万谢~~~~
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
用这个程序,串口调试助手。。可以吗
1、先判断max232是否有问题
测量max232的2、6脚的电压在正负8V以上,说明max232的电路没有问题;
2、在max232的TTL电平处接LED和限流电阻到VCC,接收的时候应该LED闪烁;如果没有闪烁说明pc到max232的连线有问题;
那就得先确定一端没有问题...
PC端:用别人成功正常的工具,你调试助手什么的,配置好正常的信息,用单片机来发数据和收数据.只做最简单的收发,这样就可以知道单片机是不是OK的
如果单片机OK了,那就可以用单片机来测自己的PC应用软件了...
你直接在串口中断里取反led的驱动端,然后通过调试软件发送数据,使发送的数据长度满足产生奇数个串口中断,这样就可以看到中断工作没有,如果连串口中断都没有的话,谈何接收数据?
可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶尔碰到连接线时,该LED会出现明灭现象。 ----------可能是你在P0、P2没有接上拉电阻吧,所以LED的状态不稳定
用PC一直发0x55 0xAA 然后用示波器,观察接收电路,如果不行,暂时用3线通讯,调试好了再加其他的控制线。
用示波器先看一p0/p1端的波形,确定有没问题;再检查MAX232的TTL电平,确定有没问题。最后再去检查软件
1、用示波器,保证Rxd有正确的波形;
2、确认单片机串口配置正确,收到正确的数据;
3、串口把收到的数据返回PC;