中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

单片机论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 单片机论坛 → 浏览主题: MINI-C 指针使用实例,数组的访问
发表新帖 回复该主题
回帖:0个,阅读:595 [上一页] [1] [下一页]
* 帖子主题:

MINI-C 指针使用实例,数组的访问

分享到
1064
工控秀才
文章数:80
年度积分:50
历史总积分:1064
注册时间:2006/6/16
发站内信
09工控人生征文
08年优秀博客奖
发表于:2011/9/18 8:23:02
#0楼

应广科技的MINI-C语法结构,是一种界于标准C和汇编的一种语言,对于小资源的MCU来说,该语法非常精简实用。
  MINI-C中的指针只有一种类型,就是指向字节变量的。定义方式是
  word   point1; //其中word是MINI-C中的一个关键字,用来定义一个16位的变量,因指针可以指向ROM或者RAM,是用16位变量来定义的。
 这里先介绍指针对RAM的访问于操作。
 当定义完指针变量后,用*point1,就可以访问指针所指RAM中的内容了。
 而point1本身的内容则是指向内部RAM地址的。
 已经有几次被用户咨询,MINI-C怎样去访问一个数组,因为MINI-C本身的数组
是不能带变量下标访问的,这就和标准的C区别很大了,习惯于标准C的结构,一下子
不知道该如何去访问了。借此机会,和大家稍微介绍下。
  比如,我定义一个16位的数组;
 word word_g[10];
 然后对它进行初始化:
void word_init(void)
{
word_g[0] = 5;   //请留意目前的版本都只能支持固定的下标,
word_g[1] = 2;
word_g[2] = 3;   // 用word_g[i] = xx,i是变量,是不支持的。
word_g[3] = 17;
word_g[4] = 1;
word_g[5] = 6;
word_g[6] = 20;
word_g[7] = 4;
word_g[8] = 0;
word_g[9] = 10;
 
}
 然后我需要求数组中的最小值:
void get_word_min(void) //取一个数组中的最小值
{
word point1,point2;
word word_temp;
byte i, j;         //类似标准C中的下标
i = 0;
word_min = word_g[0];
while(i < 10)  //10是数组的中数的个数,多求了一次,无所谓
{
 j = i << 1;
 point1 = word_g; //指针始终指向数组首地址
 point1 += j;         //计算偏移字节
 word_temp$0 = *point1; //求16位数中的低8位
 point1++;                       //指针再加1,指向下一个字节
 word_temp$1 = *point1; //求16位数中的高8位,当然单字节的数组就更简单了
 if(word_min > word_temp) //比较所取数于其他数,大于则交换
  {    
   word_min = word_temp;
  }
 i++;
 
}
}
还做了求最大值及进行排序等。
图
  打印了PDF,有兴趣的朋友可以下载看看图MINI-C指针使用实例.pdf,如需源代码调试,请直接和我联系。

此帖来自中华工控网工控博客
原文件地址:http://blog.gkong.com/more.asp?id=144036&Name=gongkong
14PIN的单片MCU多核心时代已来临,  想在低容量的MCU系统跑多任务吗,欢迎登陆"http://gongkong.gkbk.com"我的博客 查看详情,谢谢!
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002