单片机独立按键长按c语言,为什么这个单片机程序独立按键长按才起作用

while (1)

{

if (flag1s)  //每秒更新一次温度

{

LcdShowStr(0, 1, "WD:");        //显示到液晶屏上

LcdShowStr(6, 1, "SD:");        //显示到液晶屏上

LcdShowStr(0, 0, "F:");

DHT_Start();

tmp1=DHT_ByteRead(&DHT);

if(tmp1==1)

{

str[0] = (DHT[0]/10)%10 + '0';  //十位转为ASCII码

str[1] = (DHT[0]%10) + '0';  //个位转为ASCII

str[2] = '\0';

LcdShowStr(9, 1, str);

str[0] = (DHT[2]/10)%10 + '0';  //十位转为ASCII码

str[1] = (DHT[2]%10) + '0';  //个位转为ASCII

str[2] = '\0';

LcdShowStr(3,1, str);

WD= DHT[2];

SD=DHT[0];

temp2=adc0832(voc);

if(temp2==1)

{str[0] =  voc/1000 + '0';

str[1] = (voc%1000)/100 + '0';

str[2] = ((voc%1000)%100)/10 + '0';

str[3] = ('.')  ;

str[4] = ((voc%1000)%100)%10 + '0';

str[5] = '\0';

LcdShowStr(2, 0, str);

}

}

key();

}

}

}

void key (void)

{                 unsigned char str[12];

if(Key1==0)

{

set++;

delay();

if(set==1)

LcdShowStr(7, 0, "STH:");

if(set==2)

LcdShowStr(7, 0, "STL:");

if(set==3)

LcdShowStr(7, 0, "SRH:");

if(set==4)

LcdShowStr(7, 0, "SRL:");

if(set==5)

LcdShowStr(7, 0, "VOC:");

if(set>=6)

set=0;

while(!Key1);

}

if(Key2==0)

{

if(set==1)

{

STH++;

str[0] = (STH/10)%10 + '0';

str[1] = (STH%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==2)

{

STL++;

str[0] = (STL/10)%10 + '0';

str[1] = (STL%10) + '0';

str[2] = '\0';

LcdShowStr(11,0, str);

}

if(set==3)

{

SRH++;

str[0] = (SRH/10)%10 + '0';

str[1] = (SRH%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==4)

{

SRL++;

str[0] = (SRL/10)%10 + '0';

str[1] = (SRL%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==5)

{

VOC++;

str[0] = (VOC/10)%10 + '0';

str[1] = (VOC%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

delay();

}

if(Key3==0)

{

if(set==1)

{

STH--;

str[0] = (STH/10)%10 + '0';

str[1] = (STH%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==2)

{

STL--;

str[0] = (STL/10)%10 + '0';

str[1] = (STL%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==3)

{

SRH--;

str[0] = (SRH/10)%10 + '0';

str[1] = (SRH%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==4)

{

SRL--;

str[0] = (SRL/10)%10 + '0';

str[1] = (SRL%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

if(set==5)

{

VOC--;

str[0] = (VOC/10)%10 + '0';

str[1] = (VOC%10) + '0';

str[2] = '\0';

LcdShowStr(11, 0, str);

}

delay();

}

if(Key4==0)

{

delay();

set=0;

InitLcd1602();

//初始化液晶

}

}

void ConfigTimer0(unsigned int ms)

{

unsigned long tmp;  //临时变量

tmp = 11059200 / 12;      //定时器计数频率

tmp = (tmp * ms) / 1000;  //计算所需的计数值

tmp = 65536 - tmp;        //计算定时器重载值

tmp = tmp + 12;           //补偿中断响应延时造成的误差

T0RH = (unsigned char)(tmp>>8);  //定时器重载值拆分为高低字节

T0RL = (unsigned char)tmp;

TMOD &= 0xF0;   //清零T0的控制位

TMOD |= 0x01;   //配置T0为模式1

TH0 = T0RH;     //加载T0重载值

TL0 = T0RL;

ET0 = 1;        //使能T0中断

TR0 = 1;        //启动T0

}

/* T0中断服务函数,完成1秒定时 */

void InterruptTimer0() interrupt 1

{

static unsigned char tmr1s = 0;

TH0 = T0RH;  //重新加载重载值

TL0 = T0RL;

tmr1s++;

if (tmr1s >= 100)  //定时1s

{

tmr1s = 0;

flag1s = 1;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值