单片机c语言中菜单系统源码分析

发布者:HeavenlyClouds最新更新时间:2015-09-18 来源: eefocus关键字:单片机  c语言  菜单系统  源码分析 手机看文章 扫描二维码
随时随地手机看文章
最近在学习单片机的菜单系统时,发现有这么一些代码,定义了4个按键,确认键,返回键,上键,下键,先贴出来在vc里边建的,先定义一个结构体KbdTabStruct,在用结构体定义一个const型的数组KBD[],那么数组的每一个成员对应的原本结构体的数则是它的初始化值,并且这个值初始化后就成立,以后不再改变。比如说KBD[0].KeyCurrentIndex所对应的则是数组table中成员0 的值,这些值就是它的初始化值,相当于KBD[0].KeyCurrentIndex=0,但如果这样写N层的菜单,如此定义肯定麻烦,所以用这样的数组实现。

int main()
{
typedef struct 
{
  u8 KeyCurrentIndex;//当前状态索引号
  u8 KeyEnterState;//按下【enter】键时转向的索引号
  u8 KeyCancelState;//按下【cancel】键时转向的索引号
  u8 KeyUpState;//按下【up】键时转向的索引号
  u8 KeyDownState;//按下【down】键时转向的索引号
  void (*CurrentOperate)(); //当前状态下执行的功能操作
}KbdTabStruct;

const KbdTabStruct  KBD[]=
{
 {0,1,2,3,4,(*main)},
 {6,7,8,9,10,(*main)},
 {0,1,2,3,4,,(*main)},
 {0,1,2,3,4,(*main)},
};
 printf("%d ",KBD[0].KeyCurrentIndex);
 printf("%d ",KBD[0].KeyEnterState);
 printf("%d ",KBD[0].KeyCancelState);
 printf("%d ",KBD[0].KeyUpState);
 printf("%d ",KBD[0].KeyDownState);
 printf("%d ",KBD[1].KeyCurrentIndex);
 printf("%d ",KBD[1].KeyEnterState);
 printf("%d ",KBD[1].KeyCancelState);
 printf("%d ",KBD[1].KeyUpState);
 printf("%d ",KBD[1].KeyDownState);
    printf("%5s ",KBD[0].CurrentOperate);

 }

1.jpg

关键字:单片机  c语言  菜单系统  源码分析 引用地址:单片机c语言中菜单系统源码分析

上一篇:单片机编译器中局部变量和全局变量的深入解析
下一篇:学习uip代码分析时遇到的c语言问题

推荐阅读最新更新时间:2024-03-16 14:32

