雖然MINI-C,函數(shù)可以帶參數(shù)的功能已經(jīng)開放了一陣子了,但是很多工程師朋友的思維還是停留在MINI-C函數(shù)不能帶參數(shù)的階段。能帶參數(shù),和普通C的程序兼容性更強(qiáng)了。希望大家都留意一下,看編譯通過,是不是心情一下美麗了很多。
附一個(gè)IDE下面的程序?qū)嵗癙ADAUK Tool/0.98x/demo/EE_RW”, 該程序?qū)嵗轻槍?duì)PGS152的EEPROM的讀寫操作的。請(qǐng)參考:
//Fail :EERMC.Time_Out ??
voidEE_W (WORD adr, BYTE data)
{
BYTEbuffer [8];
@@:ldeeradr;
.wait0EERMC.Busy;
if (EERL == data)return;//如果資料相同,則結(jié)束
#if_SYS(AT_CHIP)
A=~ EERL & data;
if (ZF)
{//可以覆燒
EERL=data;
while (1)
{
Do_Program (adr);
.wait0EERMC.Busy;
if (EERMC.Time_Out){
IHRC_EPM = 0x34;
continue;//重?zé)綄?duì)為此 ?
}
IHRC_EPM = 0x3F;
return;
}
}
#elif_SYS(AT_ISP_ICE)
if (EERL == 0xFF)//只有 0xFF 才能燒錄
{
EERL=data;
Do_Program (adr);
.wait0EERMC.Busy;
if (EERMC.Time_Out)
goto@B;//如果檢查相同就不用再重?zé)?/p>
return;
}
#else
A=~ EERL & data;
if (ZF)
{//可以覆燒
EERL=data;
while (1)
{
Do_Program (adr);
.wait0EERMC.Busy;
if (! EERMC.Time_Out)//重?zé)綄?duì)為此 ?
return;
}
}
#endif
WORDpnt1=adr & 0xFFF8;
WORDpnt2=buffer;
BYTEcnt=8;
do
{//備份 8 筆資料
ldeerpnt1;
.wait0EERMC.Busy;
*pnt2=EERL;
pnt1$0++;pnt2$0++;
} while (--cnt);
pnt2$0=(adr & 7) + buffer;
*pnt2=data;//更新目的資料
//Erase 8 筆資料
@@:Do_Erase (adr);
cnt=8;
pnt1$0=adr & 0xF8;
pnt2$0=buffer;
.wait0EERMC.Busy;
#if_SYS(AT_CHIP)
if (EERMC.Time_Out)
{
IHRC_EPM = 0x34;
goto @B;
}
IHRC_EPM = 0x3F;
#else
if (EERMC.Time_Out)
goto @B;
#endif
Setup_ProgramMode;
while (1)
{//寫入 8 筆資料
EERL=*pnt2;
Run_Program (pnt1);
.wait0EERMC.Busy;
#if_SYS(AT_CHIP)
if (EERMC.Time_Out)
{
IHRC_EPM = 0x34;
ldeerpnt1;
.wait0EERMC.Busy;
data=*pnt2;
A=~ EERL & data;
if (ZF)continue;
goto@B;
}
IHRC_EPM = 0x3F;
#else
if (EERMC.Time_Out)
continue;
#endif
pnt1$0++;pnt2$0++;
if (!--cnt)return;
}
}
voidEE_R (WORD adr)
{
ldeeradr;
.wait0EERMC.Busy;
A=EERL;
}
//#if_SYS(AT_ISP_ICE)
//.ICE_CMDVoltage4V
//#endif
voidFPPA0 (void)
{
.ADJUST_ICSYSCLK=IHRC/4, VDD=4V;//SYSCLK=IHRC/4
//4V 似乎對(duì) ISP ICE 比較容易寫入
EEPROM_Initial
while (1)
{
WORDadr=0;
BYTEdata;
data=0xFF;
do
{//測(cè)試逐一寫 Bit 為 0
data>>=1;
EE_W (adr, data);
EE_R (adr);
} while (data);
adr=0;
data=adr$0 ^ 0x55;
BYTEcnt=_SYS(SIZE.EEPROM);
do
{//全部寫亂碼
EE_W (adr, data);
adr++;data--;
} while (--cnt);
trap;
adr=0;
data=adr$0 ^ 0x55;
cnt=_SYS(SIZE.EEPROM);
do
{//測(cè)試是否為亂碼
EE_R (adr);
if (A != data)trap;
adr++;data--;
} while (--cnt);
trap;
}
}
voidInterrupt (void)
{
pushaf;
if (Intrq.T16)
{//T16 Trig
//User can add code
Intrq.T16=0;
//...
}
popaf;
}
審核編輯:湯梓紅
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1865瀏覽量
32755 -
EEPROM
+關(guān)注
關(guān)注
9文章
1061瀏覽量
82984 -
程序
+關(guān)注
關(guān)注
117文章
3816瀏覽量
82123 -
編譯
+關(guān)注
關(guān)注
0文章
674瀏覽量
33556
原文標(biāo)題:MINI-C函數(shù)可以帶參數(shù)了!
文章出處:【微信號(hào):應(yīng)廣單片機(jī),微信公眾號(hào):應(yīng)廣單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
可變參數(shù)函數(shù)的實(shí)現(xiàn)原理
用的是STC89C51,編程就不知道該怎么寫了函數(shù)了
一、應(yīng)廣單片機(jī)的Mini-C語言基礎(chǔ) 精選資料分享
mini-c的缺點(diǎn)及解決辦法
指針作為函數(shù)參數(shù)
C語言中形式參數(shù)和實(shí)際參數(shù)的介紹
帶形狀參數(shù)的曲線曲面的構(gòu)造
嵌入式C語言可以帶“默認(rèn)參數(shù)”的函數(shù)嗎

關(guān)于C++仿函數(shù)
應(yīng)廣單片機(jī)MINI-C編程要點(diǎn)

評(píng)論