栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

一个按键控制LED闪烁与关闭(定时器中断)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一个按键控制LED闪烁与关闭(定时器中断)

作用:用一个开关切换LED闪烁模式以及关闭。

思路:设置一个变量,当按键按下、它会变成1,再按下会变成2,再按下又会回到1。以此用一个if语句 或者switch语句 来设置LED状态。

头文件:

定义引脚以及字符型变量。

#include 
#include 
sbit key1=P3^0;
sbit LED2=P1^1;
unsigned char keynum;
延时函数:

分别设置10ms、100ms的延时函数,10ms用于按键按下去抖,100ms用于LED灯闪烁。

void Delay10ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 18;
	j = 235;
	do
	{
		while (--j);
	} while (--i);
}
void Delay100ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 180;
	j = 73;
	do
	{
		while (--j);
	} while (--i);
}
按键函数:

判断按键按下以后,变量keynum加1.

void key11(){
		if(key1==0)
	        {
	         delay10ms();
		          if(key1==0)
		      { 
		            while(!key1);						
						     keynum++;								      
				      	if(keynum>2)keynum=1;
					}
					}					
}
定时器中断函数:

设置定时器中断,运用定时器的触发来判断按键是否按下

//定时器打开 
void open_d()
{
    TMOD=0x01;   //模式1,16位计数
	  TH0=0x3C;
	  TL0=0xB0;
	  TR0=1; //TR0 定时器0运行控制位,将该位置1时启动定时器0 
	  EA=1; //EA 全局中断允许位,当此位是1时中断可用。
	  ET0=1;//ET0 定时器/计数器0中断允许位 
}
void timer_1() interrupt 1
	{	 
		TH0=0x3c;
		TL0=0xB0;
		key11();
}
主函数:

当按键按下时,变量keynum会在1和2之间转换。当keynum为1 LED闪烁 当keynum为0 LED熄灭

void main(){  
	keynum=0;open_d();
	while(1){ 
			if(keynum==1)
      {   
         while(1){
				 LED2=1;
				 Delay100ms();
				 LED2=0;
				 Delay100ms();
				 if(keynum!=1){LED2=1;break;}
				 }					
         }
				}
}

仿真:

(1条消息) 一个按键控制LED闪烁与关闭-嵌入式文档类资源-CSDN文库https://download.csdn.net/download/zhjysx/71453576


如有错误或简便方法,请指教

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号