×
单片机 > 单片机程序设计 > 详情

单片机中断的应用

发布时间:2025-03-24 发布时间:
|

51单片机:

       P3.2 引脚为INT0 中断

       P3.3引脚为INT1 中断

按钮 P3.2    P3.3

按钮低电平触发:

    while(PB0==0);

    delay();


#include         

#define    SEG    P0             //    定义七节显示器接至Port 0

sbit    LED = P2^0;      // 定义LED灯接至P2.0

sbit    com = P1^0 ;     // 数码管 com 口

sbit    OC  = P1^1;      // 定义573锁存器使能口,我是用的573驱动7段数码管

 

void delay10ms(int x);    //    声明延迟函数 10ms * x; 


sbit    PB0=P3^2;      //按钮0

sbit    PB1=P3^3;      //按钮1

 

unsigned char code TAB[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67 };    // 共阴极

 

main()                     

{  

    OC = 0;          //锁存置0 ,点亮数码管

    com = 0;         //点亮SEG    

    EA =1;             //总中断

     EX0 = 1;         //外部中断 INT0

     EX1 = 1;         //外部中断 INT1     

    TR0 = 1;         //    运行INT 0中断

      TR1 = 1;         // 运行INT1 中断

    //TCON = 0x05;     //    设置信号触发方式为负边沿触发

    while(1) 

    {    

        int i; 

        for(i=0;i<10;i++)    //    显示0-9(上数)

        {    SEG=TAB[i];     

            delay10ms(40);    //    延迟 0.4s



        }

    }                 

}                     

void my_int0(void) interrupt 0   // INT 0

{     int i;

     while(PB0==0);

     delay10ms(25);     

       for (i=9;i>=0;i--)        //    for循环显示9-0(下数)

       {     

        SEG=TAB[i];                //    显示数字至七节显示器 

        delay10ms(40);            //    延迟 0.4s

       }    

                  

}                     

void my_int1(void) interrupt 2          //INT 1

{        int i;

        while(PB1==0);

        delay10ms(25);

         for(i=0;i<10;i++)

         {

         LED = 0;     

         delay10ms(25);

         LED = 1;

         delay10ms(25);

        }

}


/* 延迟函数,延迟约x*1ms */

void delay10ms(int x)            //    延迟函数开始 

{    

        int i,j;           

          for (i=0;i

        for (j=0;j<1200;j++);    //    计数1200次,延迟10ms   1200*8us

}     



 


关键字:单片机  中断 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32 FSMC的函数解释