微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机中断

51单片机中断

时间:10-02 整理:3721RD 点击:
  我想使用按键来触发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;
}
我用实际板子和按键测试,灯不亮,也没有其他现象,我的程序有问题还是什么,怎么改

我用的程序去实验一下,能亮的

额,骗E币吧,,,,,,,,,,,,,,,

中断优先级!我还不确定你要做什么,但是中断这么多的话,要考虑中断优先级

有点看不懂,。

我比较好奇2楼是怎么一回事

真的,不过不闪烁的

上一篇:关于p口
下一篇:16*16的点阵

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

网站地图

Top