0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MINI-C函数可以带参数了

应广单片机 来源:应广单片机 2023-07-19 14:01 次阅读

虽然MINI-C,函数可以带参数的功能已经开放了一阵子了,但是很多工程师朋友的思维还是停留在MINI-C函数不能带参数的阶段。能带参数,和普通C的程序兼容性更强了。希望大家都留意一下,看编译通过,是不是心情一下美丽了很多。

12a86dd0-25ec-11ee-962d-dac502259ad0.png

附一个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;

}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1398

    浏览量

    31477
  • EEPROM
    +关注

    关注

    9

    文章

    928

    浏览量

    80334
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79554
  • 编译
    +关注

    关注

    0

    文章

    615

    浏览量

    32397

原文标题:MINI-C函数可以带参数了!

文章出处:【微信号:应广单片机,微信公众号:应广单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    可变参数函数的实现原理

    有多少个参数呢?那些可变的参数是需要转换成第一个参数中%号后面的格式的,这样,我们只需要查找%号的个数确定可变参数的个数了。图 43 可变
    发表于 10-21 22:18

    labview调用dll函数里面参数结构体,应该怎么设置参数

    labview调用dll函数里面参数结构体,应该怎么设置参数。求帮助................
    发表于 01-12 18:53

    用的是STC89C51,编程就不知道该怎么写了函数了

    第一次用LCD1602,画PCB时,为了焊接接线方便,就把LCD的D0-D7口分别接到了P2.7-P2.0,我用的是STC89C51,接线的时候也没想太多,觉得这个软件肯定是能改的,现在编程就不知道该怎么写了函数了,希望高手能帮助解决这个问题。
    发表于 05-18 01:49

    关于C++中函数指针的使用

    关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。 //形式1:返回类型(*函数名)(参数表)
    发表于 07-13 03:51

    一、应广单片机的Mini-C语言基础 精选资料分享

    开发的人,用汇编来开发还是有些抗拒的。看了一下简介,应广单片机支持Mini-C语言,一看就跟C语言有关,我们来了解一下:二、Mini-C介绍 应广科技的MINI-C语法结构,是一种..
    发表于 07-15 09:04

    PMS150C的点灯程序代码分享

    应广单片机价格美丽,性价比高,mini-c好用,适用于消费电子开发。但是案例demo太少了,为了方便大家能够快速入门。这里贴出了一份经典PMS150C的点灯程序代码。不是Hello world!那种
    发表于 07-15 09:47

    mini-c的缺点及解决办法

    很多廉价的单片机只是支持汇编语言,而应广的单片机支持mini-c,非常不错!可以最大限度发挥C的优势和编译器的效率.下面我就说说我的体会:缺点:函数不能带
    发表于 07-20 07:14

    如何才能在51系统下使用类似printf这样的可变参数的子函数呢?

    增加3个字节的地址,这样就没用办法使用“...”,来传递参数了,如何才能在51系统下使用类似printf这样的可变参数的子函数呢?
    发表于 10-30 08:27

    来聊聊函数是怎么传入参数

    从图例中可以看出,当A函数没有调用B函数时,A函数的栈帧只保存着局部变量,而EBP(栈底指针)指向的是A函数
    的头像 发表于 07-05 15:57 6078次阅读

    嵌入式C语言可以带“默认参数”的函数

    使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以
    发表于 09-06 11:35 1271次阅读
    嵌入式C语言<b class='flag-5'>可以</b>带“默认<b class='flag-5'>参数</b>”的<b class='flag-5'>函数</b>吗

    应广单片机MINI-C编程要点

    很多廉价的单片机只是支持汇编语言,而应广的单片机支持mini-c,非常不错!可以最大限度发挥C的优势和编译器的效率.下面我就说说我的体会:缺点:函数不能带参数. 解决方法:通过A或全局
    发表于 11-23 17:51 55次下载
    应广单片机<b class='flag-5'>MINI-C</b>编程要点

    C语言函数参数介绍

    C语言数组元素作函数实参 数组元素可以用作函数实参,不能用作形参。 C语言在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。 数据传递的方向是从实参传到形参,单
    的头像 发表于 03-10 14:30 1840次阅读

    函数参数

    对比功能块,函数没有任何他们保存参数值的内存。在函数激活时,本地数据只中临时地贮存。由于这个原因,当调用函数时,所有在函数声明部分定义的形式
    的头像 发表于 04-27 15:26 427次阅读
    <b class='flag-5'>函数</b>的<b class='flag-5'>参数</b>

    应广单片机MINI-C编程要点

    的效率一般很低啦。我这里给大家分享一个简单的加3移位判断法,这个子程序,体现了MINI-C的强大C语言和汇编融合处理能力。也将MINI-C的数据指针用到恰到好处啦,有点自卖自夸。
    的头像 发表于 10-17 14:17 669次阅读

    Python 函数参数分类

    文章应该对你会有不小的帮助。 接下来是正文。 1. 参数分类 函数,在定义的时候,可以参数的,也可以没有
    的头像 发表于 10-21 10:45 231次阅读