文章目录:
- 1、AVR单片机 E2写函数 void eeprom_write_byte (uint8_t *__p, uint8_t __value); 原型在哪里?
- 2、pic单片机EEPROM怎么编写程序啊??
- 3、pic单片机EEPROM怎么编写程序?
- 4、合泰单片机内置eeprom只能读不能写,要怎么解决
- 5、ATmega64单片机C语言编程,想要将eeprom里的数据通过数码管显示,主程序怎么编
AVR单片机 E2写函数 void eeprom_write_byte (uint8_t *__p, uint8_t __value); 原型在哪里?
比如在IAR的环境中EEPROM的原型在\IAR Systems\Embedded Workbench 5.4\avr\inc\intrinsics.h文件中有最早的原型
#define __EEPUT(ADR,VAL) (*((unsigned char __eeprom *)ADR) = VAL)
#define __EEGET(VAR, ADR) (VAR = *((unsigned char __eeprom *)ADR))
如果使用IAR的EEPROM带的EEPROM库,设置连接器后,则会自己自动读取。在其他环境下原理相同
一般来说,我会自己编写出适合自己使用的EEPROM读写函数。
我的QQ号:①〇②〇⑥⑤〇⑤⑤〇 有疑问可以加我
pic单片机EEPROM怎么编写程序啊??
在你的C文件里引用EEPROM函数的头文件,eeprom_routines.h
然后在程序中使用
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
这两个函数了。
这两个函数一个读一个写。比如你想写0x10到地址为0x55的EEPROM,
就写:eeprom_write(0x55,0x10);
同理,如果想读取0x55地址处的值,
就写:ee_value = eeprom_read(0x55);
如果编译时编译器提示找不到eeprom_routines.h,可以在
X:\Program Files\HI-TECH Software\PICC\9.81\include 目录下找,然后复制到自己项目文件夹下。
对了,我用的是MPLab IDE,编译器使用的是PICC。
pic单片机EEPROM怎么编写程序?
在你的C文件里引用EEPROM函数的头文件,eeprom_routines.h
然后在程序中使用
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
这两个函数了。
这两个函数一个读一个写。比如你想写0x10到地址为0x55的EEPROM,
就写:eeprom_write(0x55,0x10);
同理,如果想读取0x55地址处的值,
就写:ee_value = eeprom_read(0x55);
如果编译时编译器提示找不到eeprom_routines.h,可以在
X:\Program Files\HI-TECH Software\PICC\9.81\include 目录下找,然后复制到自己项目文件夹下。
对了,我用的是MPLab IDE,编译器使用的是PICC。
合泰单片机内置eeprom只能读不能写,要怎么解决
我也遇到这样的问题。没人给出答案,我来说一下吧。(主要是针对V3编译C)
根据Holtek_C_Compiler_V3_FAQ(950).pdf的描述,V3不保证编译后的指令符合EEPROM写入顺序。根据BS86的数据手册,WREN 和 WR一定要符合顺序。
我编译后的指令出现的是LSET WREN以及LSET WR,这个就出问题了。芯片需要的是SET。
解决方法是根据官方FAQ的描述
"5.5 对于写 EEPROM 有限制的 MCU ( 需连续 set wren, wr, flag),如何使用
V3 写 EEPROM?"
下面是代码
//Refer to Holtek_C_Compiler_V3_FAQ(950).pdf
typedef struct{
unsigned char bit0 : 1;
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
}iar_bits;
DEFINE_SFR(iar_bits, iar1, 0x02);
#define iar1_3 iar1.bit3
#define iar1_2 iar1.bit2
#define iar1_1 iar1.bit1
#define iar1_0 iar1.bit0
...
uint8_t bkup;
_eea = u8Addr;
_eed = u8NewData;
_mp1l = 0x40;
bkup = _mp1h;
_mp1h = 0x01;
_emi = 0;
iar1_3 = 1;
iar1_2 = 1;
_emi = 1;
while(iar1_2)
{
}
_iar1 = 0;
_mp1h = bkup;
...
官方的解决方案产生的代码跟数据手册中的一直:
;129 iar1_3 = 1;
0D0D 3182 set __iar1[0].3 《《以前这里是LSET WREN
;130 iar1_2 = 1;
0D0E 3102 set __iar1[0].2 《《以前这里是LSET WR
ATmega64单片机C语言编程,想要将eeprom里的数据通过数码管显示,主程序怎么编
你如果想要显示单个数据的话只要这一句x=eeprom_re(0x10);然后将数据拿出去显示即可,如果你要显示一串数据,那么就要搞一个FOR函数将你需要的数据一个一个取出来,另外你还要编写一个数码管字段表,就是0到9这10个数字对应的显示代码,下面我写一个小例子,
uchar code[,,,,];//0-9的数码管字段表
x=eeprom_re(0x10);
uchar a,b,c,d;
a=x/10;
b=x%10;
c=code[a];
d=code[b];
P1=c;//假设P1口连的是数码管1
P2=d;//假设P2口连的是数码管2
//你可以参考一下
e iar1_0 iar1.bit0... uint8_t bkup; _eea = u8Addr; _eed = u8NewData; _mp1l = 0x40; bkup = _mp1h; _mp1h = 0x0
ystems\Embedded Workbench 5.4\avr\inc\intrinsics.h文件中有最早的原型#define __EEPUT(ADR,VAL) (*((unsigned ch
char value);unsigned char eeprom_read(unsigned char addr);这两个函数了。这两个函数一个读一个写。比如你想写0x10到地址为0x55的EEPROM,就写:eeprom_write(0x55,0x10);同理,如果想读取0x55
带的EEPROM库,设置连接器后,则会自己自动读取。在其他环境下原理相同一般来说,我会自己编写出适合自己使用的EEPROM读写函数。我的QQ号:①〇②〇⑥⑤〇⑤⑤〇 有疑问可以加我pic单片机EEPRO