C51单片机——多个按键中断控制实现

1.实现代码

/*
* 2018-10-22
*/
#include<STC15F2K60S2.h>
#define uchar unsigned char
#define uint unsigned intsbit KEY_1 = P3^2;
sbit KEY_2 = P3^3;
sbit KEY_3 = P1^7;
sbit led_sel = P2^3;uchar keysta[] = {1,1,1};//the current state of the key
uchar led[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //The light settings
uchar i;  //number of keys
uchar j;  //number of keys
uchar backup[3] = {1,1,1};void Init()
{P0M0 = 0xff; //push-pull outputP0M1 = 0x00;P2M0 = 0xff;P2M1 = 0x00;TMOD = 0x01; //mode selection , way 1EA = 1;      //Open total interruptTH0 = 0xf8;  //the high octet setting of the timerTL0 = 0xcd;  //the low octet setting of the timerET0 = 1;     //start timer interruptionTR0 = 1;     //starting switchled_sel = 1;P0 = 0;      //initialize
}void InterruptTimer0() interrupt 1
{static uchar keybuf[3] = {0xff,0xff,0xff};//key buffer initial valueTH0=0xf8; //The initial value is loaded each timeTL0=0xcd;//key values into bufferkeybuf[0] = (keybuf[0] << 1)|KEY_1;keybuf[1] = (keybuf[1] << 1)|KEY_2;keybuf[2] = (keybuf[2] << 1)|KEY_3;//update the key for(i=0;i<3;i++)  //Loop check{if(keybuf[i] == 0x00) // move 8 times{keysta[i] = 0;  }else if(keybuf[i] == 0xff){keysta[i] = 1;}}
}void main()
{Init();while(1){for(j=0;j<3;j++)  //Loop check{if(keysta[j] != backup[j]){if(backup[j] == 0){P0 = led[j];}}backup[j]=keysta[j];}}
}

2.程序说明
若KEY1被按下,则LED灯L7发光。(其他灯熄灭)
若KEY2被按下,则LED灯L6发光。
若KEY3被按下,则LED灯L5发光。

C51单片机——多个按键中断控制实现相关推荐

  1. 应广单片机PFS123按键中断控制数码管显示例程

    目录 应广单片机PFS123按键中断控制数码管显示视频 led数码管图片 应广单片机PFS123按键中断控制数码管显示代码 应广科技网址,开发工具,PMS123规格书:http://www.padau ...

  2. 基于C51单片机的DA方波可控制发生器

    基于C51单片机的DA方波可控制发生器 文章目录 前言 一.DA转换器 1.DA简介 2.常用DA电路图 二.程序工作流程图 三.C51代码 1.初始化 2.自定义函数 2.主函数 总结 前言 在生活 ...

  3. 【嵌入式】按键中断控制 LED 跑马灯实验

    [嵌入式]按键中断控制 LED 跑马灯实验 1. 操作内容 2. 原理解释 2.1 实验箱按键电路 2.2 实验箱LED电路 2.3 寄存器说明 3. 操作步骤 3.1 编写键控制 LED 代码,将代 ...

  4. 驱动——按键中断控制LED灯实验

    三个按键实现按键中断 要求:按键按一下灯亮,再按一下灯灭 注:由于开发板位置,为了方便一一对应观察,采用key1控制LED3,key2控制LED2,key3控制LED1 0.添加相关设备树节点信息 ① ...

  5. 51单片机实例学习二 按键中断识别、定时器、利用定时器产生乐曲、数摸转换 ADC0804和DAC0832

    六.按键中断识别 [实验任务] 采用中断技术,每按一下按键,计数器加1,并用LED显示出来. [硬件电路] 注意:我们只用4位数码管中的两位. 注意:a接P0.0;b接P0.1;c接P0.3-- 注意 ...

  6. 中断控制流水灯c语言程序,51单片机按键中断控制流水灯

    满意答案 levis501523 2018.01.03 采纳率:58%    等级:12 已帮助:8301人 #include #include #define uchar unsigned char ...

  7. c51单片机之利用外部中断实现数字时钟,且具有调时功能

    仿真图: 代码段: /*整体功能:用八位共阳极数目管作电子时钟显示,并用key0位控制进行时分秒位的选择,当按一次时代表选中时位,两次选中分位,三次选中秒位,第四次取消选中时钟正常运行 且选中时该位的 ...

  8. STM32 HAL库 CubeMx 按键中断控制LED

    依旧是使用Clion和CubeMx开发 实现功能 以中断的方式,通过按键控制 led灯的亮灭 按一下,灯亮.再按一下,灯灭. 一 新建工程 查看原理图 按键 PA15 LED灯 PA8 打开CubeM ...

  9. 蓝桥杯单片机stc15f2k61s2矩阵按键中断扫描代码

    使用中断函数进行矩阵按键的扫描,在<手把手教你学51单片机>上面的代码修改了一下.感觉这个代码写的比较好. #include<stc15f2k60s2.h>#define uc ...

最新文章

  1. TVM Operator Inventory (TOPI)简介
  2. 自学python入门-自学Python编程基础学习笔记 PDF 完整超清版
  3. 内存分段分页机制理解_深度干货 | 真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗...
  4. 图论(十)最小生成树-Prim算法
  5. nyoj 寻找最大数
  6. eclipse快捷键、智能提示
  7. 型人格 disc测试_(在线测试)表演型人格障碍 在线筛查测试表演性人格障碍...
  8. python使用英汉大字典离线获取单词释义
  9. 几何畸变的类型_第七讲 几何纠正(摄影测量与遥感).pdf
  10. 5月博客恢复更新的通知
  11. Apache Parquet 与Apache ORC简介
  12. WPF 实现控件间拖拽内容
  13. 关了浏览器再开,怎么session还在?
  14. 如何防止135端口入侵
  15. python量化交易通达信_分享一个可以实战的量化交易策略(适用于通达信系统)...
  16. 漫威超级英雄大全(一)
  17. 一文了解通用行为识别ActionRecognition
  18. 洛谷P4824 [USACO15FEB] Censoring S 题解
  19. DDD结合整洁架构落地实践
  20. bpy(python)无法安装 pipconda都无法install linux系统(pip install bpy)

热门文章

  1. stm32F4 AES256加解密
  2. iOS调用系统相册、相机界面语言设置为中文
  3. 彻底关闭win10自动更新的操作步骤
  4. Image Processing and Analysis_15_Image Registration:A survey of medical image registration——1998...
  5. ElasticSearch基本原理和分布式文件系统
  6. SpringCloud(四)- Hystris简介及@EnableCircuitBreaker 和 @HystrixCommand 注解的使用
  7. 启用计算机的快捷键,不会用快捷键启动电脑,你还不进来!
  8. 【论文阅读】Gosig: A Scalable and High-Performance Byzantine Consensus for Consortium Blockchains
  9. 【编译原理】词法分析程序设计(lex)
  10. Python脚本,物联网云服务器端口监控