打印

计数的程序问题

[复制链接]
1317|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
supernan|  楼主 | 2013-8-11 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个计数的程序,用数码管显示的,可是问题出现了,两个数码管只有一个是正常的,另一个数码管
该灭的地方倒不灭了,程序如下,求高手指点:
#include <reg52.h>
#include <intrins.h>
sbit LS138A=P2^2;   
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit LED8_1=P1^1;
unsigned char table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
unsigned int i,n ,DelayCNT;
unsigned char m;
void delay()
{
{
   
    for(n; n > 0; n--)
        for(m = 2000; m > 0; m--);
}
}
void main()
{
   unsigned int i,LedNumVal=1 ;
   unsigned int LedOut[10];
   
   DelayCNT=0;
  while(1)  //进入循环状态
  {  
     if(++DelayCNT>=500)
  {
   DelayCNT=0;     //延时计数 每扫描一次加一次
     ++LedNumVal;       //每隔50个扫描周期加一次
  }
     LedOut[6]=table[LedNumVal%10];     //十位  
     LedOut[7]=table[LedNumVal%100/10];
     
for(i=0;i<9;i++)
{
P0=LedOut[i];
switch(i)
{     
   case 0:
         case 1:            
         case 2:;
         case 3:
   case 4:
   case 5:
   case 6: LS138A=0; LS138B=1; LS138C=1; LED8_1=1; break;
   case 7: LS138A=1; LS138B=1; LS138C=1; LED8_1=1; break;;
}
delay();
}
}
}

相关帖子

沙发
houcs| | 2013-8-11 17:07 | 只看该作者
case 0—5后面没有语句

使用特权

评论回复
板凳
liuzaiy| | 2013-8-11 17:09 | 只看该作者
switch(i)

delay()
都感觉不对

使用特权

评论回复
地板
yinxiangh| | 2013-8-11 17:10 | 只看该作者
void delay()
{
{
   
    for(n; n > 0; n--)
        for(m = 2000; m > 0; m--);
}
}

两个大括号,要那么多干嘛

使用特权

评论回复
5
chenjunt| | 2013-8-11 17:11 | 只看该作者
LedOut[10];
为什么设置是10维的?有那么多没用的

使用特权

评论回复
6
supernan|  楼主 | 2013-8-11 17:11 | 只看该作者
这个程序是不怎么样,LedOut[10]主要是因为for(i=0;i<9;i++)
循环次数的缘故

使用特权

评论回复
7
supernan|  楼主 | 2013-8-11 17:13 | 只看该作者
算了,结贴了

使用特权

评论回复
8
supernan|  楼主 | 2013-8-11 17:14 | 只看该作者
谢谢大家了啊

使用特权

评论回复
9
叶伤| | 2013-8-15 21:01 | 只看该作者
主要是你没有设置消隐,就一直亮着了。

switch一般要有default,不然像keil uv2会报错的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

730

主题

10412

帖子

6

粉丝