sy606 发表于 2008-1-24 15:05:44

问题仍未解决,请各位老大帮忙了(应该可以了,试试吧)

这是我以前设计的一段eeprom操作程序,   
目的是在eeprom中永久保留几个报警变量,
上电后首先检查eeprom地址0xf9值是否为0xaa,
如果是说明地址0xfa、0xfb、0xfe、0xff值被设置
过,则读取赋给相应变量,否则将这些地址赋默认值。
问题是这段程序在cvavr1.24.5中可以编释通过,
1.25版却报一大堆错误。(不过好象都是一个错误。)
#include <mega16.h>
void main(void)
{   
unsigned char eeprom *ptr;
unsigned char gbjh,dbjh,glsh,dlsh;


ptr=0xf9;
if(*ptr==0xaa)
      {
      ptr=0xfa;
      gbjh=*ptr;
      ptr=0xfb;
      dbjh=*ptr;
      ptr=0xfe;
      glsh=*ptr;
      ptr=0xff;
      dlsh=*ptr;
      }   
      else
      {
      gbjh=14;
      dbjh=6;
      glsh=16;
      dlsh=4;
      ptr=0xfa;
      *ptr=gbjh;
      ptr=0xfb;
      *ptr=dbjh;
      ptr=0xfe;
      *ptr=glsh;
      ptr=0xff;
      *ptr=dlsh;
      }   

while (1)
      {
      // Place your code here
      //这后面有按键改写eeprom内容的程序

      };
}

请问各位老大,该如何解决呀?   

我用的新版是1.25.5专业版就这几行就有错误,
我在新版里新建了工程,编译还是通不过,而新版的这个工程在拿到1.24里就通过了,
我跟本就不会英语,看不懂是什么错误,请用两个版编译一下就知道了,
1.24版通过,1.25以上的就会出错,如果只有1.25版编译一下就会看到错误了,
请问1.25版访问eeprom是不是有了新方法。

machao 发表于 2008-1-26 19:56:57

我手里没有这个版本,你为何不用新的版本的.

sy606 发表于 2008-1-27 10:33:27

1.25.8要口令,1.25.4 1.25.5 都是一样的问题。
你用1.25.8编绎一下看看,我想也会出错,
我想是不是cvavr在eepror的访问上有了新方法,
这段程序现在我还在用,只是只能在1.24版上编绎。

machao 发表于 2008-1-27 17:55:38

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.8 Professional
Automatic Program Generator
?Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 2008-1-27
Author: cma                           
Company : ECNU                           
Comments:


Chip type         : ATmega16
Program type      : Application
Clock frequency   : 4.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256
*****************************************************/

#include <mega16.h>

// Declare your global variables here
void main(void)   
{   
unsigned char eeprom*ptr;
unsigned char gbjh,dbjh,glsh,dlsh;   


ptr = (char eeprom *)0xf9;
if(*ptr==0xaa)   
      {   
      ptr++;   
      gbjh=*ptr;   
      ptr=(char eeprom *)0xfb;   
      dbjh=*ptr;   
      ptr=(char eeprom *)0xfe;   
      glsh=*ptr;   
      ptr=(char eeprom *)0xff;   
      dlsh=*ptr;   
      }   
      else   
      {   
      gbjh=14;   
      dbjh=6;   
      glsh=16;   
      dlsh=4;   
      ptr=(char eeprom *)0xfa;   
      *ptr=gbjh;   
      ptr=(char eeprom *)0xfb;   
      *ptr=dbjh;   
      ptr=(char eeprom *)0xfe;   
      *ptr=glsh;   
      ptr=(char eeprom *)0xff;   
      *ptr=dlsh;   
      }   

while (1)   
      {   
      // Place your code here   
      //这后面有按键改写eeprom内容的程序   

      };   
}
页: [1]
查看完整版本: 问题仍未解决,请各位老大帮忙了(应该可以了,试试吧)