新聞中心

        中斷學習2

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

        #include//頭文件

        本文引用地址:http://www.104case.com/article/201611/322387.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)。



        關鍵詞: 中斷學

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 卢龙县| 宁海县| 辰溪县| 肥城市| 濉溪县| 化德县| 汝南县| 云龙县| 迁安市| 大安市| 靖安县| 高安市| 芦溪县| 安徽省| 托克托县| 康保县| 吉木乃县| 马公市| 青川县| 嘉祥县| 镇赉县| 承德县| 稻城县| 平阴县| 花莲市| 南部县| 宜兴市| 拜城县| 开封市| 龙里县| 巴林右旗| 灌南县| 衡阳县| 安塞县| 嫩江县| 比如县| 宜君县| 塘沽区| 双鸭山市| 应城市| 沅陵县|