新聞中心

        中斷學習

        作者: 時間:2016-11-27 來源:網絡 收藏
        #include

        #include//頭文件

        本文引用地址:http://www.104case.com/article/201611/322386.htm

        #define GPIO_LED P2

        //外部中斷的IO

        sbit K3=P3^2;

        sbit K4=P3^3;//定義k3,k4的io口值為p3.2p3.3

        void IntConfiguration();

        void Delay(unsigned int n);

        unsigned char KeyValue=0;

        void main(void)

        {

        GPIO_LED=0X01;// led=0000 - 0001

        IntConfiguration();

        while(1)

        {

        if(KeyValue)//keyvalue的值

        GPIO_LED=_crol_(GPIO_LED,1);

        else

        GPIO_LED=_cror_(GPIO_LED,1);

        Delay(2000);

        }

        }

        void IntConfiguration()

        {

        //設置INT0

        IT0=1;//跳變沿出發方式(下降沿)

        EX0=1;//打開INT0的中斷允許。

        //設置INT1

        IT1=1;

        EX1=1;


        EA=1;//打開總中斷

        }

        void Delay(unsigned int n)//延時50us誤差 0us

        {

        unsigned char a,b;

        for(;n>0;n--)

        {

        for(b=1;b>0;b--)

        for(a=22;a>0;a--);

        }

        }

        void Int0() interrupt 0 //外部中斷0的中斷函數

        {

        Delay(1);

        if(K3==0) //按下P3^2鍵,觸發外部中斷0

        KeyValue=1;//中斷處理程序0就會將KeyValue賦1

        }

        void Int1() interrupt 2 //外部中斷1的中斷函數

        {

        Delay(1);

        if(K4==0)//當按下P3^3,就會觸發外部中斷1

        KeyValue=0; //中斷斷處理程序0就會將KeyValue賦0

        }

        //兩個外部中斷硬件上就是與P3^3和P3^2連接的
        //,比如說按下P3^2鍵,觸發外部中斷0,中斷處理程序0就會將KeyValue賦1
        //,這時主循環就會執行GPIO_LED=_crol_(GPIO_LED,1

        //);同理,當按下P3^3,就會觸發外部中斷1
        //,中斷處理程序0就會將KeyValue賦0;這時主循環就會執行GPIO_LED=_cror_(GPIO_LED,1)。



        關鍵詞: 中斷學

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新丰县| 开原市| 靖宇县| 邛崃市| 高雄县| 焦作市| 兰西县| 舞阳县| 区。| 陆丰市| 五大连池市| 霍州市| 江山市| 鲁山县| 陆河县| 宁阳县| 通化县| 肥乡县| 辽宁省| 牟定县| 兴业县| 来宾市| 陈巴尔虎旗| 兰坪| 万宁市| 库伦旗| 黄石市| 上饶市| 石家庄市| 大足县| 阳泉市| 亚东县| 饶阳县| 开平市| 和平区| 常州市| 阳谷县| 泾阳县| 蓝田县| 临洮县| 泽库县|