打印
[ZLG-ARM]

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

[复制链接]
1187|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liutongen|  楼主 | 2007-5-28 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.我做该实验时试着传送多组8位数据,发现各个数据的可发送次数是不同的,比如发送99 99 99 99 99 99 99 99 有时可以发送30多次,再发送就不行了,有时却能发送50多次,而且每次发送次数都不固定(刚刚又发了一次,该次为9),不知其中原因,故向各位高手发问,请多多指点。(为保险起见我又发了一次,该次为7)

2.关于LED显示问题:如下程序为盘中带程序的一部分。
 rcv_counter = 0;
   HC595_SendDat(~rcv_counter);
   while(1)                             // 等待中断
   { if(1==rcv_new)
     {  rcv_new = 0;
        ISendBuf();                     // 将接收到的数据发送回主机
        rcv_counter++;                    // 接收计数值加一
        HC595_SendDat(~rcv_counter);

分析:
rcv_counter = 0;则~rcv_counter=11111111
那么执行完HC595_SendDat(~rcv_counter);后8个LED全不亮,当有中断后,执行到rcv_counter++;时,rcv_counter = 1,此时~rcv_counter=11111110,那么执行完HC595_SendDat(~rcv_counter);后,是不是应该LED1亮,其他全不亮,依此类推,下一此LED2亮,下次轮到LED1、LED2同时亮,下一此仅LED3亮。
但实验结果却是:当rcv_counter = 1后,LED2亮,接着是LED3亮,然后是LED2、LED3同时亮,然后是LED4亮,和上面的分析差了个LED1,好像LEDI不是接受第一个数据,而是LED2接受了第一个数据。不知我哪里分析错了,请指点。

相关帖子

沙发
haohao2008| | 2007-5-31 22:18 | 只看该作者

LED

rcv_counter = 1时由于rcv_counter++; 所有当执行HC595_SendDat(~rcv_counter);的时候  ,  已经为rcv_counter = 2了
;

使用特权

评论回复
板凳
liutongen|  楼主 | 2007-6-2 19:52 | 只看该作者

谢谢2楼!

“rcv_counter = 1时由于rcv_counter++; 所有当执行HC595_SendDat(~rcv_counter);的时候  ,  已经为rcv_counter = 2了”
 
如下:rcv_counter = 0;
   HC595_SendDat(~rcv_counter);
   while(1)                             // 等待中断
   { if(1==rcv_new)
     {  rcv_new = 0;
        ISendBuf();                     // 将接收到的数据发送回主机
        rcv_counter++;                    // 接收计数值加一
        HC595_SendDat(~rcv_counter);
关键是当执行到rcv_counter++前, rcv_counter = 0;此后 rcv_counter=1,接着执行HC595_SendDat(~rcv_counter);LED应该怎么亮?

使用特权

评论回复
地板
liutongen|  楼主 | 2007-6-2 19:54 | 只看该作者

请问ZLGARM

2200uart实验2:8字节数据的发送次数!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

20

帖子

0

粉丝