?? flash_wr.txt
字號:
void Erase_Entire_Chip()
{
DDRB=0xff;
PORTB=0xff;
MCUCR=0x80;
XMCRA=0x00;
XMCRB=0x00;
unsigned char *Temp;
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0xaa;
Temp=(unsigned char *)(OFFSET+0x0aaa);
*Temp=0x55;
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0x80;
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0xaa;
Temp=(unsigned char *)(OFFSET+0x0aaa);
*Temp=0x55;
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0x10;
Delay_100ms();
}
void Check_Toggle(unsigned char *Dst)
{
DDRB=0xff;
PORTB=0xff;
MCUCR=0x80;
XMCRA=0x00;
XMCRB=0x00;
BYTE Loop=1;
BYTE PreData;
BYTE CurrData;
unsigned long TimeOut=0;
PreData=*Dst;
PreData=PreData&0x40;
while((TimeOut<0x07ffffff)&&(Loop))
{
CurrData=*Dst;
CurrData=CurrData&0x40;
if(PreData==CurrData)
Loop=0;
PreData=CurrData;
TimeOut++;
}
}
void Program_1byte(BYTE SrcByte, unsigned char *Dst)
{
DDRB=0xff;
PORTB=0xff;
MCUCR=0x80;
XMCRA=0x00;
XMCRB=0x00;
unsigned char *Temp;
// unsigned char *SourceBuf;
unsigned char *DestBuf;
// int Index;
DestBuf=Dst;
Erase_Entire_Chip();
// for(Index=0;Index<4096;Index++)
// {
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0xaa;
Temp=(unsigned char *)(OFFSET+0x0aaa);
*Temp=0x55;
Temp=(unsigned char *)(OFFSET+0x3555);
*Temp=0xa0;
if (DestBuf>(unsigned char *)(OFFSET))
{
*DestBuf=SrcByte;}
else
{ DDRC=0xff;
PORTC=0x00;
XMCRB=(1<<XMM1)|(1<<XMM0);
DestBuf=(unsigned char *)((int)(Dst)+OFFSET);
*DestBuf=SrcByte;
XMCRB=0x00;}
// Temp=DestBuf;
// *DestBuf++=0x50;
Check_Toggle(DestBuf);
//}
}
BYTE flash_WR(unsigned char *waddr)
{
DDRB=0xff;
PORTB=0xff;
MCUCR=0x80;
XMCRA=0x00;
XMCRB=0x00;
BYTE a;
unsigned char *Temp;
Program_1byte(0x50,waddr);
if(waddr>(unsigned char *)(OFFSET))
{Temp=waddr;
a=*Temp;}
else{DDRC=0xff;
PORTC=0x00;
XMCRB=(1<<XMM1)|(1<<XMM0);
Temp=(unsigned char *)((int)(waddr)+OFFSET);
a=*Temp;
XMCRB=0x00;}
return(a);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -