找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4216|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机的4个按键(P34,P35,P36,P37)能否用一个中断判断控制

[复制链接]
跳转到指定楼层
楼主
6黑币
51单片机的4个按键(P34,P35,P36,P37)能否用一个中断判断控制,如果能控制怎样能实现这个控制

最佳答案

查看完整内容

按键的话不一定需要中断控制,也没有这么多中断去支持按键,只需要定时的轮询就可以检测按键
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:687171 发表于 2020-1-18 20:07 | 只看该作者
按键的话不一定需要中断控制,也没有这么多中断去支持按键,只需要定时的轮询就可以检测按键
回复

使用道具 举报

板凳
ID:235200 发表于 2020-1-18 21:21 | 只看该作者
把这4根线连接到74LS20的四个输入端,输出端连接到反相器的输入端,反相器输出端再连接到P32
回复

使用道具 举报

地板
ID:437615 发表于 2020-1-18 22:27 | 只看该作者
如果你是想问是否能在外部中断服务函数来判断的话是可以的,开外中断0,然后把p32用二极管分别接到其它的引脚上,然后在中断里判断
回复

使用道具 举报

5#
ID:47286 发表于 2020-1-18 23:25 | 只看该作者
可以 但不好

中断本身是无法区分按键 这点还不如AD按键 但可以用4066这种模拟开关 高速在4个开关中切换 但这么做从软硬件方面都更麻烦 所以不好
回复

使用道具 举报

6#
ID:158375 发表于 2020-1-19 08:26 | 只看该作者
能用一个中断判断按键控制,这要看你用那个中断,怎么用这个中断;别说4个按键,16个按键一样可以用.
回复

使用道具 举报

7#
ID:155507 发表于 2020-1-19 14:20 | 只看该作者
类似参考





  1. #include <reg51.h>
  2. #include <stdio.h>

  3. sbit key1=P3^2;//外部中断0
  4. sbit key2=P3^4;
  5. sbit key3=P3^5;
  6. sbit key4=P3^6;
  7. sbit key5=P3^7;//外部中断1的4个按键

  8. void T0_Init();
  9. void delayms(unsigned  char);


  10. void main()
  11. {
  12.         T0_Init();
  13.         while(1)
  14.         {
  15.                 P1=0Xff;
  16.         }
  17. }

  18. void T0_Init()
  19. {
  20.         EA=1;//开启总中断
  21.         EX0=1;//开启外部中断0
  22.         EX1=1;//开启外部中断1
  23.         IT0=0;
  24.         IT1=0;//电平触发
  25. }

  26. void T0_T()  interrupt 0
  27. {
  28.         P1=0xf0;//全亮
  29. }

  30. void T1_T()  interrupt 2
  31. {
  32.         if(key2==0)//按键2按下
  33.         {
  34.                 P1=0xfe;//D1亮
  35.         }
  36.         while(!key2);//按键松手  松手则不亮
  37.        
  38.         if(key3==0)//按键3按下
  39.         {
  40.                 P1=0xfd;//D2亮
  41.         }
  42.         while(!key3);
  43.        
  44.         if(key4==0)//按键4按下
  45.         {
  46.                 P1=0xfb;//D3亮
  47.         }
  48.         while(!key4);
  49.        
  50.         if(key5==0)//按键5按下
  51.         {
  52.                 P1=0xf7;//D4亮
  53.         }
  54.         while(!key5);
  55.        
  56. }

复制代码



回复

使用道具 举报

8#
ID:404239 发表于 2020-1-19 22:31 | 只看该作者
要用一路中断和N个IO组成,如电路,中断检测到之后,直接读其他端口的值就可以知道是哪一路端口的按键按下了。

捕获.PNG (42.13 KB, 下载次数: 52)

捕获.PNG
回复

使用道具 举报

9#
ID:93224 发表于 2020-1-20 11:19 | 只看该作者
可以但是你的接线有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表