实现目标

使用中断,当一个按键按下时,显示第几个按键被按下。

Proteus仿真图

C51代码(中断)

#include <REG52.H>      /* special function register declarations */
#include <intrins.h>#define byte unsigned char
#define uchar unsigned char
#define word unsigned int
#define uint unsigned int
#define ulong unsigned long
#define BYTE    unsigned char
#define WORD    unsigned int#define TRUE  1
#define FALSE 0
void initUart(void);/*初始化串口波特率,使用定时器2*/
#define KEY_PORT  P1 /*按键接在P1口*/
uchar key_Value;     /*存放键值*/
bit   int0_flag;     /*中断标记*//******** main 函数 *********/
void main (void) {  initUart(); /* 初始化串口 */int0_flag=0;/*设置中断0标记*/TCON=0x55;  /* 电平触发外部中断 */IE=0x81;    /*打开外中断int0*/do {if (int0_flag) { /*如果有中断*/switch (key_Value){ /*根据中断源分支*/case 1:printf ("key-press0 is pressed\n");/* 可在此处插入按键0处理程序 */break;case 2:printf ("key-press1 is pressed\n");/* 可在此处插入按键1处理程序 */break;case 4:printf ("key-press2 is pressed\n");/* 可在此处插入按键2处理程序 */break;default:break;}int0_flag=0;    /*清中断0标记*/           }}while(TRUE);
}/***********  外中断0服务程序***************/
void exint0(void) interrupt 0
{EA=0;/* 关总中断 */int0_flag=1; /*设置中断0标记*//*读取外部中断源输入,并屏蔽高5位*/key_Value= ~KEY_PORT & 0x07;EA=1;/* 开总中断 */
}/********** 初始化串口波特率 ************/
void initUart(void)/*初始化串口波特率,使用定时器2*/
{
/* Setup the serial port for 9600 baud at 11.0592MHz */SCON = 0x50;  //串口工作在方式1RCAP2H=(65536-(3456/96))>>8;RCAP2L=(65536-(3456/96))%256;T2CON=0x34;TI  = 1;     /* 置位TI*/
}

笔记

思路(个人理解):没有一个按下时,三个按钮对应线路呈现高电平,只要任何一个按键被按下,便会产生一个低电平,触发INT0中断,然后读取P1口中的P1.0、P1.1、P1.2【key_Value= ~KEY_PORT & 0x07】,根据key_Value确定具体是哪一个按钮被按下,完成相应的操作

本文Proteus仿真图及源程序获取见:

运行结果

说明

参考课本:单片机原理与嵌入式系统设计

Proteus仿真:简易独立式键盘相关推荐

  1. 独立式键盘的编程方法 按键的去抖动原理和基本方法

    独立式键盘的编程方法 按键的去抖动原理和基本方法 A P3.2  开始 按此键则灯开始流动(由左向右) B P3.3  停止 按此键则停止流动 所有灯为灭 C P3.4  向左 按此键则灯反向流动 由 ...

  2. 一个案例带你了解独立式键盘设计原理

    单片机与4个独立按键S1~S4以及8只LED指示灯构成一个独立式键盘系统.4个按键接在P1.0~P1.3引脚,P3口接8只LED指示灯,控制8只LED指示灯的亮和灭,原理图如下.当按下S1按键时,P3 ...

  3. 独立式键盘实验c语言,单片机设计报告—独立式键盘控制的4级流水灯.doc

    单片机设计报告-独立式键盘控制的4级流水灯 单片机结题报告 独立式键盘控制的4级流水灯 班 级 姓 名 吴泽宇 学 号 2008405340 一.任务目的: 通过采用单片机制作一个独立式键盘控制的4级 ...

  4. Arduino与Proteus仿真实例-4x4矩阵键盘驱动仿真

    4x4矩阵键盘驱动仿真 键盘是广泛用于各种电子和嵌入式项目的输入设备. 它们用于以数字和字母的形式获取输入,并将其输入系统以进行进一步处理. 矩阵键盘由一组相互连接的按钮组成. 在本次实例中使用 4X ...

  5. 单片机应用系统设计技术——独立式键盘及其工作原理

    独立式按键及其工作原理 一.实验目的 二.实验内容 三.实验步骤 四.C代码如下 五.实验结果

  6. 51单片机 Proteus仿真 简易计算器设计 清零 十以内

    1 利用键盘及数码管作为计算机的输入及显示模块 2 能进行10以内的减减乘除的基本运算,按键有0~9±*/= 3 有清零"CR"按键 4 有记忆功能键 M+ RM M-,可以保存. ...

  7. Proteus仿真-矩阵键盘(实验一)

    最近,由于在学习51单片机,学会了用proteus进行仿真 Proteus仿真-矩阵键盘 由于一般的按键是单独接在一根I/O线上,构成所谓的独立式键盘.其特点是电路简单,易于编程,但占用的I/O口线比 ...

  8. 二、51单片机 使用Proteus仿真掌握矩阵键盘(仿真及代码)

    学习内容:通过proteus实现对51单片机矩阵的掌握 1.键盘接口设计.键盘--向单片机输入数据.命令等功能,是人机对话的主要手段.由若干按键按照一定规则组成.每一个按键实质上是一个按键开关,按构造 ...

  9. 蓝桥杯实验4--按键之独立键盘(proteus仿真)

    开始试试按键的部分 首先说一下什么是按键 按键分为按结构可分为触点式和无触点式两类.开发板上用的是触点式的按键.按键在接口上分类可分为编码键盘和非编码键盘.按键通常使用机械式触点式按键开关,但是由于机 ...

  10. c语言设计一个仿真窗口的程序,51单片机C语言实例(350例)Proteus仿真和代码

    100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示D ...

最新文章

  1. centos6上虚拟主机的实现
  2. Android webview加载pdf实验成功
  3. java小程序查看器,成功拿到offer
  4. 数据压缩之经典——哈夫曼编码(Huffman)
  5. 网络编程和反射的基本知识点的总结
  6. 2.FactoryMethod-工厂方法模式
  7. LINUX开源监控平台Nagios(服务监控配置)
  8. 高等代数第3版下 [丘维声 著] 2015年版_黄哥友情提示:学习线性代数的书和视频...
  9. 电路分析第三章 电容与电感
  10. java导出excel 图片_将图片导出到Excel中(poi导出)
  11. 赵玉海:科技部已组织专家编制中国云
  12. git使用命令行首次提交代码
  13. 千呼万唤始出来——GPT-3终于开源!
  14. c语言 求矩阵各行元素之和
  15. 安卓手机用ADB命令打印APP的崩溃日志
  16. 超级简单易懂的蓝桥杯《成绩统计》解法
  17. 小米笔记本电池只充电到95%的设置
  18. Windows搜索文件技巧:Listary和Everything各有千秋(比较、对比)
  19. windows照片查看器提示无法显示图片内存不足
  20. Unity多分辨率适配

热门文章

  1. 基于java springboot垃圾分类小程序源码(毕设)
  2. java高并发 pdf_Java高并发编程详解 PDF 下载
  3. 图中提取数据再作图---GetData Graph Digitizer
  4. 【数据库】E-R图相关知识、绘制方法及工具推荐
  5. 怎么使用QQ音乐api搭建个人音乐站点
  6. log4cpp编译安装
  7. 计算机电磁泄露案例,电磁泄漏
  8. NideShop:基于Node.js+MySQL开发的高仿网易严选开源B2C商城
  9. Python出力scv文件,打开乱码问题
  10. Jeff Dean:谷歌大脑背后的“大脑” | AI名人堂