51单片机中断

2019-07-15 23:12发布

  我想使用按键来触发2个外部中断,然后用定时器来计算按键按的时间,定时50ms然后每中断一次灯亮一次,来提示时间通过人眼给反应。
   程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;
sbit k2=P3^3;
//int num1;
//int num2;
//sbit k3=P1^1;
//sbit k4=P1^2;
sbit light=P1^0;
int num;
void delayms(unsigned int xms)//延时ms
{
    unsigned int i,j;
   for(i=xms;i>0;i--)
         for(j=110;j>0;j--);   
}



void main()
{  
EA=1;
TMOD=0X01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
TCON=0x01;
TCON=0x04;
EX0=1;IT0=1;
EX1=1;IT1=1;

   while(1)
    {

        if (k1==0)
                {
                  delayms(50);
                        if (k1==0)
                                {
                                        light=0;
                                        //k1=0;
                               
                                    EX0=0;
                                        IT0=0;
                                               
                                 }
                }


        if (k2==0)
                {
                  delayms(50);
                        if (k2==0)
                                {
                                        light=0;
                                        //k2=0;  
                                        EX1=0;
                                        IT1=0;
                                               
                                }
                }
               


    }
}



void waibuzhongduan0() interrupt 0
{
    TCON=0x01;
    EX0=1;
        IT0=1;
       

}
void waibuzhongduan1() interrupt 2
{
    TCON=0x04;
    EX1=1;
        IT1=1;
       
}



void dingshiqi0() interrupt 1
{
    TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        light=1;

}


void dingshiqi1() interrupt 3
{
    TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;

        light=1;
}
我用实际板子和按键测试,灯不亮,也没有其他现象,我的程序有问题还是什么,怎么改

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。