S3F825A--C语言如何使用内存变量编程示例
文章来源: DAMI的QQ空间   更新时间: 2008-10-12
;点击这里直接下载该示例源码

//本文链接:http://user.qzone.qq.com/361902503/blog/1217917422

//825A C使用内存变量
//dami 2006,9,17本程序的目的是在于观察如何定义使用内存变量,观察内存变量的变化,从而了解8XXX系列单片机的内存使用方法
//他可以稍加变通用到8XXX系列单片机.使用simulate软件仿真,快速方便,也适合没有仿真器的朋友
//
#include
#include
#define uchar unsigned char
#define uint unsigned int
//位定义方法
#definetestbit(var,bit)((var)&(1<<(bit)))//位测试
#definesetbit(var,bit)((var)|=(1<<(bit)))//位置1
#defineclrbit(var,bit)((var)&=~(1<<(bit)))//位清零 clrbit(p3,1);就是了
//全局变量的定义要在任何函数之外,但静态变量就可以在函数中
unsigned int i;
// __tiny static unsigned int mm = 0;这些也可以在这里定义使之全局可以用
void main()
{
    //对于特殊功能积存器,一个以直接访问.他的定义在CPU头文件中有体现
    BTCON = 0xa2;
    CLKCON = 0x98;//时钟控制器不分频
    OSCCON = 0x0;//主从晶体及运行/停止
    IMR = 0X8;
    WTCON = 0x0;
    //P5CONH = 0x8c;//P3CONL.7~5:011,P3CONL.4~2=001
    //BRDATA = 0x19;//4M 晶体频率不分频. 波特率9600
    //UARTCON = 0xd2;//模式:11,MCE:0,TB8,RB8:00,RIE:接收中断允许,TIE发送中断不允许
     
    while ( 1 )
    { //***************************__tiny __tiny2 tiny2pn __tinyn 的使用*********************
      //结果可以通过simulate->Veiw->memory 的PAGE0,PAGE1,PAGE查看
     //全局变量,静态变量及指针可以用__tiny
      __tiny static unsigned int mm = 0;
      //PAGE0 可以初始位零
      //PAGE1之后要用__no_init修饰,并且不能初始化
      __no_init __tinyp1 static unsigned int mm1;
      __no_init __tinyp2 static unsigned int mm2;
      __no_init __tinyp3 static unsigned int mm3;
      __no_init __tinyp4 static unsigned int mm4;
      __no_init __tinyp5 static unsigned int mm5;
      __no_init __tinyp6 static unsigned int mm6;
      __no_init __tinyp7 static unsigned int mm7;
      //PAGE的0XC0~~0XFF之间数据可以和上面一样访问,只是__tiny2,__tiny2pn修饰
      __tiny2 static unsigned int hm = 0;
      __no_init __tiny2p2 static unsigned int hm2;
       
      unsigned int delay;
      unsigned char INDEX = 0;
      unsigned short i,j = 1;
      mm1 = 0;
      mm2 = 0;
      mm3 = 0;
      mm4 = 0;
      mm5 = 0;
      mm6 = 0;
      mm7 = 0;
      hm = 0;
      hm2 = 0;
      for (INDEX = 0; INDEX < 20; INDEX++)
        {
          unsigned char SUM = 0;
           
          SUM += INDEX;
           __no_operation();
           __no_operation();
          j = i++;
          j++;
          mm = j+i;
          mm++;
          mm1 = mm;
          mm2 = mm1+3;
          mm3 = mm2+5;
          mm4 = mm3+3;
          mm5 = mm4+3;
          mm6 = mm5+3;
          mm7 = mm6+3;
          mm7++;
          hm++;
          hm2++;
          for ( delay = 0; delay < 10; delay++ );
           __no_operation();
          __no_operation();
        }
    }
}
 
相关备注: http://user.qzone.qq.com/361902503/blog/1217917422
 
三星单片机开发网首页