单片机中断例程

    技术2022-05-20  30

    //---------------------------------------------------#include <reg52.h>//---------------------------------------------------//重定义I/0引脚名称sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;

    sbit P13=P1^3;//---------------------------------------------------//全局变量及位标志定义bit FINT0;bit FINT1;bit FT0;bit FT1;bit FT2;

    unsigned char T0_10ms;unsigned char T0_50ms;unsigned char T0_100ms;//---------------------------------------------------//固定函数声明void int_0();       //外部中断0void int_1();       //外部中断1void timer_0();     //定时器中断1void timer_1();     //定时器中断2void serial_1();    //串行中断1void serial_2();    //串行中断2//---------------------------------------------------//用户函数声明void initial();     //初始化

    //---------------------------------------------------void main(){ initial();

     while(1){

            P13=0;          //为了使按'取消'、'确定'键能够产生INT0及INT1中断        //led4=0;       //上一句等价于此句         if(FINT0){      //中断0来到要做什么事情   FINT0=0;   led1=0;     //INT0中断时点亮   led2=0;        led3=0;   led3=0;  //可以在此设一个断点  }  if(FINT1){      //中断1来到要做什么事情   FINT1=0;       led1=1;     //INT1中断时熄灭   led2=1;   led3=1;  }        if(FT0){            FT0=0;             if(++T0_10ms>30){                T0_10ms=0;                //定时多少做什么事,未初始化里定时器尚未设置            }        } }}//-------------------------------------------------------------------void initial(){ EA=1;               // CPU所有中断开(IE最高位MSB)

     EX0=1;              // INT0中断开 IT0=0;              // INT0低电平触发(为1则为下降沿触发)

     EX1=1;              // INT1中断开 IT1=0;              // INT1低电平触发(为1则为下降沿触发)

     return;}//-------------------------------------------------------------------//INT0中断  由P3.2引脚产生void int_0() interrupt 0 using 0{    FINT0=1;}//-------------------------------------------------------------------//INT1中断  由P3.3引脚产生void int_1() interrupt 2 using 1{ FINT1=1;}//-------------------------------------------------------------------//定时器0中断void timer_0() interrupt 1 using 2{ FT0=1;}//-------------------------------------------------------------------//定时器1中断void timer_1() interrupt 3 using 3{ FT1=1;}//-------------------------------------------------------------------//串行中断1void serial_1() interrupt 4{

    }//-------------------------------------------------------------------//定时器2中断void timer_2() interrupt 5{ FT2=1;}//-------------------------------------------------------------------

     


    最新回复(0)