/*--------------------------------------------------------------------------------
* 项目名称:
中断按键测试程序 V1.0.0
* 功能描述:
通过外部中断0控制LED灯
-------------------------------------------------------------------------------------*/
/************************包含头文件***************************************************/
#include<STC15W.h>
typedef unsigned int u16; //对数据类型进行声明定义
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--);
}
}
/************************主函数******************************************************/
void EX0init(void)
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断0
IT1 = 1; //指定外部中断1下降沿触发,INT1 (P3.3)
EX1 = 1; //使能外部中断1
EA = 1; //开总中断
}
/*********************************The End****************************************/
void main()
{
EX0init(); // 设置外部中断0
while(1)
{
delay_ms(500); //
led2=0;
delay_ms(500); //
led2=1;
}
}
//-----------------------------------------
//中断服务程序
void exint0() interrupt 0 //INT0中断入口
{
if(!k3) //按键识别//是否按下按键
{
//按键消抖等待
//for(i = 0; i< 100; i++);//延时100毫秒
delay_ms(50); //延时消抖
//消抖后再次判断按键状态,确实为按键按下
if(!k3)
{
//等待按键释放
while(!k3);
//如果满足条件,则让单片机进入掉电模式,等待下次被按键中断唤醒
led=~led;
}
}
}
////中断服务程序
//void exint0() //interrupt 0 //INT1中断入口
//{
//
// if(k3==0)
// {
// delay_ms(50); //延时消抖
// if(k3==0)
// {
// led=~led;
// }
//}
//}
|