计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...
https://m.toutiaocdn.com/i6831165140000309768/?app=news_article×tamp=1590675308&use_new_style=0&req_id=20200528221507010130037138311A2F4A&group_id=6831165140000309768
图一
图二
在键盘上按下一个键以后,屏幕上会很快把这个字符显示出来,我们觉得这是一个再自然不过的事情,但是要实现这一步,里面的机制却很复杂,这篇文章简单讨论一下这个问题。
图二中,我们看到,按下一个键以后,这个被按下的键的信息就被立刻送到一个寄存器中,然后CPU就知道了被按下的是什么键,并把这个键上的字符显示在屏幕上面。
那问题来了,CPU怎么就知道按下的是哪个键呢?
图三
我们先看图三,图中的每一个按键下面,都有若干导线连接,按键的下面,是连接这些导线的开关,一个按键按下去,这些开关有的闭合,有的断开,闭合的为1,断开的为0,这就形成了一个二进制数字,也就是ASCII编码。我们再看图四就更清楚了。
图四
上图中,假设每个按键下面都有k1-k8这八个开关,现在假设a按键按下时,k2,k3,k8闭合,其它的断开,那么a就对应二进制01100001,即十进制97,这正是字符a的ascii码值。到此为止,我们应该大致清楚了CPU能识别哪个按键的原因。
但接下来还有几个问题:
1:是不是任何时候键盘有按键的动作发生,我们的计算机都会响应呢?
相信大部分的朋友们都会说不是,就像我们刚打开百度
这个时候你无论怎么按键盘,那个框框里面都没反应,只有当我们把鼠标在框框里面按了一下,里面出现了闪动的光标的时候,这个时候我们按键才有用。
那么怎么来理解这个事情呢?首先,我们要有一个概念,前面讲的按下a键等于产生了一个二进制数字,但是这个数字由谁来识别呢?那么计算机里面所有这样的事情都是由程序来做的,这个程序叫做键盘扫描程序,是一个中断程序,也就是说,这个中断程序什么时候能够运行,必须得到允许才可以,计算机里面有一个中断控制电路
图五
就是用来判断哪个中断程序什么时候允许执行。那么上述百度输入框的例子,我们就可以理解为,当我们把光标点进那个输入框的时候,键盘输入的中断程序才被允许执行。高级语言中的scanf,getfocus函数都可以这样理解。那么,那个被允许执行的中断程序又是用来干什么的呢?其实很简单,就是把那个输入的字符a的ascii码转换为输出字形码,并显示在屏幕上。
第二个问题,就是当我们按住一个键不放,或者同时按下两个键的时候,这个时候怎么处理呢?
按住a键不放
同时按下f和d两个键
从上面两个图可以看出,当我们按下一个键不放的时候,会出现多个a,那么系统肯定是以按键持续多长时间作为按了一次a来处理的;当同时按住两个键不放的时候,系统最终会判断出哪个键先按下后按下,因为同一秒按下,不等于区分到0.1秒的时候还相同,不等于0.01秒的时候还相同。。。。。。而程序指令的执行时间是纳秒级的。
那么,做这个事情的又是什么程序呢?就是一个键盘扫描程序。
这个程序我们不必深究,我们只需要知道,所谓的键盘扫描,就是在图四的基础上反复执行temp=P2这条指令,P2可以认为是一个寄存器,也就是不断地读出某个键被按下的键值。我们再看到里面有一个语句需要连续判断10次,就是用来判断某个按键被按下的持续时间是否足够,足够的话才能被认为是有效按键。
这个键盘扫描程序只要操作系统正常运行就在反复执行。
计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...相关推荐
- 飞瞳引擎™AI集装箱识别检测云服务,全球两千企业用户投入使用,集装箱信息识别率99.98%以上高泛化性,集装箱信息识别云服务免费
二十大报告指出加快发展物联网,建设高效顺畅的流通体系,降低物流成本.飞瞳引擎™AI集装箱识别检测云服务,自动化识别检测集装箱信息大幅降低物流成本提升效率,飞瞳引擎™AI集装箱识别检测云服务,全球两千企 ...
- c理c利用计算机怎么弹,通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...
通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 计算机的工作方式: 现代计算机的基本体系结构都是采用冯诺依曼结构,冯诺依曼的设计思想最重要之处是"存储程序"的这个概念 ...
- 计算机键盘键盘一个按键坏了,我的世界:如果键盘坏掉一个键,六种情况,哪个会影响你玩MC?...
如果你在玩<我的世界>时,发现了键盘上的一个按键失灵,共有六种情况,你认为哪个会影响你玩MC? 我的世界:键盘的空格键失灵,还能继续玩MC吗?跑酷玩家无法忍受 因为PC版的<我的世界 ...
- 键盘鼠标是计算机标准输入输出设备,微型计算机输入输出设备之键盘和鼠标(ppt 32页).ppt...
<微型计算机输入输出设备之键盘和鼠标(ppt 32页).ppt>由会员分享,可在线阅读,更多相关<微型计算机输入输出设备之键盘和鼠标(ppt 32页).ppt(31页珍藏版)> ...
- ACMNO.9求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。 例如:2+22+222+2222+22222(n=5),n由键盘输入。 输入 n 输出 a=2 时
题目描述 求Sn=a+aa+aaa+-+aa-aaa(有n个a)之值,其中a是一个数字. 例如:2+22+222+2222+22222(n=5),n由键盘输入. 输入 n 输出 a=2 时的Sn 样例 ...
- 鼠标键盘唤醒计算机,除了按下电源按钮唤醒计算机,WIN10也可以使用鼠标或键盘来唤醒...
哈喽,大家晚上好,我是一天不写点什么就感觉浑身不舒坦的沐沐君说软件.书接上回,今天小编将继续为小伙伴们分享Windows 10操作系统如何设置电源管理. 启用或禁用鼠标和键盘唤醒处于睡眠模式的计算机 ...
- 介绍一个统计键盘和鼠标输入情况的工具软件
程序员是不是手速越快,工作效率越高? 我觉得工作时把手机锁起来是一个好办法. 言归正传,我今天尝试了一个统计键盘和鼠标输入情况的工具软件,名叫 WhatPulse,分享给大家. 官网地址:https: ...
- C语言:编写一个程序,从键盘读入一个矩形的两个边的值(整数),求矩形面积
/* 编写一个程序,从键盘读入一个矩形 的两个边的值(整数),求矩形面积. */ #include<stdio.h> void main() {int length,wide,area;p ...
- 键盘输入一个长方形的两个边长,输出该长方形的周长、面积和对角线。要用到Math类提供的数学方法。
编写程序,从键盘上输入一个长方形的两个边长,输出该长方形的周长.面积.和对角线. 用不同的输入测试程序, 问题: 不输入数字,而输入字母,或者浮点数,会有什么结果? Math类都提供有哪些数学方法? ...
最新文章
- 6.extern “c”
- [保护模式]PAE模式
- sql 2008服务器响应慢,SQL Server 2008停止响应后,Web服务器不活动
- C++ 标准库类型 stack
- Myeclipse中快速插入HttpServlet子类中doGet和doPost方法
- 设计模式之工厂模式(三)
- Ubuntu下apt-get方式Git的安装、配置和更新
- apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了
- sql count为空时显示0_C0010负坐标显示为正数+红色0值参考线
- python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了
- 深度学习系列--1.入坑模型: 线性回归,logistic 回归,softmax分类器
- stl中stacks的基本用法
- 机器学习之问题建模(一)
- c串口一直读到缓存数据_STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)...
- 交互设计精髓之理解输出
- 企业常用OSPF组网配置示例
- 使用vscode编写原生微信小程序
- eXosip中Event事件学习笔记
- 修改webbrower中浏览器版本
- 噩梦射手(SurvivalShooter)教程(五)