单片机程序,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);
}
}
展开
 我来答
梁昌仔
2014-08-02 · TA获得超过272个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:223万
展开全部
你把A定义为uint型,所以A一直大于等于零,所以你
if(a<0)
a=9;
不可能实现
谢谢
爱上对方过后去Ae957
2014-08-02 · 超过61用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:72.5万
展开全部
粗略看了一下,代码有点乱,这不是重点,重点是整个逻辑结构,也就是运行原理没弄好,而且,还有代码上的漏洞。首先,display();动态扫描,原理是一个数码管亮一段(1-3ms为适)时间后,灭掉,紧跟着下一个数码管亮一段时间,如此循环。它最重要的是不能停顿,不然就不能叫动态扫描了。
然后是按键,按下去之后,你就死在那里等着松开,这时候,动态数码管就得不到执行就停顿了,于是发生了你看到的现象。
代码上,变量定义最好初始化,比如你的int num; 在后面的 if(num == 60){...} 如果这里num 本来就是大于60的数,后面就出问题了。
请采纳答案,支持我一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-08-02
展开全部
没程序不好说
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-08-02
展开全部
程序呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式