
单片机程序,C语言错哪里了
我想让它按键从0~9,然后又从9~0,一直循环,错哪里了while(1){if(key1==0){delay(10);if(key1==0){a++;if(a>9)a=0...
我想让它按键从0~9,然后又从9~0,一直循环,错哪里了
while (1)
{
if(key1==0)
{
delay(10);
if (key1==0)
{
a++;
if(a>9)
a=0;
GPIO_DIG=~DIG_CODE[a];
while(!key1);
}
}
if(key2==0)
{
delay(10);
if (key2==0)
{
a--;
if(a<0)
a=9;
GPIO_DIG=~DIG_CODE[a];
while(!key2);
}
} 展开
while (1)
{
if(key1==0)
{
delay(10);
if (key1==0)
{
a++;
if(a>9)
a=0;
GPIO_DIG=~DIG_CODE[a];
while(!key1);
}
}
if(key2==0)
{
delay(10);
if (key2==0)
{
a--;
if(a<0)
a=9;
GPIO_DIG=~DIG_CODE[a];
while(!key2);
}
} 展开
4个回答
展开全部
你把A定义为uint型,所以A一直大于等于零,所以你
if(a<0)
a=9;
不可能实现
谢谢
if(a<0)
a=9;
不可能实现
谢谢
展开全部
粗略看了一下,代码有点乱,这不是重点,重点是整个逻辑结构,也就是运行原理没弄好,而且,还有代码上的漏洞。首先,display();动态扫描,原理是一个数码管亮一段(1-3ms为适)时间后,灭掉,紧跟着下一个数码管亮一段时间,如此循环。它最重要的是不能停顿,不然就不能叫动态扫描了。
然后是按键,按下去之后,你就死在那里等着松开,这时候,动态数码管就得不到执行就停顿了,于是发生了你看到的现象。
代码上,变量定义最好初始化,比如你的int num; 在后面的 if(num == 60){...} 如果这里num 本来就是大于60的数,后面就出问题了。
请采纳答案,支持我一下。
然后是按键,按下去之后,你就死在那里等着松开,这时候,动态数码管就得不到执行就停顿了,于是发生了你看到的现象。
代码上,变量定义最好初始化,比如你的int num; 在后面的 if(num == 60){...} 如果这里num 本来就是大于60的数,后面就出问题了。
请采纳答案,支持我一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-02
展开全部
没程序不好说
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-02
展开全部
程序呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询