[AVR单片机] 问个gcc 将常量定义到flash的问题

[复制链接]
2963|6
 楼主| dlwlmlj 发表于 2008-5-20 17:48 | 显示全部楼层 |阅读模式
我用GCC的时候定义
数组
unsigned char const  sz[16] __attribute__ ((section (".progmem")))={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//led0-9对应显示值断值
用于数码管显示 
为什么 不好用啊!
unsigned char const  sz[16] 就好用!

我又单独定义了个小数点
unsigned char const  dian __attribute__ ((section (".progmem")))=0x80;//显示用小数点
不优化的时候不好用!
优化的时候好用!
那位大侠指导一下啊!
这样有错没有?!
simon21ic 发表于 2008-5-20 19:07 | 显示全部楼层

AVR-GCC?

ATmega32l 发表于 2008-5-21 08:22 | 显示全部楼层

不知道你说好用不好用什么标准?

好用不好用具体指什么?
 楼主| dlwlmlj 发表于 2008-5-21 09:39 | 显示全部楼层

读会来的数

数码管显示错误!
数组是要显示数字的数码管的段值啊!
农民讲习所 发表于 2008-5-21 10:24 | 显示全部楼层

读的时候

#define FLASH    prog_uchar
#define FLASHU8(x)    pgm_read_byte(x)

FLASH sz[16] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//led0-9对应显示值断值

读的时候一定使用FLASHU8(x):
 FLASHU8(sz + i);
ATmega32l 发表于 2008-5-21 12:25 | 显示全部楼层

读取FLASH

//读取FLSH区1字节变量 
#define pgm8(A)
((typeof(A))pgm_read_byte(&(A))) 

//读取FLSH区2字节变量 
#define pgm16(A)
((typeof(A))pgm_read_word(&(A))) 

//读取FLSH区4字节变量 
#define pgm32(A)
((typeof(A))pgm_read_dword(&(A))) 
 楼主| dlwlmlj 发表于 2008-5-21 12:42 | 显示全部楼层

ok

好用了!谢谢大侠!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

436

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部