网站大量收购闲置独家精品文档,联系QQ:2885784924

一个占用内存很小的菜单系统在AVR上的移植.pdf

一个占用内存很小的菜单系统在AVR上的移植.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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);

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档