赞
踩
void Int0Init()
{
//设置 INT0
IT0=1;//边沿触发方式(下降沿)
EX0=1;//打开 INT0 的中断允许。
EA=1;//打开总中断
}
/*当触发中断后即会进入中断服务函数,外部中断 0 中断服务函数如下:*6/
void Int0() interrupt 0
//外部中断 0 的中断函数
{
//执行所需的功能
}
左图为独立按键原理图,右图为LED原理图
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k3=P3^2; //定义按键 K3 sbit led=P2^0; //定义 P20 口是 led /* * 函 数 名 : delay * 函数功能 : 延时函数,i=1 时,大约延时 10us */ void delay(u16 i) { while(i--); } /* * 函 数 名 : Int0Init() * 函数功能 : 设置外部中断 0 * 输 入 : 无 * 输 出 : 无 */ void Int0Init() { //设置 INT0 IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开 INT0 的中断允许。 EA=1;//打开总中断 } /* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 */ void main() { Int0Init(); // 设置外部中断 0 while(1);//等待下降沿的产生,若k3按键按下,下降沿产生,立即进入中断服务函数 } /* * 函 数 名 : Int0() interrupt 0 * 函数功能 : 外部中断 0 的中断函数 * 输 入 : 无 * 输 出 : 无 */ void Int0() interrupt 0 //外部中断 0 的中断函数 { delay(1000); //延时消抖 if(k3==0) //判断按键是否按下 { led=~led; //控制灯亮或灯灭 } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。