|
MOV PSCTL,#01H MOV DPTR,#0FDFEH CLR A MOVX @DPTR,A MOV DPTR,#0FDFFH MOVX @DPTR,A MOV PSCTL,#00H MOV FLSCL,#00H CYCLE_FOREVER:SJMP CYCLE_FOREVER;死循環(huán) RET
4)FLASH程序的準(zhǔn)備
為了更快地得到—下載到C8051F020的FLASH程序,先在CYGNAL IDE開發(fā)環(huán)境中,將做好的控制程序編澤,鏈按,然后用廠家提供的串行適配器將PC與目標(biāo)板連接起來,傳送FLASH程序到目標(biāo)系統(tǒng)中去。接下來用“UPLOAD MEMORY T0 PILE…”(如圖示)功能將0000H~OEOOOH的FLASH代碼程序上載到硬盤存儲器中,再將此ASCII文件轉(zhuǎn)化為16進(jìn)制的HE文件,注意將其十的0DH,0AH等回車換行字節(jié)取消,最后生成的HEX文件即可被直接下載到FLASH的0000H~0DFFFH的相應(yīng)地址中。此HEX文件即可發(fā)送至用戶處,用于升級用戶的單片機(jī)FLASH程序。
5)C程序的準(zhǔn)備 //發(fā)送FLASH程序文件到單片機(jī)中去 BOOL SendFileToFlash() { unsigned char ch; FILE *fp; long int flen,wi=0; int i,j;
if ((fp = fopen("flashwl","rb"))==NULL) { return FALSE; } //初使化串口,且與單片機(jī)系統(tǒng)握手 InitialCommuClass();
//發(fā)送數(shù)據(jù) for (wi=0,j=0;wi<flen;wi++) { if (feof(fp)!=0)//到達(dá)文件結(jié)束 break;
fread(&ch,sizeof(unsigned char),1,fp); for (;;) if (SendAByte(ch)==TRUE) break; Printf("%ld bytes is transmitted!\n",wi); } fclose(fp); for (;;) { Printf("All bytes is transmitted!\n"); }
}
//轉(zhuǎn)換上載文件為可下載的HEX目標(biāo)文件 BOOL ConvertFileToFlash() { unsigned char ch,ru; FILE *fp,*fpw; long int flen,wi=0; int i,j;
if ((fp = fopen("SOURCEC","rb"))==NULL) { return FALSE; } if ((fpw = fopen("HEXOBJECT","wb"))==NULL) { return FALSE; }
for (wi=0,j=0;;wi++) { if (feof(fp)!=0) break; ru=0; fread(&ch,sizeof(unsigned char),1,fp); if ((ch>=0x30) && (ch<=0x39)) ru+=(ch-0x30)*16; else if ((ch>=0x61) && (ch<=0x66)) ru+=((ch-0x61)+0x0a)*16; fread(&ch,sizeof(unsigned char),1,fp); if ((ch>=0x30) && (ch<=0x39)) ru+=ch-0x30; else if ((ch>=0x61) && (ch<=0x66)) ru+=(ch-0x61)+0x0a; fwrite(&ru,sizeof(unsigned char),1,fpw); fread(&ch,sizeof(unsigned char),1,fp);/*0x0d*/ fread(&ch,sizeof(unsigned char),1,fp);/*0x0d*/ fread(&ch,sizeof(unsigned char),1,fp);/*0x0a*/ j++; if (j==255) { j=0; fread(&ch,sizeof(unsigned char),1,fp); fread(&ch,sizeof(unsigned char),1,fp); fread(&ch,sizeof(unsigned char),1,fp); fread(&ch,sizeof(unsigned char),1,fp); fread(&ch,sizeof(unsigned char),1,fp); continue; } } fclose(fp);fclose(fpw); } 結(jié)束語
以上所介紹的FLASH自動升級程序的PC部分在VC6.0及TC2.0中開發(fā),并與805lFXXX系列的單片機(jī)聯(lián)機(jī)成功,并最后用于在用戶處的單片機(jī)FLASH程序升級
|