二、程序分    析厂家提供的读键程序,采用两次读键.中间加去抖延">
锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

关于对89S51单片机开发板读键程序的改进

时间:2023-07-22 16:07:00

能<a target=开关控制器的硬件电路示意图" width="534" height="471">


  
  二、程序分
  
  析厂家提供的读键程序,采用两次读键.中间加去抖延时的办法来实现有效读键。其8051汇编子程序如下。

  上述程序存在很明显的不足,主要体现在其两次读键之间的去抖延时是用循环计数的方法。这种方法在读键时要占用的运行资源,使MCU除了中断操作外,在整个读键过程中不能运行其他程序。这个去抖延时的时间超过240×240个单指令循环l重复运行5万多次单指令),如果利用起来可以运行上万条指令,完全能够实现多数单片机项目全部程序的运行。
  
  为了把这个时间利用起来,可以通过用定时中断来实现去抖延时。这样在两次读键的间隔,MCtJ可以运行其他程序,从而大大提高整个单片机系统的运行效率。

  三、程序改进
  
  
  尽管读键操作的原理没有改变,要改进读键程序,把去抖延时从计数延时换为定时器中断定时。
  
  对原有程序的改动还是相当大的。从已改进程序的原代码长度可以看出,新代码比原来的程序长出两倍以上。
  
  程序的改进主要体现在:
  
  1)去抖延时20ms是利用80C51MCt定时器以定时中断的方法实现。可以采用定时器T0或T1(本程序采用T0】,设为工作方式1,即16位定时工作方式。由于80C51定时计数是递增计数方式,在计数器值超过FFF_1时产生中断。对于12M钟频而言,20ms定时的计数常数应为65536一(20×10(注册标识)×12/(12×10(注册商标))):65536—20×10=45536=B1EOI-1。那么设THO=B1H,TLO=EOI。
  
  2)增设多个标志。包括:
  
  ①20ms定时完成标志F_time一20ms。20ms定时完成后设定为“1”。然后进行第二次读键。
  
  ②读键操作标志F_key—read。完成第一次读键操作后,标志设定为“1”,等待20ms定时完成后。进行第二次读键。
  
  ③执行按键操作标志F-key—opte—run。确定有效按键后,标志设定为“1”,进行相应按键功能处理。在执行这一按键处理操作时,系统不再进行新的读键。
  
  ④按键操作结束标志F_key—opte_end。某一按键处理操作结束时,标志设定为“1”。系统可以进行新的读键操作。
  
  运行时,在第一次读键之后启动20ms定时。定时完成后产生中断,设置20ms定时完成标志。当循环运行的读键程序发现20ms定时完成标志为“1”。
  
  则进行第二次读键操作。如果两次读键都读到相同的键,就可以确定按键有效,进行相应的处理操作(源代码中的Key一Functoin)。需要注意的是。为避免运行混乱,本程序设计限定MCU正在执行某一按键处理操作时,不响应新的读键操作。


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章