吽吽吽 发表于 2024-5-9 13:33:10

新人请教,完全没有思路了


芯片是STC32G12K128
定义了四个变量


unsigned int xdata M2N_at_ 0x0008;
unsigned int xdata M2NH_at_ 0x0008;//这里写错,应该用char 而不是int,不过结果很神奇
unsigned int xdata M2NL_at_ 0x0009;

unsigned int xdata M2N2 _at_ 0x000A;
unsigned int xdata M2N2H _at_ 0x000A;
unsigned int xdata M2N2L_at_ 0x000B;

unsigned int xdata M2N3 _at_ 0x000C;
unsigned int xdata M2N3H_at_ 0x000C;
unsigned int xdata M2N3L_at_ 0x000D;

unsigned int xdata M2N4 _at_ 0x000E;
unsigned int xdata M2N4H_at_ 0x000E;
unsigned int xdata M2N4L_at_ 0x000F;


赋值后,

M2N=0x8000;         
M2N2=0x7CB3;                                                                                                                                
M2N3=0x8000;
串口输出      
AURT(0XAA);AURT(M2N3>>8);AURT(M2N3);AURT(M2N2>>8);AURT(M2N2);AURT(M2N>>8);AURT(M2N);AURT(0XAA);



写入EEPROM,接着读出
EEPROM_cha(0x000200);
EEPROM_XIE(0x000200,0x0008,8);//将0x0008-0x000F 写到EEPROM的 512-519位       void EEPROM_XIE(unsigned long addr,unsigned char xdata *DataAddress,   unsigned int number)

EEPROM_du(0x000200,0x0008,8);   //将EEPROM512-519位读到 0x0008-0x000F             void EEPROM_du(unsigned long addr,unsigned char xdata *DataAddress,   unsigned int number)

串口输出:

AURT(0XBB);   AURT(M2N3>>8);AURT(M2N3);   AURT(M2N2>>8);AURT(M2N2);   AURT(M2N>>8);AURT(M2N);    AURT(0XBB);
AURT(0XCC);   AURT(M2N3H);AURT(M2N3L);   AURT(M2N2H);AURT(M2N2L);      AURT(M2NH);AURT(M2NL);       AURT(0XCC);

想法是AA串应该与BB串相同,与CC串不同,因为CC串变量 高位低位用的不是char型,而是int
结果:很神奇的是AA串与BB串不同,但是与CC串相同,
读写EEPROM用的是手册案例里面的函数,请问一下是哪里出了问题?

页: [1]
查看完整版本: 新人请教,完全没有思路了