找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4914|回复: 5
收起左侧

52单片机怎么把按键分别控制中断1和0

[复制链接]
ID:145536 发表于 2016-11-3 23:02 | 显示全部楼层 |阅读模式
#include <reg52.h>
unsigned char aa,MENU=0;
sbit K1=P3^2;
sbit K2=P3^3;
void delay(unsigned int xms)
{
int m,n;
for(m=xms;m>0;m--)
for(n=112;n>0;n--);
}
void wai0() interrupt 0       //INT0中断入口
{
    {
    P1=0x7f;    //初始化 0111 1111
   for(j=0;j<7;j++)  //做一个循环
    {  delay();  //延时
       P1=P1>>1;  //右移
       P1=P1|0x08; }  //或上1000 0000
     delay();  //延时
  }
          MENU=1; //
}

//中断1服务程序
void wai1() interrupt 2       //INT1中断入口
{
     {
  P1=0xfe;       //初始化  1111  1110
  for(j=0;j<7;j++)    //做一个循环
{  delay();         //  延时
   P1=P1<<1;        //  左移
   P1=P1|0x01;}      //  或上 0000 0001
   delay();      //延时
  }
         MENU=2; //
}
main()
{       EA = 1;        //中断总开关
        EX1 = 1; //允许外部中断1中断   
        EX0 = 1; //禁止外部中断0中断
        IT1 = 1; //1:下沿触发  0:低电平触发
        IT0 = 1; //下沿触发  0:低电平触发

         while(1)
}怎么把按键分别控制中断1和0

回复

使用道具 举报

ID:111634 发表于 2016-11-4 07:49 | 显示全部楼层
把按键一端分别接P3.2、P3.3,另一端接地就可,按键按下时,产生一个下跳变,触发中断1和0
回复

使用道具 举报

ID:7485 发表于 2016-11-4 09:34 | 显示全部楼层
还不如使用按键控制方式。
中断方式无法防止抖动或误触发。
回复

使用道具 举报

ID:146124 发表于 2016-11-4 17:03 | 显示全部楼层
代码写好,然后直接在电路里面对应中断的端口各自连接一个按键就可以了
回复

使用道具 举报

ID:144022 发表于 2016-11-4 22:59 | 显示全部楼层
可以直接用if语句啊,按键按下就则自动增减,定时器是设置中断的,不用按键控制
回复

使用道具 举报

ID:146588 发表于 2016-11-7 13:22 | 显示全部楼层
好像可以在中断服务程序里面写入一个判断语句IF,判断是否有按键真正按下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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