新手问题:不同指令周期mcu通信疑问

[复制链接]
 楼主| zzaqtf 发表于 2007-10-23 11:14 | 显示全部楼层 |阅读模式
如果我用2个11.0592mhz的mcu,1个6分频,1个12分频。<br />6分频执行<br />for(i&nbsp;=&nbsp;0;i&lt1000;i++)<br />{<br />TI&nbsp;=&nbsp;0;<br />SBUF&nbsp;=&nbsp;0x01;<br />while(!TI);<br />TI&nbsp;=&nbsp;0;<br />}<br /><br />12分频执行<br />for(i&nbsp;=&nbsp;0;i&lt1000;i++)<br />{<br />RI&nbsp;=&nbsp;0;<br />while(!RI);<br />buf=SBUF;<br />RI&nbsp;=&nbsp;0;<br />}<br /><br />这样可以正确接收吗?是否需要在指令较快的发送段2字节之间加入空指令周期.
xwj 发表于 2007-10-23 11:43 | 显示全部楼层

首先保证波特率一直,然后留点间隙作为处理时间,

就可以自己同步了<br /><br /><br />LZ还没入门哦,加油学习吧
 楼主| zzaqtf 发表于 2007-10-23 12:12 | 显示全部楼层

我主要不搞这个但是偶尔会用到~~了解不多

波特率肯定设置的一样,我只是怀疑指令周期不同会造成什么影响。<br />慢速机中断响应接收第1个字节的时候,快速机可能已经发出2个字节了;<br />慢速机中断响应接收第2个字节的时候,快速机可能已经发出4个字节了……<br />这样只有双字节缓冲的串口怎么处理呢?<br /><br />实际情况(30字节连续发),貌似没影响通信正确,自己没想通,所以来问问~~~~~~~~~~~~~~<br /><br />自己留间隙好麻烦,那不是降低字符串的传输速度了么,对时序要求严格和周期要求短的程序感觉不好处理
chunyang 发表于 2007-10-23 13:46 | 显示全部楼层

只要波特率设置正确就不会有问题

任何带串口的MCU,不论速度快慢,都有串口速率的极限,而内核速度与这个极限的串行帧速率相比则要快的多,只要这时不进行复杂的处理、运算,是不会有任何问题的。楼主自己计算并比较一下指令周期和串行帧周期吧,一切证据说话,不要想当然。
 楼主| zzaqtf 发表于 2007-10-23 23:07 | 显示全部楼层

请斑竹再解释各简单问题吧,没人讨论好闷头啊

那置标志位的串口中断程序怎么解释。简单举例问下..<br />如果在function1函数中响应中断,经过function2后才开始接受,这段时间用9600bps能发50-60字节吧。为什么很多例题或者说驱动程序,都这样搞。(我是直接在串口中断内接受的。。)难道中断跳出来自动优先寻找所置位的位变量?<br />main()<br />{&nbsp;init();<br />&nbsp;&nbsp;EA&nbsp;=&nbsp;1;ES&nbsp;=&nbsp;1;<br />while(1)<br />{<br />&nbsp;&nbsp;function1();&nbsp;//大概2ms<br />&nbsp;&nbsp;function2();&nbsp;//大概50ms<br />&nbsp;if(flag)<br />&nbsp;&nbsp;{&nbsp;ES&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;recv();&nbsp;&nbsp;&nbsp;/收若干字节<br />&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}<br /><br />void&nbsp;abc()&nbsp;interrupt&nbsp;4<br />{<br />&nbsp;&nbsp;if(RI)<br />&nbsp;&nbsp;{RI&nbsp;=&nbsp;0;flag&nbsp;=&nbsp;1;}<br />&nbsp;&nbsp;if(TI)<br />&nbsp;&nbsp;{TI&nbsp;=&nbsp;0;}<br />}<br />
xwj 发表于 2007-10-23 23:18 | 显示全部楼层

你5楼的程序结构是错误的,没法连续接收

把串口程序写成这样的可以说根本没入门,<br />如果哪本书上有这样的例程,那么,扔了它!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部