51单片机IO口触发中断 闪烁LED

51单片机外部中断控制LED闪烁
本文介绍了一种使用51单片机实现外部中断控制LED闪烁的方法。通过将P0.0口与P3.2口连接,利用外部中断0的功能,当按键按下时,LED会闪烁三次。代码中包含了外部中断初始化、延时函数、LED闪烁函数等关键部分。
//使用时将单片机 poo口与p32口短接,poo用于出发外部中断

#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int
//use p00->p32
sbit con=P0^0;
sbit led1=P1^0;
sbit k1=P3^2;
uchar ws=0;
uchar num;
uint flag=1;
uchar temp=1;
uchar k=1;
void delayms(unsigned int xms) 	;

//======delay===
void delayms(unsigned int xms) //ms级延时子程序
{ 
    unsigned int x,y; 
    for(x=xms;x>0;x--)
    for(y=130;y>0;y--);
}
//============	 key ====================

//===============blink
void blinkk(uchar xx)
{
for (;xx>0;xx--)   {
led1=~led1;
 delayms(100) ;
 led1=~led1;
 delayms(100) ;
}
}

//===============out0
  void outside_init()	    //外部中断初始化
{
   EA=1;    //开总中断
   EX0=1;  //打开外部中断0
   IT0=1; //设置为下降沿触发
}

//================	main============
void main(){
	 P1=0x00;
	 outside_init()	;
	 while(1){
     delayms(900) ;
	 con=0;
	 delayms(100) ;
	 con=1;
	 }
 }
 //=================================
void IO() interrupt 0 //使用了外部中断0的
{
    if(k1==0)        //有键按下吗?(k1=0 ?)
      { 
	      delayms(10);    //延时消抖
          if(k1==0)       //确实是有键按下,则:
             {
				blinkk(3); 
               
			 } 
      } 
				
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值