STC12C5A60S2外部中断P3^2

发布时间:2019-09-13 09:28:57编辑:auto阅读(1428)

    中断函数略讲:

    interrupt 0  指明是外部中断0;

    interrupt 1  指明是定时器中断0; 

    interrupt 2  指明是外部中断1;

    interrupt 3  指明是定时器中断1;

    interrupt 4  指明是串行口中断;


    using 0 是第0组寄存器;

    using 1 是第1组寄存器;

    using 2 是第2组寄存器;

    using 3 是第3组寄存器;


    using 0时设置 RS1=0,RS0 =0,用第0组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(00H)....R7(07H)

    using 1时设置 RS1=0,RS0 =1,用第1组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(08H)....R7(0FH)

    using 2时设置 RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H)

    using 3时设置 RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)




    外部中断P3^2,P3^3 的应用

    按键一端接GND,一端接P3^2 按下,灯亮起

     按键一端接GND,一端接P3^3 按下,灯熄灭 



    /*
    工程创建MCU选取,Atmel 89C55
    单片机:STC12C5A60S2
    晶振:12M
    功能:外部中断P3^2,P3^3 的应用
    连接说明:LED正极接VCC,负极接到 MCU的39脚P0^0
    */
    
    #include <REG51.h> //  可以使用通用的头文件
    //#include <STC12C5A60S2.H>  也可以使用STC12C5A60S2的头文件,
    sbit LED=P0^0; // 39脚
    
    //外部中断初始化程序
    void INT_init(void){
     	EA=1; //打开总中断【定时器,ADC,串口,比较,计数,外部】等中断类型
    	EX0=1;//允许外部中断0 	P3^2
    	IT0=1;//1下降沿触发,0低电平触发
    	EX1=1;//允许外部中断1 	P3^3
    	IT1=1;//1下降沿触发,0低电平触发
    	// 下降沿触发要比低电平触发要快
    }
    
    //中断程序,可以放在主程序前后都可以
    void INT_1(void) interrupt 2 using 2{
    	LED=1;//关灯
    }
    void INT_0(void) interrupt 0 using 2{
    	LED=0; //开灯
    }
    
    void main (void) {
    	INT_init();//外部中断初始化程序
      while (1) {
       }
    }
    // 按键一端接GND,一端接P3^2 按下,灯亮起 
    // 按键一端接GND,一端接P3^3 按下,灯熄灭


关键字