微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问:中断函数不起作用,求助?

请问:中断函数不起作用,求助?

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#include"anjian.h"
void delay()                                
{
        uint16 n = 1000;
        while(n--);
}
/*功能函数*/
led_1()
{   。}
led_2()
{。}
led_3()
{。}
        
/*
键盘
*/
void key_board()
{
        if(!KeyIn1)                 
       {
                delay();         
                if(!KeyIn1)  
               {
                      l ed_1();
                     while(!KeyIn1);         
                }
         }
          if(!KeyIn2)
         {
                  delay();
                  if(!KeyIn2);
                 {
                        led_2();
                        while(!KeyIn2);
                 }
        }
        if(!KeyIn3)
        {
               delay();
               if(!KeyIn3);
               {
                     led_3();
                    while(!KeyIn3);
                }
         }
}
void int_init()                    
{
          TMOD |= 0x10;                  
          TMOD &= 0xdf;                  
          TH1 = 0xFC;                           
          TL1 = 0x67;
          TR1 = 1;                           
          EA = 1;                                    
          ET1 = 1;                           
}
/*主函数*/
main()
{
       P0 = 0XFF;               
        KeyOut1 =0;        //按键初始化
        int_init();
       while(1);
}
void interrupt_timer1() interrupt 3                 
{
     TH1 = 0xFC;                                                         
     TL1 = 0x67;
      key_board();                                                                  
}
这个程序的我想要的功能是:按KeyIn1键,显示功能函数led_1()的效果;按KeyIn2键,显示功能函数led_2()的效果;按KeyIn3键,显示功能函数led_3()的效果;但是按KeyIn1键,显示功能函数led_1()的效果,如果按KeyIn2键,显示功能函数led_1()的效果,就是没进入中断?请问各位这是什么原因?谢谢

这个还用什么中断啊,直接查吧,再说了,中断也不能这样搞啊,起什么作用?

已经进入中断了,没进入中断你怎么能进入功能函数1

那为什么按KeyIn2不显示led_2函数的功能呢?这是什么原因?谢谢

看不懂

电子发烧友,顶一个!

感觉有点怪啊,你这个怎么用定时器中断啊,难到不能用外部中断?
那个按KeyIn2键,显示功能函数led_1()还是显示以前的那个效果,是不是你时间还没到啊,进入的是定时器/计数器中断,我也是个新人,不过感觉你那个用外部中断要好得多

我也有同感,你的中断程序是定时器中断,也就是说每隔一段时间进行一次键盘扫描,如果定时时间过长,将会导致按键漏检,应该用外部中断,这样会更好一点

你一个while(1);不是把程序停在那里不动了么?

谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top