#define FLASH(x) (*((volatile unsigned char *) 0x8000 + x))<br />/*----------------------------------------------------------<br />另类的"数组"访问,外扩的SST39VF800A从0x8000开始<br />void FlashObj::ChipErase(void)<br />{<br /> FLASH(0x5555) = 0xaa; <br /> FLASH(0x2AAA) = 0x55; <br /> FLASH(0x5555) = 0x80;<br /> FLASH(0x5555) = 0xaa; <br /> FLASH(0x2AAA) = 0x55; <br /> FLASH(0x5555) = 0x10;<br /> Wait(0x5555);<br />}<br />void FlashObj::Wait(unsigned int address)<br />{<br />unsigned int temp, val;<br /> do {<br /> val = FLASH(address);<br /> __nop();<br /> temp = FLASH(address);<br /> __nop();<br /> }<br /> while(((val ^ temp) & (1 << BIT6)) != 0);<br />}<br />----------------------------------------------------------*/<br /> |
|