找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1502|回复: 6
收起左侧

单片机新手动态数码管出事了,求教

[复制链接]
ID:529872 发表于 2019-5-7 18:50 | 显示全部楼层 |阅读模式
在创建动态数码管的工程中,跟着视频教程编写好了动态数码管的程序,将.c文件加入工程后系统提示出错惹,无法创建Target.
试了一下,如果不把程序的.c文件加入工程,就可以创建hex文件,就是会有没有芯片的警告。跪求大神教教这是怎么回事

这是错误提示:
Build target 'Target 1'
compiling 动态4.c...
动态4.C(24): error C221: non-constant case/dim expression
动态4.C(26): error C221: non-constant case/dim expression
动态4.C(28): error C221: non-constant case/dim expression
动态4.C(30): error C221: non-constant case/dim expression
动态4.C(32): error C221: non-constant case/dim expression
动态4.C(34): error C221: non-constant case/dim expression
动态4.C(36): error C221: non-constant case/dim expression
动态4.C(38): error C221: non-constant case/dim expression
Target not created


程序如下:
  1. #include<reg52.h>
  2.   typedef unsigned char u8;
  3.   typedef unsigned int u16;
  4.   sbit LSA=P2^2;
  5.   sbit LSB=P2^3;
  6.   sbit LSC=P2^4;
  7.   u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  8.                      0x7f,0x6f,0x77,0x7b,0x39,0x5e,0x79,0x71} ;
  9.   void delay(u16 i)
  10.   {
  11.     while(i--);
  12.   }
  13.   void DisDisplay()
  14.   {
  15.      u8 i ;
  16.    for(i=0;i<8;i++)
  17. {
  18.     switch(i)
  19.     {
  20.       case(i=0):
  21.              LSA=0;LSB=0;LSC=0;break;
  22.       case(i=1):
  23.              LSA=1;LSB=0;LSC=0;break;
  24.       case(i=2):
  25.              LSA=0;LSB=1;LSC=0;break;
  26.    case(i=3):
  27.              LSA=1;LSB=1;LSC=0;break;
  28.    case(i=4):
  29.              LSA=0;LSB=0;LSC=1;break;
  30.    case(i=5):
  31.              LSA=1;LSB=0;LSC=1;break;
  32.    case(i=6):
  33.              LSA=0;LSB=1;LSC=1;break;
  34.    case(i=7):
  35.              LSA=1;LSB=1;LSC=1;break;
  36.     }
  37.     P0=smgduan[i];
  38.     delay(100);
  39.     P0=0x00;

  40. }
  41.   }
  42.   void main()
  43.   {  
  44.    
  45. while(1)
  46.      {
  47.    DisDisplay() ;
  48.   }
  49.      
  50.   
  51.   }
复制代码

新手心累,求解。多谢大嘎了。

回复

使用道具 举报

ID:342822 发表于 2019-5-8 01:54 | 显示全部楼层
void delay(u16 i)
  {
    while(i--);
  }
  void DisDisplay()
  {
     u8 i ;
   for(i=0;i<8;i++)
{
    switch(i)
    {
      case(0):
             LSA=0;LSB=0;LSC=0;break;
      case(1):
             LSA=1;LSB=0;LSC=0;break;
      case(2):
             LSA=0;LSB=1;LSC=0;break;
   case(3):
             LSA=1;LSB=1;LSC=0;break;
   case(4):
             LSA=0;LSB=0;LSC=1;break;
   case(5):
             LSA=1;LSB=0;LSC=1;break;
   case(6):
             LSA=0;LSB=1;LSC=1;break;
   case(7):
             LSA=1;LSB=1;LSC=1;break;
    }
    P0=smgduan[i];
    delay(100);
    P0=0x00;

}
  }
回复

使用道具 举报

ID:339320 发表于 2019-5-8 14:23 | 显示全部楼层
常见错误,case括号里直接跟常量,不需要写判断语句。而且你的判断语句也没写对,应该是“==”而不是“=”。
回复

使用道具 举报

ID:505065 发表于 2019-5-8 22:42 | 显示全部楼层
程序错了
回复

使用道具 举报

ID:529872 发表于 2019-5-10 16:56 | 显示全部楼层
taotie 发表于 2019-5-8 01:54
void delay(u16 i)
  {
    while(i--);

好的,谢谢!
回复

使用道具 举报

ID:529872 发表于 2019-5-10 16:59 | 显示全部楼层
aiwenxue999 发表于 2019-5-8 14:23
常见错误,case括号里直接跟常量,不需要写判断语句。而且你的判断语句也没写对,应该是“==”而不是“=” ...

好的,谢谢,看来是得恶补一下C语言了
回复

使用道具 举报

ID:529872 发表于 2019-5-10 17:00 | 显示全部楼层

已经改正了,多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表