amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 4995|回复: 13

用ATmega8写MzL05-12864 液晶驱动,flash只能存几个16*16汉字的字模,程序才4K不到,为什么?

[复制链接]
发表于 2009-2-23 23:53:14 | 显示全部楼层 |阅读模式
用ATmega8写MzL05-12864 液晶驱动,flash只能存几个16*16汉字的字模,程序才4K不到,flash不是有8K吗?我想存100个汉字进去,难道还要我加存储器,没搞错啊!字库只要大点程序就运行错误,现在只能存10个字的,我驱动是与字数无关的,字模数组是存在程序存储的.
发表于 2009-2-24 08:00:05 | 显示全部楼层
你不会是存到RAM里去了吧?
发表于 2009-2-24 08:38:54 | 显示全部楼层
估计是用的GCC,然后声明字模数据称const了。
 楼主| 发表于 2009-2-27 07:51:10 | 显示全部楼层
2楼说我不错,我是声明字模数据称const了,这样子有什么不对吗,我这前是学51的,AVR是刚学的.
发表于 2009-2-27 08:57:10 | 显示全部楼层
呵呵,GCC先看一下它的文档,pgm部分
 楼主| 发表于 2009-2-28 17:10:49 | 显示全部楼层
我现在用AtmanAvr这个软件也还是这样子,我没有声明字模数据在const
发表于 2009-3-6 11:15:37 | 显示全部楼层
这个gcc和keil c不一样,gcc符合标准。
 楼主| 发表于 2009-3-7 11:48:31 | 显示全部楼层
问题搞清楚了,只要定义字模数组在FLASH里就可以了,然后就是调用的问题了,我试过了好多种方法都不行,都有是在网是找的,读到的数据和我存的不一样,为什么?还有就是ATmega8的FLASH不能存100个汉字的字模,是我算错了.
发表于 2009-3-7 14:18:49 | 显示全部楼层
注意:M8的FLASH为8K字节(4K字)。
如果你的程序本身不到4K字节的话,那么可以放100个字的字模(32*100=3200字节)。
 楼主| 发表于 2009-3-13 20:22:16 | 显示全部楼层
在GCC里找到了读FLASH的函数了,现在我把读写的都表上来,其实在芯艺的<<AVR单片机GCC程序设计>>里面就有,我最近弄AVR就是一直参考他的这本书的,太有帮助了,真是太感谢他了!

flash 中的变量
在 flash 空间声明变量,GCC 规定使用关键字 __attribute__((progmem))。为了应用上方便,在 <progmem.h>文件中定义了 flash 空间的数据类型,可以直接使用他们定义 flash 变量。表 5-1 列出了这些数据类型。

表 5-1 flash 空间的数据类型


--------------------------------------------------------------------------------

类型 定义
prog_void void __attribute__((progmem))
prog_char char __attribute__((progmem))
prog_uchar unsigned char __attribute__((progmem))
prog_int  int __attribute__((progmem))
prog_long  long __attribute__((progmem))
prog_long_long  long long __attribute__((progmem))
PGM_P  prog_char const*
PGM_VOID_P  prog_void const*

--------------------------------------------------------------------------------


flash 空间的变量定义。



const prog_uchar LINE[] = {1,2,3,4};

AtmanAvr C 定义了宏 FLASH , flash 空间的变量也可以如下定义:

FLASH char str[] = {"string in flash"};


读FLASH
pgm_read_byte
#include <pgmspace.h>

pgm_read_byte(unsigned short addr);

返回值
8-bit 数据

参数
addr 16-bit ROM 地址

注释
从程序存储空间 addr 读取一字节。


FLASH double d = 123.456;
发表于 2010-6-28 15:26:50 | 显示全部楼层
学习了。感谢
发表于 2012-5-25 21:28:25 | 显示全部楼层
这个学习了。
发表于 2014-8-30 10:21:27 | 显示全部楼层
请问楼主你用的什么编程软件 是winAVR?
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-16 13:03

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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