找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机中断嵌套问题,求大神帮帮忙。

[复制链接]
跳转到指定楼层
楼主
ID:409524 发表于 2018-10-14 17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想做一个定时器和按键的中断程序,意思就是启动这个程序,每达到一个设定时间时led1状态翻转。在定时器计时过程中,按下按键K次,则led2状态翻转。但是我写出以下程序以后发现只有定时器中断工作有效。而按键中断工作无效。如何设置IP寄存器,使定时器工作时,按键中断仍然能工作???
求大神们回复。
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;

sbit M1=P2^0;
sbit M2=P2^1;
sbit k3=P3^2;

void delay(u16 i)
{
        while(i--);        
}

void HHH()
{

        IT1=1;
        EX1=1;
        EA=1;
}

  void SSS()
{
        TMOD|=0X01;
        TH0=0XFC;        //给定时器赋初值,定时1ms
        TL0=0X18;        
        ET0=1;
        EA=1;
        TR0=1;
}



void main()
{        
        SSS();
        HHH();  
        while(1);               
}

void Int1()        interrupt 0        
{
                  static u16 i;
        delay(1000);         
        if(k3==0)
        {
                i++;
        
        if(i==3)
        {
        M1=~M1;
        i=1;
        }
        }
}

void Timer0() interrupt 1
{
                 static u16 i;
                         TH0=0XFC;        
                        TL0=0X18;
                        i++;
                           if(i==700)
           {
           i=0;
           M2=~M2;
           }
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2018-10-14 23:40 | 只看该作者
中断程序里面不要有延时的,一般来说,一个中断是不会用你太多时间的.算是一千条指令也就是1mS的时间,这是不会错过的按键的扫描时间的,但你要是在中断中加入延时,那一个中断用上几mS甚至是几S的时间,按键是肯定扫描不到的了
总而言之,中断程序(函数)要小,时间要智短.

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:74187 发表于 2018-10-15 06:24 | 只看该作者
http://www.51hei.com/bbs/dpj-137513-1.html   可以参考一下这个程序  案件按下一次蜂鸣器响一次,案件控制小灯的反转
回复

使用道具 举报

地板
ID:319023 发表于 2018-10-15 15:21 | 只看该作者
中断函数设置问题,延时不能在执行中断函数的时候进行。
回复

使用道具 举报

5#
ID:410059 发表于 2018-10-15 17:04 | 只看该作者
同问,中断嵌套该怎么用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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