问题中的现象可能是由于 C51和 AVR 两种单片机的内核不同导致的。IAR for AVR 下的 HC595_COM1_WR_NByte 函数可能对传入的指针进行了修改,从而改变了原始值。
下载贤集网APP入驻自媒体
指针变量问题 遇到一个指针变量问题,在keil C51下传入指针后不会改变原始值,然而移植到IAR for AVR 就会改变原始值,是因为内核不一样吗? 下图是C51的仿真测试,可以看出2次打印都是0xFFFF,原始值不变。 下图是AVR的仿真测试,可以看出第1次打印是0xFFFF,第二次打印就是0x0000了。 AVR下经过了HC595_COM1_WR_NByte(2,(uint8_t *)&MyTime.Public_10ms);函数后,原始的值就改变了,C51和AVR的HC595_COM1_WR_NByte函数是一样的,下图就是函数原型。