|
程序单个都对,但是在主程序中组合在一起,按键程序就失效了……请问各位大神……程序如何修改?
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>
#include"adc0809.h"
#include"lcd1602.h"
#include"delay.h"
/* key0用于选择显示的内容,当前温度或者报警温度 */
/* 同时也用于选择对高温操作还是对低温操作 */
/* key0==1时,key1对高温加,key2对高温减 */
/* key0==2时,key1对低温加,key2对低温减 */
sbit key0=P3^3;
sbit key1=P3^4;
sbit key2=P3^5;
sbit led=P2^0;
unsigned char flag=0,i=0;
void keyscan()
{
key0=1;
key1=1;
key2=1;
if(!key0)
{
DelayMs(10);
if(!key0)
{
while(!key0);
if (i<2)
{
flag++;
i++;
flag=flag%3; //flag= 0~
}
else
{
adc_display();
flag=0;
i=0;
}
}
}
if(flag==1)
{
if(!key1)
{
DelayMs(10);
if(!key1)
{
while(!key1);
{ LCD_Write_String(0,0,"we"); }
}
}
}
if(flag==1)
{
if(!key2)
{
DelayMs(10);
if(!key2)
{
while(!key2);
{ LCD_Write_String(0,0,"er"); }
}
}
}
if(flag==2)
{
if(!key1)
{
DelayMs(10);
if(!key1)
{
while(!key1);
{ LCD_Write_String(1,2,"qw"); }
}
}
}
if(flag==2)
{
if(!key2)
{
DelayMs(10);
if(!key2)
{
while(!key2);
{ LCD_Write_String(1,2,"rt"); }
}
}
}
}
void main()
{
LCD_Init();
LCD_Clear();
while(1)
{
adc_display();
keyscan();
DelayMs(10);
}
} |
|