打印
[控制方法]

自己实验写的C51,不能通过编译,各位师傅请看

[复制链接]
1757|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rdfeps|  楼主 | 2014-3-3 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下
#include <reg51.h>
#include <intrins.h>
void delay(unsigned int i);      //函数声名
//此表为 LED 的字模, 共阴数码管 0-9  -
unsigned char code   Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //段码控制
//此表为8个数码管位选控制, 共阴数码管 1-8个  -
unsigned char code   dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};    //位选控制   查表的方法控制
/************主函数**********************/
main()
{  
   unsigned int  j,i,shi=0,fen=0,miao=0 ;           //变量定义
   unsigned long  shijian[10];                   //变量定义
   while(1)
  {       
      for (j=0;j>10;j++)
           {
            j=0;
            miao++;
           }
      if (miao==59)
                   { fen++;miao==0; }
      if (fen==59)
              {shi++;fen==0;}
      if (shi==23)  
                   {  if (fen==59)
                 {if (miao==59)
                      {
                                                        miao==0;
                                                        fen==0;
                                                        shi==0;
                                                        }
                                                }
                        }
     unsigned long  shijian[0]=Disp_Tab[miao%10];
     unsigned long  shijian[1]=Disp_Tab[miao%100/10];
     unsigned long  shijian[2]=Disp_Tab[fen%10];
     unsigned long  shijian[3]=Disp_Tab[fen%100/10];
     unsigned long  shijian[4]=Disp_Tab[shi%10];
     unsigned long  shijian[5]=Disp_Tab[shi%100/10];                                                               
         for( i=0; i<6; i++)
        {         
         P0 = shijian[i];
         P1 = dispbit[i];   //使用查表法进行位选

delay(500);                 //扫描间隔时间          太长会数码管会有闪烁感
         }
         
  }   
}       

void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}
这个程序中提示
unsigned long  shijian[3]=Disp_Tab[fen%100/10];
     unsigned long  shijian[4]=Disp_Tab[shi%10];
     unsigned long  shijian[5]=Disp_Tab[shi%100/10];       
这三行有错误,实在是找不出  还望大侠指点

相关帖子

沙发
denghaibo| | 2014-3-3 17:50 | 只看该作者
不出错都对不起编译器了

使用特权

评论回复
板凳
daboy5279| | 2014-3-3 18:56 | 只看该作者
哥们,你这水平?大一的?得大大地用功才行呀,你提到的错误,unsigned long  shijian[0]=Disp_Tab[miao%10];
去掉unsigned long  ,逻辑上的错误自己调试。

使用特权

评论回复
地板
123654789| | 2014-3-3 19:24 | 只看该作者
慢慢积累
时间长了  就进步

使用特权

评论回复
5
123654789| | 2014-3-3 19:28 | 只看该作者
要养成习惯 加上int
unsigned long int

定义的时候要加上unsigned long int
赋值的时候就不加上unsigned long int

使用特权

评论回复
6
rdfeps|  楼主 | 2014-3-4 09:29 | 只看该作者
daboy5279 发表于 2014-3-3 18:56
哥们,你这水平?大一的?得大大地用功才行呀,你提到的错误,unsigned long  shijian[0]=Disp_Tab[miao%10 ...

谢谢师傅,找到问题了

使用特权

评论回复
7
rdfeps|  楼主 | 2014-3-4 09:30 | 只看该作者
123654789 发表于 2014-3-3 19:28
要养成习惯 加上int
unsigned long int

谢谢

使用特权

评论回复
8
lnak| | 2014-3-4 11:02 | 只看该作者
这能退出循环?
for (j=0;j>10;j++)
           {
            j=0;
            miao++;
           }

使用特权

评论回复
9
美好人生223| | 2014-3-4 12:38 | 只看该作者
刚学c??慢慢来吧,俺大一也是这水平,,,

使用特权

评论回复
10
daboy5279| | 2014-3-4 21:53 | 只看该作者
lnak 发表于 2014-3-4 11:02
这能退出循环?
for (j=0;j>10;j++)
           {

哈哈,问题多着呢,待会时钟跑到25,26小时都有

使用特权

评论回复
11
cxsgo| | 2014-3-4 23:11 | 只看该作者
初级水平

使用特权

评论回复
12
普通学徒| | 2014-3-5 22:09 | 只看该作者
for (j=0;j>10;j++)
           {
            j=0;
            miao++;
           }
不循环,j=0,  不符合大于10的条件,进不了循环体

使用特权

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

本版积分规则

9

主题

23

帖子

1

粉丝