【STC15】按键中断
来源:互联网 发布:淘宝网店推广费用 编辑:程序博客网 时间:2024/05/21 22:32
实现功能:
通电时亮一个灯,输出高电平X分钟,低电平X分钟
按一下变成两个灯,高电平X分钟,低电平X分钟
再按一下变成三个灯,高电平X分钟,低电平X分钟
再按一下回到一个灯
核心是通过按键改变flag的值,然后在延时中判断flag值是否和原先的值相同
#include"reg51.h"#define ON 1#define OFF 2//三种状态#define LOW 1#define MID 2#define HIGH 3sfr P3M0 = 0xB2; //0000,0000 端口3模式寄存器0sfr P3M1 = 0xB1; //0000,0000 端口3模式寄存器1sbit ledLan=P3^1;sbit ledHuang=P3^2;sbit ledHong=P3^3;sbit key=P3^5;//sbit shuchu=P3^4;sbit kongzhi=P3^0;volatile int flag=1;//按键改变flag值void delay(int ms){ int ys; for(;ms>0;ms--)for(ys=800;ys>0;ys--);}void ledOn(int status){ switch (status){ case LOW: ledLan=1;ledHuang=0;ledHong=0; break; case MID: ledLan=1;ledHuang=1;ledHong=0; break; case HIGH: ledLan=1;ledHuang=1;ledHong=1; break; }}void ledOff(){ ledLan=0;ledHuang=0;ledHong=0;}void delay2(int time,int status){ int ms; //判断flag和status是否一致,否则直接跳出 for(;(time>0)&& (flag==status);time--){ for(ms=0;(ms<1000) && (flag==status);ms++){ delay(1); } }}void ioON(int time,int status){ kongzhi=1;//开 delay2(time,status);}void ioOFF(int time,int status){ kongzhi=0;//关 delay2(time,status);}//按键中断初始化void InitInterr(){ IT0=1;//跳变沿出发方式(下降沿) EX0=1;//INT0的中断允许位 IT1=1; EX1=1; EA=1;}//设置P3.4,P3.0推挽输出void setTuiWan(){ P3M0|=0X11;//0001 0001 P3M1&=~0X11;//0001 0001}main(){ setTuiWan(); InitInterr(); while(1){ //一个灯亮 for(;flag==LOW;){ ledOn(LOW); ioON(31,LOW); ioOFF(23,LOW); } //两个灯亮 for(;flag==MID;){ ledOn(MID); ioON(31,MID); ioOFF(12,MID); } //三个灯亮 for(;flag==HIGH;){ ledOn(HIGH); ioON(31,HIGH); ioOFF(7,HIGH); } }}void Key() interrupt 0{ delay(10); if(key==0){ delay(100); while(!key); flag++; } if(flag==4)flag=1;}
阅读全文
0 0
- 【STC15】按键中断
- 按键中断
- 按键中断
- 按键 中断
- 按键中断
- 按键中断
- 中断-----按键中断驱动程序
- STC15单片机外部中断仅上升沿触发的方法
- STM32按键扫描/按键中断/外部中断
- CC2530 按键中断--中断向量
- s3c2440中断总结+按键中断
- NIOS按键中断程序
- 2440 按键中断
- 外部中断按键驱动
- LINUX 按键中断
- 按键中断 定时器
- 按键INT0 INT1中断
- fl2440按键中断驱动
- Android 事件的分发机制
- Python3学习(30)--读写文件(结尾附Ini文件读取案例)
- 文章标题
- JSP及其相关技术
- main函数的参数
- 【STC15】按键中断
- HttpClient使用详解
- Jenkins基础入门-3-改变Jenkins家目录
- LeetCode-47-Permutations II 递归+dict
- QGC的MainWindow的menuWidget
- Java之二维码工具包-yellowcong
- hdu 2588 欧拉函数的应用
- eclipse提示js及jquery
- 如何写SysV服务管理脚本