|
/*--------------------------------------------------------------------------------
* 項(xiàng)目名稱:
中斷按鍵測(cè)試程序 V1.0.0
* 功能描述:
通過外部中斷0控制LED燈
-------------------------------------------------------------------------------------*/
/************************包含頭文件***************************************************/
#include<STC15W.h>
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
#define uchar unsigned char
#define uint unsigned int
#include <intrins.h>
/************************LED接口配置*************************************************/
sbit k3=P3^3; //定義按鍵K3
sbit led = P3^0;
sbit led2 = P3^1;
void delay_ms(uint n)//11.0592M的晶振
{
uint i,j;
for(i=n;i>0;i--)
{
for(j=114;j>0;j--);
}
}
/************************主函數(shù)******************************************************/
void EX0init(void)
{
IT0 = 1; //指定外部中斷0下降沿觸發(fā),INT0 (P3.2)
EX0 = 1; //使能外部中斷0
IT1 = 1; //指定外部中斷1下降沿觸發(fā),INT1 (P3.3)
EX1 = 1; //使能外部中斷1
EA = 1; //開總中斷
}
/*********************************The End****************************************/
void main()
{
EX0init(); // 設(shè)置外部中斷0
while(1)
{
delay_ms(500); //
led2=0;
delay_ms(500); //
led2=1;
}
}
//-----------------------------------------
//中斷服務(wù)程序
void exint0() interrupt 0 //INT0中斷入口
{
if(!k3) //按鍵識(shí)別//是否按下按鍵
{
//按鍵消抖等待
//for(i = 0; i< 100; i++);//延時(shí)100毫秒
delay_ms(50); //延時(shí)消抖
//消抖后再次判斷按鍵狀態(tài),確實(shí)為按鍵按下
if(!k3)
{
//等待按鍵釋放
while(!k3);
//如果滿足條件,則讓單片機(jī)進(jìn)入掉電模式,等待下次被按鍵中斷喚醒
led=~led;
}
}
}
////中斷服務(wù)程序
//void exint0() //interrupt 0 //INT1中斷入口
//{
//
// if(k3==0)
// {
// delay_ms(50); //延時(shí)消抖
// if(k3==0)
// {
// led=~led;
// }
//}
//}
|
|