汇编:从键盘上面一排数字失灵输入一个数字,按秒递减,至0结束?

B10S提供了int 16h中断例程供程序员调用。int 16h中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0。下面的指令从键盘缓冲区
中读取一个键盘输入,并且将其从缓冲区中删除:


  

下面我们接着上一节中的键盘输入过程,看一下int 16h如何读取键盘缓冲区


  

后,缓冲区中的内容如下。


  

后,缓冲区中的内容如下。


  

后,缓冲区中的内容如下。


  

int 16h中断例程检测键盘缓冲区,发现缓冲区空,则循环等待,直到缓冲区中有数据。
(6)按下A键后,缓冲区中的内容如下。

(7)循环等待的int 16h中断例程检测到键盘缓冲区中有数据,将其读出,缓冲区又为空。

从上面我们可以看出,int 16h中断例程的0号功能,进行如下的工作。
(1)检测键盘缓冲区中是否有数据;
(2)没有则继续做第1步;
(3)读取缓冲区第一个字单元中的键盘输入;
(5)将已读取的键盘输入从缓冲区中删除。
可见,BIOS的int 9中断例程和int 16h中断例程是一对相互配合的程序,int 9中断例程向键盘缓冲区中写入,int 16h中断例程从缓冲区中读出。它们写入和读出的时机不同,int 9中断例程是在有键按下的时候向键盘缓冲区中写入数据;而int 16h中断例程是在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出。
我们在编写一般的处理键盘输入的程序的时候,可以调用int 16h从键盘缓冲区中读取键盘的输入。
编程,接收用户的键盘输入,输入“r",将屏幕上的字符设置为红色;输入“g”,将屏幕上的字符设置为绿色;输入“b",将屏幕上的字符设置为蓝色

程序如下,画线处的程序比较技巧,请读者自行分析。


主要内容为:如何定义位,如何得到按键状态,防止键盘干扰的方法
以及如何处理读入的键值
思路:首先在某一引脚输出一个电平,然后读入引脚的电平,如果刚好相反
那么可能有按键发生,但是不排除干扰,为了防止干扰,需要软件延时20ms
消除干扰,然后,等待用户释放,否则,可能重复的到某种结果,发生意外情况
  应该说键盘输入是单片机外部指令输入的重要途径,因此如何设计键盘以及键盘的工作原理、读键盘的方法、键盘的抗干扰设计等在单电能机系统设计中占有重要地位。这个例子在系统硬件的基础上设计了软件查询程序、软件延时程序(防止干扰),大致讲述了一种查询式键盘的工作原理与读取方式。 

本内容试读结束,可阅读更多

下载后可阅读完整内容,剩余3页未读,

我要回帖

更多关于 键盘上面一排数字失灵 的文章

 

随机推荐