独立按键驱动程序

发布者:tnzph488最新更新时间:2012-08-25 来源: 51hei关键字:独立按键  驱动程序  扫描程序 手机看文章 扫描二维码
随时随地手机看文章

下面是独立按键驱动程序,特点是利用TIMER0中断,CPU在不停的扫描程序,60ms到,执行按键驱动,函数在48ms执行一次,60ms再次执行,避免了CPU资源的浪费
 

bit  ltkey = 0;       //防止按键被长按

bit  am_led = 0;


uchar  unitTemp = 0xff;
bit    amkey;

bit    remsg = 0;
bit    send = 0;
bit    delay100 = 0;

bit    mtoa = 0;

void KeyScn(void)      //按键扫描模块
{

 uchar NowKeyValue;
 bit   NowAMKeyValue;

 //检测按键
 if(pic == 10)      //首次按键检测
 {
   amkey = AMKEY;
   unitTemp = P2;
 }

 if(pic == 13)      //12ms后,再次执行检测
 {
  NowKeyValue = P2;
  NowAMKeyValue = AMKEY;

  if(NowKeyValue != unitTemp)   //如果两次检测到的结果不同,则认为是抖动,不做处理
  {
    unitTemp = 0xff;
  }

  if((NowAMKeyValue == amkey) && (amkey == 0))   //如果状态键按键有效
  {
    if(ltkey == 0)
    {           //AM状态LED位,0为自动,1为手动
      am_led = !am_led;
   if(am_led == 0)       //如果是从手动切回自动,切回到CH1
   {
     unitTemp = 0xf7;
     mtoa = 1;        //由手动切到自动后的标志位
   }

   AMLED = am_led;       //状态灯,变化时写入
   ltkey = 1;
    }
  }
  else
  {
    ltkey = 0;
  }
 }

}
关键字:独立按键  驱动程序  扫描程序 引用地址:独立按键驱动程序

上一篇:用单片机C语言来实现相思病
下一篇:不带字库的128*64液晶汉字显示程序

推荐阅读最新更新时间:2024-03-16 13:06

状态机方式按键扫描单片机程序
这是从 http://www.51hei.com/bbs/dpj-19294-1.html 这个单片机做的收音机里面截取出来的一个子程序,完整的代码和 原理图 可从原帖下载. /*-----------状态机方式按键扫描-----------*/ /*------------外部晶振为 12MHz-----------*/ /*--------最后修改2011.02.26--------------*/ #include STC12C5620AD.H #include Key_Scan.H #define Key_Mask 0x0f //屏蔽不用的按键,不用的按键用0屏蔽
[单片机]
基于μCLinux的USB驱动程序实现
  0 引 言   μClinux是针对嵌入式控制领域的操作系统,它继承了Linux内核的绝大部分特性,专为没有内存管理单元MMU的嵌入式微处理器而设计。它内核小,效率高,源代码开放,包含了完整的TCP/IP网络协议。ADSP-BF533是ADI公司Blackfin系列的高速数字信号处理器芯片。 Blackfin系列是ADI与Intel联合开发的体现高性能体系结构的首款第四代DSP产品,16位定点DSP内核,新型指令结构,支持C/C++编程,主频达600 MHz,内核电压1.2 V,具有动态电源管理能力,功耗低,扩展能力强,被广泛应用于各种信号处理。   这里使用基于Blackfin ADSP-BF533微处理器的μCli
[嵌入式]
新型按键扫描程序(C程序)
一、简述 看过不少源程序,没有发现这种按键处理办法的踪迹,所以现将它共享出来。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。 对于老鸟,我建议直接看那两个表达式,然后自己想想就会懂的了,也不需要听我后面的自吹自擂了,我可没有班门弄斧的意思,但是对于新手,我建议将全文看完。因为这是实际项目中总结出来的经验,学校里面学不到的东西。 以下假设你懂C语言,因为纯粹的C语言描述,所以和处理器平台无关,你可以在MCS-51,AVR,PIC,甚至是ARM平台上面测试这个程序
[单片机]
老查的ARM学习笔记:chapter-3(串口驱动程序分析 )
tty子系统架构概念简述 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。 1 串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备。Linux把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名称是/dev/ttySAC0; /dev/ttySAC1…… 2 控制台终端(/dev/console) 在Linux系统中,计算机的输出设备通常被称为控制台终端(Console),这里特指printk信息输出到的设备。/dev/console是一个虚拟的设备,它需要映射到真正的tty上,比如通过内核启动参数” console=ttySAC0”就把co
[单片机]
老查的ARM学习笔记:chapter-3(串口<font color='red'>驱动程序</font>分析 )
ds1302驱动程序+lcd12864串行显示,使用结构体写,可读性更强
ds1302.c #include ds1302.h // 定义RTC初始化结构体,决定了初始化时间 RTC_TIME rtc_time = { 25, // 秒 35, // 分 02, // 时 25, // 日 4, // 月 4, // 星期 19 // 年 }; /******************************************************************************* * 函 数 名 : bcd_to_hex * 函数功能 : 从时钟芯片中读出的时间数据,需转换为十进制数。 * 输
[单片机]
Tiny210驱动之NAND_FLASH驱动程序
tiny_nand.c驱动源码: #include "linux/module.h" #include "linux/types.h" #include "linux/init.h" #include "linux/kernel.h" #include "linux/string.h" #include "linux/ioport.h" #include "linux/platform_device.h" #include "linux/delay.h" #include "linux/err.h" #include "linux/slab.h" #include "linux/clk.h" #include "linux/cpu
[单片机]
MPC860的HDLC通道驱动程序的设计与实现
      阐述了MPC860芯片及其SCC接口的基本工作原理,介绍了在SCC通道上实现HDLC协议的基本设计思想及具体实现,并给出了主要功能函数的设计流程。      HDLC作为一种基于点到点/多点的数据链路层协议,常常用来连接路由器和网关等网络设备。摩托罗拉公司生产的MPC860微处理器是当前应用非常广泛的嵌入式微处理器,良好的性价比和强大的通信与网络协议处理能力以及丰富的通信接口支持使其非常适合构建VOIP网关;特别是其SCC接口本身支持HDLC协议,因此可以通过它的一个SCC接口来为VOIP网关和信令网之间提供链路支持。VOIP作为一种基于IP的数据传输技术,广泛地利用Internet全球互连环境,将传统的PSTN电话网
[嵌入式]
ST9+系列单片机I2C总线驱动程序实现
    摘要: 串行扩展总线技术是新一代单片机技术发展的一个显著特点,其中Philips公司推出的I2C总线最为著名。ST9+系列是意法半导体公司的单片机产品,能够很好地支持I2C总线协议。本文以ST9+单片机为例阐述I2C总线协议,并给出在ST9+单片机上实现I2C总线驱动程序的流程和方法。     关键词: I2C总线 串行扩展总线 ST9+ 总线驱动 串行扩展总线技术是新一代单片机技术发展的一个显著特点,其中Philips公司推出的 I2C总线最为著名。I2C总线最显著的特点是规范的完整性、结构的独立性和用户使用时的简单化。 I2C总线有严格的规范,如接口的电气特性、信号时序、信号传输的定
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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