請教無大俠:
書上P224的例7.5中,在主程序中EEPROM_read_n中U8 后面的*是讀出的數(shù)據(jù)吧,
這個數(shù)據(jù)會被傳送到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); //設(shè)置等待時間,允許ISP/IAP操作,送一次就夠
ISP_CMD = 1; //送字節(jié)讀命令,命令不需改變時,不需重新送命令
do
{
ISP_ADDRH = EE_address / 256; //送地址高字節(jié)(地址需要改變時才需重新送地址)
ISP_ADDRL = EE_address % 256; //送地址低字節(jié)
ISP_TRIG = 0x5A; //先送5AH,再送A5H到ISP/IAP觸發(fā)寄存器,每次都需要如此
ISP_TRIG = 0xA5; //送完A5H后,ISP/IAP命令立即被觸發(fā)啟動
//CPU等待IAP完成后,才會繼續(xù)執(zhí)行程序。
_nop_();
*DataAddress = ISP_DATA; //讀出的數(shù)據(jù)送往外部變量地址
EE_address++; //下一個地址
DataAddress++; //下一個數(shù)據(jù)
}
while(--lenth);
DisableEEPROM();
EA = 1; //重新允許中斷
}
被保存的數(shù)據(jù)可以直接從ISP_DATA中讀取嗎? 還是需要從DataAddress中讀取,如何使存儲和讀取的數(shù)據(jù)不在65535溢出?
|