基于C8051F005单片机的小电阻测试仪
1、引言 在电路测试过程中常常会碰到由于忽略某些小电阻的影响引起实验数据与理论值之间存在较大误差,从而影响测试效果。 例如电感器、变压器中往往存在铜电阻,地铁铁轨的电阻;由于其数值较小,一般的指针万用表无法测量出来;通常实验室里会用电桥进行测量,但电桥操作手续较烦,又不能直接读出被测电阻阻值。鉴于此,我们采用了单片机,利用单片机的优势设计了该测量仪。该测量仪可直接从LCD显示屏上读出所测得的电阻值,测量范围为10μΩ~2.9999kΩ,同时可以把测试的数据进行储存,然后经串行口送入上位机,通过上位机的强大功能,可以对所测得的数据进行分析、处理。该测试仪的测量精度高达±0.1%,并采用四端测量法,电阻值不受
[单片机]
基于C8051F005<font color='red'>单片机</font>的小电阻测试仪
基于PIC单片机的应用程序升级方法
0 引言 dsPIC33F系列单片机是美国微芯公司(Microchip)推出的一款高性能单片机,它将数字信号处理器(Digital Signal Processor,DSP)的高速运算能力与单片机的控制特性无缝地集成在一起,为嵌入式系统设计提供了高性价比的单芯片、单指令流的解决方案,在音频处理、视频处理及工业控制等方面得到了广泛应用。但是在实际应用中,由于客户需求变化或程序BUG修改等原因,经常出现需要使单片机应用程序升级的情况,本文利用dsPIC33F单片机运行时的自编程(Run-Time Serf-Programming,RTSP)特性,实现了基于该单片机应用程序的升级功能。 1 基本原理 dsPIC33F系列单片机
[单片机]
基于PIC<font color='red'>单片机</font>的应用程序升级方法
51单片机LCD1602程序详解
LCD1602 工业字符型液晶。1602是指LCD显示的内容为16X2,即可以显示两行,每行16个字符. 特殊接口说明 RS:寄存器选择输入端 RS=1:指向数据寄存器 RS=0:指向指令寄存器 RW:读写控制输入端 RW=0:写操作 RW=1:读操作 E:使能信号输入端 读操作时,高电平有效; 写操作时,下降沿有效; 程序编写: #include reg51.h #include intrins.h //其中有nop函数的定义 /*对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。*/
[单片机]
51单片机-定时器工作模式2
1.工作模式2的使用 这里我们顺便讲解一下定时器0的工作模式2,也就是使用“小试管”的方式,TMOD的初始化就为“TMOD=0x02;”。 我们知道工作模式2的最长溢出时间仅为256*(12/11059200)=0.000277秒=277微秒。 我们想实现间隔51ms的流水灯实验该怎么做,首先我们定义一个变量cnt用来记录每次的溢出次数,然后我们的定时时间为51微秒(因为最大定时只有278微秒),cnt记录的值等于1000的时候,证明时间已经过去了51ms,于是再去执行流水灯的任务。 我们已经知道工作模式2是不需要在溢出之后再填充初始值的,比如我们定时的时间为51微秒,那么计算出“距离溢出的刻度”就为47(实际计算
[单片机]
基于单片机的数字频率计电路图
基于单片机的数字频率计电路图如下图所示,其频率范围是1Hz-5MHz,使用7位数码管先是测量结果,如果在输入端加上高频分频器还可以扩展量程。 script src="/gg/article-main.js" /script script type=text/javascript /script script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript /script script src="http://pagead2.googlesyndication.com/pagead/js/r201402
[单片机]
基于<font color='red'>单片机</font>的数字频率计电路图
基于PIC16单片机对24X24 点阵屏驱动设计
花了几天时间,弄出个小东西,虽然有很多种实现方式在网上流传了,但我却从没有试过,乘有时间,也弄出了四种方式的显示,各位帮忙看看,哪里还有不好的地方,希不吝指教。 一。原理及仿真图 此种为从右往左显示。 此中为从左往右显示 此种为从下往上显示 此种为从上往下显示 原理图说明: 1. 本实例采用微芯 PIC16F877A 单片机,此单片机适合初学者 2. 点阵采用 24X24 点,左边为行线,采用 U1-U3 三个 74LS373 地址所存芯片,复用单片机 RB 端口。 右边为列线,采用 U4-U6 三个 74LS373 地址所存芯片,复用单片机 RD 端口。 3
[单片机]
基于PIC16<font color='red'>单片机</font>对24X24 点阵屏驱动设计
PIC单片机的各种内部硬件功能及用法介绍
pic单片机是这个时代的宠儿,而在往期pic单片机相关文章中,小编曾对pic单片机的I/O接口进行过阐述,但I/O并非pic单片机内部硬件资源的全部内容。因此在本文中,将对pic单片机的各种内部硬件资源加以介绍,以帮助大家全面掌握pic单片机打下夯实基础。 数据存储器在单片机PIC16F84中,除了有存放程序的程序存储器外,还有数据存储器。单片机在执行程序过程中,往往需要随时向单片机输入一些数据,而且有些数据还可能随时改变。在这种情况下就需用数据存储器。由于数据存储器不但要能随时读取存放在其各个单元内的数据,而且还需随时写进新的数据,或改写原来的数据。因此,数据存储器需由随机存储器RAM构成。RAM存储器在断电时,所存数据随
[单片机]
PIC<font color='red'>单片机</font>的各种内部硬件功能及用法介绍
芯原业界领先的嵌入式GPU IP赋能先楫高性能的HPM6800系列RISC-V MCU
先楫新一代的仪表显示产品具有高画质、低功耗等特点 2024年3月4日,中国上海—— 芯原股份今日宣布先楫半导体(简称“先楫”)的HPM6800系列新一代数字仪表显示及人机界面系统应用平台采用了芯原的高性能2.5D图形处理器(GPU)IP。 HPM6800系列产品基于RISC-V CPU内核,具备高算力、低功耗、高集成度和出色的多媒体功能,适用于汽车仪表、人机交互界面(HMI),以及电子后视镜(CMS)等需要复杂图形处理、高分辨率显示和高性能多媒体用户界面的应用。 芯原支持OpenVG的2.5D GPU IP能够为MCU/MPU设备提供高能效的图形处理和优质的图像输出,同时显著降低CPU负载。 凭借成熟的可扩展性,该GP
[嵌入式]
芯原业界领先的嵌入式GPU IP赋能先楫高性能的HPM6800系列RISC-V <font color='red'>MCU</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved