- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个占用内存很小的菜单系统在AVR上的移植
AVR
AVR
一个占用内存很小的菜单系统在AAVVRR上的移植
基础知识:: 熟读《一个占用内存很小的菜单系统》,并理解了原作者的编程思想,以及有一::
定的AVR C语言编程经验。能理解函数指针的概念 以及状态机的概念
WINAV
WINAV
本文以下代码基于WWIINNAAVVRR2200009900331133
1.
1.
11..函数名列表 索引的移植
因为直接加const关键词定义表格是没有用的 表格的数据仍然是存放在.data区(RAM)的
还需要加PROGMEM 关键字:
例子如下::::
constKbdTabStruct KeyTab[]PROGMEM ={
{0,1,2,3,4,(*MenuSleepInit)},
{1,0,0,0,0,(*MenuSleepUp)},
{2,0,0,0,0,(*MenuSleepDn)},
{3,0,0,0,0,(*MenuSleepEsc)},
{4,0,0,0,0,(*MenuSleepEtr)},
{5,6,7,8,9,(*MenuTopInit)},
{6,0,0,0,0,(*MenuTopUp)},
{7,0,0,0,0,(*MenuTopDn)},
{8,0,0,0,0,(*MenuTopEsc)},
{9,0,0,0,0,(*MenuTopEtr)},
……
}
这样 数组就被定义在Flash 区了
2. ?
2. ?
22..如何读出菜单状态??
KeyFuncIndex=pgm_read_byte(KeyTab[KeyFuncIndex].KeyUpState);
3. Flash
3. Flash
33..如何把函数指针从 FFllaasshh区取出来 并执行?
(*((void(*)(void))pgm_read_word(KeyTab[KeyFuncIndex].CurrentOperate)))();
//从Flash区 读出函数指针(2个字节)并且强制转换为函数 执行
更简单的办法:
#define PgmFun(A) (*((void(*)(void))pgm_read_word(A)))() //定义一个可以执行
Flash区函数指针的宏
然后一句
PgmFun(KeyTab[KeyFuncIndex].CurrentOperate);
就可以调用表格内的函数指针.
4.
4.
44..菜单项的定义
const uchar MenuSetsEN_0[] PROGMEM=SetTime;
const uchar MenuSetsEN_1[] PROGMEM=SetDate;
const uchar*MenuSetsEN[] PROGMEM=
{
MenuSetsEN_0,
MenuSetsEN_1,
……
}
5.
5.
55..关于显示方面
一般情况下printf(formatstring);中的formatstring是在.data区的
我们还需要编写一个Printf_P
下面是一个LCD_Printf_P 函数
/*
函数名:void LCD_Printf_P(unsigned char StartX,unsigned char AtLineY,const prog_char
*strfmt,...)
入口参数:unsignedcharStartX,unsignedcharAtLineY 开始点
constprog_char*strfmt,要显示的内容
%s 显示字符串 %d显示一个无符号整数0~65535的
%%显示一个%
返回::无::
调用函数::::
LCD_SetPos(StartX,AtLineY);
您可能关注的文档
最近下载
- 广东省广州市黄埔区2019~2020学年七年级上学期期末语文试题(含答案解析).pdf VIP
- “新质生产力”系列(八):八大新兴产业及九大未来产业巡礼.pptx VIP
- 教师阅读讲座.ppt
- 2024年山东省政府采购判断题真题最新(2024年12月20日整理)第11套.docx VIP
- 外墙涂料工程检验批质量验收记录.doc VIP
- 辞旧迎新展望未来国旗下演讲稿PPT.pptx
- 2024年山东省政府采购判断题真题最新(2024年12月20日整理)第19套.pdf VIP
- 2024年1月上海市春季高考数学试卷试题真题(含答案详解).pdf
- 2024年山东省政府采购判断题真题最新(2024年12月20日整理)第9套.docx VIP
- 供应商加税点开票分析.xls VIP
文档评论(0)