微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 一个按键执行两个程序 第二个程序执行不了啊啊啊啊

一个按键执行两个程序 第二个程序执行不了啊啊啊啊

时间:10-02 整理:3721RD 点击:
我就是写了一个很简单的程序(程序如下),在调试这个程序的时候,我把sheng();函数中第一个if语句的for语句去掉就能执行第二个if语句,为什么加了for循环就没有执行第二个if语句,求大神帮我看看!
#include<reg52.h>
#define uchar unsigend char
#define uint unsigned int
sbit jk=P3^6;         //定义我要控制的端口
delay(uint x)           //延时
{
while(--);
}
key()
{/***********矩阵键盘的程序我就不写了****************/}
sheng()                             //根据扫描的键值执行相应步骤
{
if(w==0xee)
{
delay(10);
if(w==0xee)
{
for(i=10;i>0;i++)
{
jk=~jk;
delay(200);
}
}
if(w==0xed)
{
delay(10);
if(w==0xed)
{
jk=1;
}
}
}
}
main()
{
while(1)
{
w=key();
sheng();
}
}

i = 10 ,i > 0 一直成立,i++一直加肯定不会往下走啊

你现在这个程序的含义是在w等于oxee的前提下,w再等于0xed才会执行jk=1,这跟你想要达到的目的一样吗?

for(i=10;i>0;i++)怎么定的
应该是i--吧

for(i=10;i>0;i++)确实是一直执行的,你要好好看看这个语句的执行方式了,即使你改成i--你也看看需要减多少次,不然会差一次的!

可是这个for语句在执行循环次数结束的时候是有停止的啊

我现在就是只要把for语句     加进去就执行不了    第二个if语句    可是for循环是会停止的   程序中可能是我打错了

你仿真的时候看一下w的值,可能w的值改变了!

为什么都在纠结for语句,而全部忽略了二楼的观点?for语句这么写循环到溢出的话是可以结束的,但是逻辑关系错误了的话是无论如何都无法执行的。

我这边的程序着急打错了,不是for(i=10;i>0;i++),,,而是for(i=10;i>0;i--),,,

按照你程序的逻辑来看,2楼说的是对的,这个跟for循环没有关系

是,跟for循环没有关系。

你这像是在发波,是不是延时太短了,执行的效果看不出来。

延时我改过了   长的   短的  都用过还是没用啊

那是什么一个情况啊

怎么没看到w的声明,key函数也没写返回值类型,这程序能通过编译?

你在循环里面设个断点,你看程序进去不,进去了就是你管脚的事。另外P3^6是个复用口,你看设置好着没。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top