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