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接受了第一个数据。不知我哪里分析错了,请指点。 |