请问:中断函数不起作用,求助?
时间: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()的效果,就是没进入中断?请问各位这是什么原因?谢谢
#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);不是把程序停在那里不动了么?
谢谢