单片机C语言编程问题。怎么实现按键切换两个子程序啊。。(时钟和温度)

void main()
{
uint time;
option(6,59,30);
TIMECON = 0x53;
INTVAL = 0x01;
IEIP2 = 0xa4;
EA = 1;
initts(); //初始化18b20

while(1){if(key==1){
time = hour*100 + min;
ShowTest(time);
delay();
}
if(key==0)
//实时的获取温度,并显示
{
gettempts();
display(t);
}
}

应该用一个标志位,如果你这种是普通的按键,即按下时是低电平,松开时是高电平的,大概这样写,在main声明一个变量,作为标志位.
char Flag;
然后按键按下时,直到弹起按键才改变Flag的状态。
if(!Key)
{
while(!Key);
Flag=~Flag;
}
if(Flag)
{
time = hour*100 + min;
ShowTest(time);
delay();
}

else
{
gettempts();
display(t);
}
把这个放在while(1)中,就可以了。
希望我的回答对你有帮助,有什么问题欢迎一起探讨。追问

因为程序这里放不下,可不可以给个邮箱。。一块帮我改改这个程序。。。。。谢谢!

追答

1134336556@qq.com

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-05
时钟和温度 都是在显示子程序中 显示的 显示子程序的 变量 用形参传递
进行切换时,把显示的形参改为 温度和时间 就行了啊
具体变量为温度或时间,就看你的按键判断啊标志决定 不就行了吗
求最佳 。。。本回答被网友采纳
第2个回答  2012-07-05
默认情况下,你可以让程序只显示时间,当温度按键按下不松开,此时让程序显示温度,松开按键后,继续显示时间
默认情况下,你可以让程序只显示时间,当温度按键按下松开后,此时让程序延时显示温度5秒,然后自动退出

求一单片机C语言程序:两个按键控制两个LED KEY1按一下LED1亮 再按一...
while(!key2) led1 = 1; \/\/按下KEY2时LED1灭 led2 = ~led2;\/\/KEY2也是这样 } } } }

...两个键同时按下的时候显示其他数字,用c语言程序实现,
还有一种方式 是 如果只返回2个按键的话。可以这样 常规按键扫描 返回范围在0-15也就是0-F 读取到一个值后把这个值左移4位 再继续读取。当读取到第二个值的时候与上第一个值。就能获取2个按键的值了。

单片机 c语言 一个按键按一下加一 一个按键按一下减一 一个按键an'yi...
if(key2==0){ while(key2==0);if(flag==0)a--;else a++;P0=a;} if(key3==0){while(key1==0);flag=~flag;} } }

用C语言编写程序使MSP430单片机实现数字时钟(显示年月日,时分秒,最好...
void show_time() \/\/液晶显示程序{ TimeToStr(); \/\/时间数据转换液晶字符 DateToStr(); \/\/日期数据转换液晶字符\/\/ ReadTemp(); \/\/开启温度采集程序\/\/ temp_to_str(); \/\/温度数据转换成液晶字符 LCD_PutStr(TempBuffer,25); \/\/显示温度 LCD_PutStr(DateString,0); \/\/显示日期 LCD_PutStr(week_value,15)...

两个按键怎么实现两个Led灯切换,单片机c语言怎么写?
whiIe(1){if(key1==0){deIayms(20);if(key1==0){led1=1;led2=1;} } if(key2=0){deIayms(20);if(key2=0){led1=0;led2=0;} } }

急求一个用51单片机编的可按键调时的数字时钟程序,数码管显示,C语言...
pro_display();\/\/调用显示处理程序lcd_pos(0x47); \/\/使光标位于第一个调整项下flag=0;vkey=0x03;while(flag^0x0a){skey = scan_key();\/\/扫描按键状态if (skey^vkey)\/\/若skey与vkey相同,跳出循环,相异执行循环体{delay(10);\/\/去按键抖动skey = scan_key();\/\/转回扫描按键状态if (skey^vkey)\/\/...

怎么用单片计C语言编出两个按键控制一位数码管,一个按健控制0至9就是...
可以不用中断。 你只要写个段码的数值,然后在数组里加一个变量。比如“ uchar dm[]={0xc0,0xa4,0xf9...}“ 每次按下一个键数组里的变量就加一。 做按键的时候要记住去斗。 归0的按键就更好写了,只要按下数组里的变量等于0就行了。 希望能帮到你, 亲~...

求一单片机c语言程序:两个按键控制两个led,按键按住不放led闪烁,松手...
一个按键时程序如下:while(1){ if(key==0)\/\/按键按下 { delayms(20);\/\/延时消抖 if(key==0)\/\/再次判断按键是否按下 { while(key==0)\/\/按键没有抬起 { led=!led; delayms(200);}\/\/LED闪烁 } } else led=0;}

单片机用C语言编程,有两个按钮开关,控制八个LED灯,要求实现两种不同的...
给你个没有按键的,按键程序自己加上就行了 include <reg51.h> void main(){ unsigned int i = 0; \/\/定义循环变量i,用于软件延时 unsigned char cnt = 0; \/\/定义计数变量cnt,用于移位控制 while (1) \/\/主循环,程序无限循环执行该循环体语句 { P0 = ~(0x01 << cnt); \/\/...

关于单片机温度控制系统C语言程序中的按键设置程序,请求详细的介绍下按...
0 && KeyLock ==0){ } if(BUTTON_reduce == 0 && KeyLock ==0){ } 按二次时执行 else if(KeyFlag == 2){ if(BUTTON_add == 0 && KeyLock ==0){ } if(BUTTON_reduce == 0 && KeyLock ==0){ } 一楼正解,主要按键扩展标志是用来节省资源的,用最少的按键实现最多的功能!

相似回答