aliwanxi 发表于 2012-4-14 09:12:51

请各位帮忙我看一下,这句中断错在哪里,谢谢

请各位帮忙我看一下,这句中断错在哪里,谢谢
我现在是测315无线的,只要按键按一下,就会收到中断,按键里有0,1灯一定会亮或灭,可是我写得灯会一直亮,错在哪里,请各位帮忙一下,谢谢。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char;

uint a,b;
sbit wuxian_shou=P3^2;
sbit led=P2^0;
uchar show;
void delay_us()
{
for(b=0;b<10;b++)
{for(a=0;a<50000;a++);}
}
void time_init()
{
       TMOD=0x09;
       TH0=0x63;//0.02秒
       TL0=0xc0;
       //TR0=1;
}

void inter_ex0() interrupt 0
{
while(wuxian_shou==1)
{show=1;}
delay_us();
while(wuxian_shou==0)
{show=0;
delay_us();

}
}
void main()
{
time_init();
while(1)
{
led=show;
}

}

ourdev850725 发表于 2012-4-14 09:44:02

void inter_ex0() interrupt 0
{
led=wuxian_shou;
   }
这样不就行了吗?用那么复杂吗?

davidd 发表于 2012-4-14 11:28:06

lz,你的中断程序处理的逻辑有问题,从中断退出来前,总是执行show=0;,所以在主程序中的 led=show; 就让灯一直亮。
还有贴出的程序中没有打开中断的语句,怎么会进入中断呢

aliwanxi 发表于 2012-9-9 09:53:18

谢谢你们两位的回答.
页: [1]
查看完整版本: 请各位帮忙我看一下,这句中断错在哪里,谢谢