📄 key.c
字号:
/*
*********************************************************
*Header:
*File Name:
*Author: 陈培炜,杨帆
*Data;2007
*Function:
********************************************************
*/
#include <REG52.h>
#include "Lcd.h"
#include "key.h"
unsigned char ut = 50;
unsigned char dt = 30;
sbit keyu = P3^4;
sbit keyd = P3^3;
sbit keyc = P3^2;
/*
*********************************************************
*Header:
*File Name:
*Author: 陈培炜,杨帆
*Data;2007
*Function: 按键中断初始化
********************************************************
*/
void Ext0Initial(void)
{
IT0 = 1; // 设外部中断0为下降沿触发 //
// IE0 = 1; // 设置最高中断级别,其余自然级别排序 //
EX0 = 1; // 开中断0 //
}
/*
/*********************************************************
*/
void Ext0Interrupt(void) interrupt 0 //按键中断程序
{
unsigned char flag = 0;
EX0 = 0; // 一般进中断就关中断,除非你需要被中断 //
// 中间功能函数//
if(keyc == 0)
DelayUS(10000); //去抖动
if( keyc == 0 )
{
cls();
while(1)
{
if(flag == 2)
{
flag = 0;
break;
}
else
{
if( keyu == 0 ) //判断+按键是否按下
DelayUS(10000);
if( keyu == 0 )
{
if(flag == 0)
{
dt++;
if(dt == 100)
{
dt = 30;
}
}
else
{
ut++;
if(ut == 100)
{
ut = 50;
}
}
}
if( keyd == 0 ) //判断-按键是否按下
DelayUS(10000);
if( keyd == 0 )
{
if(flag == 0)
{
dt--;
if(dt == 0)
{
dt = 30;
}
}
else
{
ut--;
if(ut == 0)
{
ut = 50;
}
}
}
if( keyc == 0 ) //判断"位选"按键是否按下
DelayUS(10000);
if( keyc == 0 )
{
flag++;
}
}
disp2(dt,ut,flag); //显示设定的温度上下限值
}
cls();
}
EX0 = 1; // 一般出中断就开中断 //
}
/**********************************************************
*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -