MINI-C函数可以带参数了

虽然mini-c,函数可以带参数的功能已经开放了一阵子了,但是很多工程师朋友的思维还是停留在mini-c函数不能带参数的阶段。能带参数,和普通c的程序兼容性更强了。希望大家都留意一下,看编译通过,是不是心情一下美丽了很多。
附一个ide下面的程序实例,“padauk tool/0.98x/demo/ee_rw”, 该程序实例是针对pgs152的eeprom的读写操作的。请参考:
//fail :eermc.time_out
voidee_w (word adr, byte data)
{
bytebuffer [8];
@@:ldeeradr;
.wait0eermc.busy;
if (eerl == data)return;//如果资料相同,则结束
#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;//重烧到对为此 ?
}
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;//如果检查相同就不用再重烧
return;
}
#else
a=~ eerl & data;
if (zf)
{//可以覆烧
eerl=data;
while (1)
{
do_program (adr);
.wait0eermc.busy;
if (! eermc.time_out)//重烧到对为此 ?
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 似乎对 isp ice 比较容易写入
eeprom_initial
while (1)
{
wordadr=0;
bytedata;
data=0xff;
do
{//测试逐一写 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
{//测试是否为乱码
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;
}


速显微电子项目入选2023中国汽车供应链优秀创新成果
PCB打样中常见的孔问题全面解析
高精度的WiMAX/3G现场测试解决方案
基于无人机高光谱影像的黑土区玉米农田土壤有机质估算
初学者必看的SpringBoo自动装配原理4
MINI-C函数可以带参数了
物联网存在巨大的不确定性该怎样做好应对准备
电磁场基本概念介绍
7颗 4颗 12颗光束 四合一 控制板 共阳极架构灯具芯片
压力开关接线图与特点
OPPO开发者大会官宣时间
联通发布了全新的互联网套餐每月8元可享受15GB的网易应用专属流量
LFP电池开始走向国际舞台
用于监视系统温度、电压和电流的LTC2990
3dd15d参数详解
ic芯片封装工艺及结构解析
ESP8266硬件
一种能够显著提升客制化FPGA原型板验证效率的创新方法浅析
2018阿里云双12年终大促主会场全攻略
基于TMPN3150芯片和总线技术实现步进电机智能控制器的应用方案