/*********************************************************************************
* 【作 者】: 清翔电子:向量
* 【版 本】: V1.0
* 【网 站】: http://www.qxmcu.com/
* 【淘宝店铺】: http://qxmcu.taobao.com/
* 【实验平台】: 清翔 QX-MCS51 单片机开发板
* 【外部晶振】: 11.0592mhz
* 【主控芯片】: STC89C52
* 【编译环境】: Keil μVisio4
* 【程序功能】: 外部中断0低电平触发方式,每按下一次S2按键就会进入一次中断,
LED灯会发生状态变化。
* 【使用说明】: 用1根杜邦线把P32和P37相接,每按下一次S2按键就会进入一次中断。
**********************************************************************************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key_s2 = P3^0;//独立按键S2
sbit flag = P3^7; //外部中断信号产生脚
/*====================================
函数 : delay(uint z)
参数 :z 延时毫秒设定,取值范围0-65535
返回值 :无
描述 :12T/Fosc11.0592M毫秒级延时
====================================*/
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
//外部中断0初始化
void int0Init()
{
EA = 1; //开总中断
EX0 = 1;//开外部中断0
IT0 = 0;//外部中断0低电平触发
}
void main()//main函数自身会循环
{
int0Init();//外部中断0初始化
while(1)
{
if(key_s2 == 0)//判断S2是否被按下
{
delay(20);//按键消抖
if(key_s2 == 0)
{
flag = 0;
flag = 0;//产生低电平,CPU会采样2次P3.2的状态,两次都为低才触发
flag = 1;//结束低电平
while(!key_s2);//松手检测
}
}
}
}
//外部中断1中断服务程序
void int0() interrupt 0
{
P1 = ~P1;//P1的状态按位取反
}
15、外部中断.rar
版权申诉
193 浏览量
2023-07-19
22:08:00
上传
评论
收藏 661KB RAR 举报
普通网友
- 粉丝: 1w+
- 资源: 1063