求帮助,数组无法有效保存数据(已解决)
本帖最后由 STC8H8K64U 于 2023-6-6 10:54 编辑代码如下,代码水平不般{:lol:},实际执行后会出现第0个元素存入无效,其它3个元素正常,望大神们伸下援手。
for(x=0;x<CH_Col;x++)
{
shift_temp =0;
temp1=0;
temp2=0;
temp3=0;
shift_temp = Prog_result_OK;
UartSendByte(shift_temp);
temp1 = (shift_temp & 0x01) << 5; //第1位数据移到第6位
temp2 = (shift_temp & 0x02) << 3; //第2位数据移到第5位
temp3 = (shift_temp & 0x04) << 1; //第3位数据移到第4位
shift_temp= temp1 | temp2 | temp3; //或运算
Indicator_result_OK = shift_temp;
Delayus(10);
UartSendByte(Indicator_result_OK);
}
实际串口输出,红色框是结果,正常应该是4组07 38,但第一组,没有出现38,而是00.
如电话沟通使用下列帖子的例程进行测试:
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=2461&pid=16822
如果还有问题的话,请上传完整的测试代码,我们一起分析。 感觉像是别的地方写越界了,与数组本身并没太大关系。(深度怀疑UartSendByte方法) 本帖最后由 bogejiayou 于 2023-6-6 10:07 编辑
乘风飞扬 发表于 2023-6-1 17:39
如电话沟通使用下列帖子的例程进行测试:
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost ...
感谢您电话给于的帮助,在您提供的例程上我逐渐增加了接近我这里实际情况的代码,最终发现为#define的常量重定义导致编译时数组做为报警项并未正确编译进程序,实际程序使用到该数组时指针可能是错误的随机地址,输出也就是错误的,不过实际程序展现来看,这个错误值倒是固定值,不过并没有意义。 hsrzq 发表于 2023-6-2 10:47
感觉像是别的地方写越界了,与数组本身并没太大关系。(深度怀疑UartSendByte方法) ...
您分析对了,{:4_250:},最后发现是我大意了没有去处理警告信息,实际这个数组并没能正确的编译。
页:
[1]