请教无大侠:
书上P224的例7.5中,在主程序中EEPROM_read_n中U8 后面的*是读出的数据吧,
这个数据会被传送到ISP_DATA是吗?这个ISP_DATA会在256时溢出吧,
我想要不溢出,是否把U8改成U32就可以了?
void EEPROM_read_n(unsigned int EE_address, unsigned char *DataAddress, unsigned char lenth)
{
EA = 0; //禁止中断
ISP_CONTR = (0x80 + ISP_WAIT_FREQUENCY); //设置等待时间,允许ISP/IAP操作,送一次就够
ISP_CMD = 1; //送字节读命令,命令不需改变时,不需重新送命令
do
{
ISP_ADDRH = EE_address / 256; //送地址高字节(地址需要改变时才需重新送地址)
ISP_ADDRL = EE_address % 256; //送地址低字节
ISP_TRIG = 0x5A; //先送5AH,再送A5H到ISP/IAP触发寄存器,每次都需要如此
ISP_TRIG = 0xA5; //送完A5H后,ISP/IAP命令立即被触发启动
//CPU等待IAP完成后,才会继续执行程序。
_nop_();
*DataAddress = ISP_DATA; //读出的数据送往外部变量地址
EE_address++; //下一个地址
DataAddress++; //下一个数据
}
while(--lenth);
DisableEEPROM();
EA = 1; //重新允许中断
}
被保存的数据可以直接从ISP_DATA中读取吗? 还是需要从DataAddress中读取,如何使存储和读取的数据不在65535溢出?
|