[ZLG-ARM] 请教诸位:2200uart实验2:8字节数据的发送次数!LED显示!

[复制链接]
2330|3
 楼主| liutongen 发表于 2007-5-28 17:19 | 显示全部楼层 |阅读模式
1.我做该实验时试着传送多组8位数据,发现各个数据的可发送次数是不同的,比如发送99&nbsp;99&nbsp;99&nbsp;99&nbsp;99&nbsp;99&nbsp;99&nbsp;99&nbsp;有时可以发送30多次,再发送就不行了,有时却能发送50多次,而且每次发送次数都不固定(刚刚又发了一次,该次为9),不知其中原因,故向各位高手发问,请多多指点。(为保险起见我又发了一次,该次为7)<br /><br />2.关于LED显示问题:如下程序为盘中带程序的一部分。<br />&nbsp;rcv_counter&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;HC595_SendDat(~rcv_counter);<br />&nbsp;&nbsp;&nbsp;while(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待中断<br />&nbsp;&nbsp;&nbsp;{&nbsp;if(1==rcv_new)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ISendBuf();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;将接收到的数据发送回主机<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_counter++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;接收计数值加一<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HC595_SendDat(~rcv_counter);<br /><br />分析:<br />rcv_counter&nbsp;=&nbsp;0;则~rcv_counter=11111111<br />那么执行完HC595_SendDat(~rcv_counter);后8个LED全不亮,当有中断后,执行到rcv_counter++;时,rcv_counter&nbsp;=&nbsp;1,此时~rcv_counter=11111110,那么执行完HC595_SendDat(~rcv_counter);后,是不是应该LED1亮,其他全不亮,依此类推,下一此LED2亮,下次轮到LED1、LED2同时亮,下一此仅LED3亮。<br />但实验结果却是:当rcv_counter&nbsp;=&nbsp;1后,LED2亮,接着是LED3亮,然后是LED2、LED3同时亮,然后是LED4亮,和上面的分析差了个LED1,好像LEDI不是接受第一个数据,而是LED2接受了第一个数据。不知我哪里分析错了,请指点。
haohao2008 发表于 2007-5-31 22:18 | 显示全部楼层

LED

rcv_counter&nbsp;=&nbsp;1时由于rcv_counter++;&nbsp;所有当执行HC595_SendDat(~rcv_counter);的时候&nbsp;&nbsp;,&nbsp;&nbsp;已经为rcv_counter&nbsp;=&nbsp;2了<br />;
 楼主| liutongen 发表于 2007-6-2 19:52 | 显示全部楼层

谢谢2楼!

“rcv_counter&nbsp;=&nbsp;1时由于rcv_counter++;&nbsp;所有当执行HC595_SendDat(~rcv_counter);的时候&nbsp;&nbsp;,&nbsp;&nbsp;已经为rcv_counter&nbsp;=&nbsp;2了”<br />&nbsp;<br />如下:rcv_counter&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;HC595_SendDat(~rcv_counter);<br />&nbsp;&nbsp;&nbsp;while(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待中断<br />&nbsp;&nbsp;&nbsp;{&nbsp;if(1==rcv_new)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ISendBuf();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;将接收到的数据发送回主机<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_counter++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;接收计数值加一<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HC595_SendDat(~rcv_counter);<br />关键是当执行到rcv_counter++前,&nbsp;rcv_counter&nbsp;=&nbsp;0;此后&nbsp;rcv_counter=1,接着执行HC595_SendDat(~rcv_counter);LED应该怎么亮?
 楼主| liutongen 发表于 2007-6-2 19:54 | 显示全部楼层

请问ZLGARM

2200uart实验2:8字节数据的发送次数!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

20

帖子

0

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