一个按键控制LED闪烁与关闭(定时器中断) 您所在的位置:网站首页 plc用定时器实现灯光闪烁程序模式是什么 一个按键控制LED闪烁与关闭(定时器中断)

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

2024-06-03 15:38| 来源: 网络整理| 查看: 265

 来源:

单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html

作用:用一个开关切换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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有