登录
首页 单片机论坛
回帖 发帖
正文

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

点击:670 回复: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++;
 
}
}
还做了求最大值及进行排序等。
http://www.gkbk.com/uploadfile4/201191881916694.jpg
  打印了PDF,有兴趣的朋友可以下载看看http://www.gkbk.com/images/file/pdf.gifMINI-C指针使用实例.pdf,如需源代码调试,请直接和我联系。
11-09-18 08:23

工控新闻

更多新闻资讯