03 单片机外部中断

来源:互联网 发布:淘宝金号毛巾旗舰店 编辑:程序博客网 时间:2024/06/05 10:47
中断初始化:
1、     CPU中断开关打开
     EA=1;(IEN0)
2、     自己所在的组开关打开
P0组的中断开关在IEN1的第5位,或者P0IE
P1组的中断开关在IEN2的第4位
P2组的中断开关在IEN2的第1位

3、     自己的那个脚的开关也要打开
4、     P0IEN 8 例如:如果我们要把P0_2这个脚的开关打开那么我们就必须要把P0INE的第2位在程序中设为1
5、     P1IEN 8
6、     P2IEN 8
7、     配置到底是上升沿还是下降沿产生中断
把PICTL对于的上升沿还是下降沿触发设为想要的


#pragma vector=P2INT_VECTOR
__interrupt  void  f1()
{
   
P0IFG=0; //这个寄存器有8位分别是P0这一组里面8个脚的标志,如果某个脚的中断产生
那么它就会变成1,所以我们出中断函数的时候必须要把他清零
P0IF=0;  P1IF  P2IF

}






按键模块:



头文件:

#ifndef SD_KEY_H#define SD_KEY_Hvoid KeysIntCfg();#endif




实现文件:


#include<iocc2530.h>void delay(){   int i,j;   for(i=0;i<1000;i++)     for(j=0;j<30;j++);}void KeysIntCfg(){//Key3  Key4   Key5          P1SEL &=~0X02;     P1DIR &=~0X02;     IEN2|=0x10;//开P1IE组中断     P1IEN|=0x02;//开Key3组内中断     PICTL|=0x02;//设置P1_1为下降沿          P2SEL &=~0X01;     P2DIR &=~0X01;     IEN2|=0x02;     P2IEN|=0x01;     PICTL|=0x08;//设置P2_0为下降沿          P0SEL &=~0X20;     P0DIR &=~0X20;     P0IE=1;//或者写成 IEN1|=0x20     P0IEN|=0x20;     PICTL|=0x01;//设置P0_5为下降沿               EA=1;      //开总中断}#pragma vector=P1INT_VECTOR__interrupt void Key3_ISR() //P1_1{     delay();     if(P1IFG & 0X02)     {         P1DIR |=0X01;         P1_0 ^=1;               }     P1IFG =0;     P1IF=0;}#pragma vector=P2INT_VECTOR__interrupt void Key4_ISR()//P2_0{      delay();     if(P2IFG & 0X01)     {            P0DIR |=0x02;           P0_1 ^=1;     }     P2IFG =0;     P2IF=0;}#pragma vector=P0INT_VECTOR__interrupt void Key5_ISR()//P0_5{    delay();    if(P0IFG & 0X20)    {           P0SEL &=~0x10;           P0DIR |=0X10;           P0_4 ^=1;        }     P0IFG =0;     P0IF=0;}



0 0
原创粉丝点击