搜索
bottom↓
回复: 1

紧急求助!IAR C FOR SAM8程序优化出错

[复制链接]

出0入0汤圆

发表于 2011-3-12 21:34:23 | 显示全部楼层 |阅读模式
紧急求助!IAR C FOR SAM8程序优化出错
    不知什么原因,用IAR V2.21A(用V2.30A也是一样) 编写的小程序具体如下,单片机S3F9444,选择不同的优化(size优化),结果差非常大,优其是HIGH级优化,可以说已经变成完全不同程序了,是不是哪里设置错误?望路过的大位侠赐教,谢谢!

//**********************************************************************
//#include <stdio.h>
#include "ioS3C9444.h"
#include "intrinsics.h"

//**********************************************************************

//**********************************************************************

void __no_operation(void);
void buz(unsigned int b_time);


/********************************************************************

       smart option
      
       003C=00H;
       003D=00H;
       003E=11001000(0xC8) LVR enable 3.0V
       003F=00000011B;   internal RC oscillator  3.2MHZ
      
      
*******************************************************************/

__code const volatile unsigned char SmartOption[4] @0x003C=
{0x00,0x00,0xC8,0x03};


//*********************************************************************

void main(void)
{

  //***填充系统SMART OPTION***/

  unsigned char buffer = SmartOption[0];

  //********************************************************************

  unsigned d;

  //********************************************************************
   __disable_interrupt();//SYM=0x00;//stop all interrupt
  //BTCON=0x03;// watch_dog enable   00000011B
  BTCON=0xA0;// watch_dog disable   1010000B
  CLKCON=0x98;//no divided CPU clock  10011000B
  SP=0x20;//initialize stact pointer
  P0CONL|=0x28;//00101001B P0.2,P0.1 as push-pull output,P0.0 as input
              //P0.2 as buz signal,P0.1 as SW signal, P0.0 as RC signal reciver
  P0PND=0x00; //00000010B INT0 ,INT1 disable
  P1CON=0x0A; //00001010B P1 as output,but P1.2 can only as input******
  P1=0; //P1.1 ,P1.0 as 0,P1.2 can only as input***
  P0=0; //P0.2 ,P0.1 as 0

  //*******************************************************************

  d=0;

//*******************************************************************

next0:
  
  for(d=0;d<3000;d++)

     {
      ;
     }
  buz(2000);
  for(d=0;d<9000;d++)

     {
      ;

     }

  goto next0;

  }



//*******************************************************************



void buz(unsigned b_time)
        {
         unsigned int b;
         b=0;
    loop:
         P0|=0x04; //P0.2 as 1
         for(b=0;b<14;b++)
            {
             __no_operation();

            }
         if(b_time>0)
           {
             __no_operation();
           }
         P0&=0xFB; //P0.2 as 0
         for(b=0;b<14;b++);
            {
             __no_operation();

            }
         if(b_time>1)
           {
            b_time--;
            goto loop;
           }

        }
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 04:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表