本在在做串口实验的时候,用PROTEUS来仿真,这个实验很简单,就是利用上位机软件控制LED灯的亮灭,在用PROTEUS中的虚拟终端模拟的时候,发现一个这样的现象,求解释:
1.利用十六进制的形式发送数字1——9,利用示波器测量波形
2.在程序中,定义一个数组,在串口接收完成中断函数中将UDR的值赋给数组
3.将实际发送的数字,程序接收到的数字,与示波器测量到的波形进行对比,得到如下现象:发送的数字的ASCII与示波器显示的波形能够匹配得上,但是接收到的数字就完全不一样了,什么原因造成的呢?
另外关于发送数据的时候,起始信号是必须的,那么起始信号是否占用一个串口时钟周期,如果这样的话,再加上一位停止信号,那么就应该是10位才对,可是为什么我所测到的波形都是只有9位数呢?
此帖出自
小平头技术问答
2.可能是TTL或CMOS电平信号,而不会是RS-232C电平信号(两者的逻辑是反的)。
3.如果收到的内容不对,先检查收发波特率是否设置得一致。
4.“停止位”已被隐藏在“空闲”里所以看不到,因为两者是同样的电平。
一周热门 更多>