程序不完整,缺少IO_init();Timer0_init();GetBaseinfo();函数
是否打开了定时器中断,打开的中断必须要有中断函数
这段程序没发现什么问题
EEPROM相关函数供参考:
- void Iap_Idle(void)
- {
- IAP_CONTR&=~IAPEN;
- IAP_CMD=IAP_IDL;
- IAP_TRIG=0x00;
- IAP_ADDRH=0x80;
- IAP_ADDRL=0x00;
- }
-
- unsigned char Iap_Read_Byte(unsigned char sector,unsigned int addr)
- {
- unsigned char dat;
- unsigned int add;
- add=sector*0x0200+addr;
- IAP_CONTR|=IAPEN;
- IAP_TPS=IAP_TPS_;
- IAP_CMD=IAP_READ;
- IAP_ADDRL=add;
- IAP_ADDRH=add>>8;
- IAP_TRIG=0x5A;
- IAP_TRIG=0xA5;
- _nop_();
- dat=IAP_DATA;
- Iap_Idle();
- return dat;
- }
-
- void Iap_Program_Byte(unsigned char sector,unsigned int addr,unsigned char dat)
- {
- unsigned int add;
- add=sector*0x0200+addr;
- IAP_CONTR|=IAPEN;
- IAP_TPS=IAP_TPS_;
- IAP_CMD=IAP_WRITE;
- IAP_ADDRL=add;
- IAP_ADDRH=add>>8;
- IAP_DATA=dat;
- IAP_TRIG=0x5A;
- IAP_TRIG=0xA5;
- _nop_();
- Iap_Idle();
- }
-
- void Iap_Erase_Sector(unsigned char sector)
- {
- unsigned int add;
- add=sector*0x0200;
- IAP_CONTR|=IAPEN;
- IAP_TPS=IAP_TPS_;
- IAP_CMD=IAP_ERASE;
- IAP_ADDRL=add;
- IAP_ADDRH=add>>8;
- IAP_TRIG=0x5A;
- IAP_TRIG=0xA5;
- _nop_();
- Iap_Idle();
- }
复制代码
|