Beginner_lx 2023-10-27 16:00 采纳率: 100%
浏览 2
已结题

关于#c语言#的问题,请各位专家解答!(相关搜索:51单片机)


#include<reg52.h>
sbit KEY_ADD=P3^3;
sbit KEY_DEC=P3^4;
#define DataPort P0
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code dofly_DuanMa[10]={0x3f,0x01,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code dofly_WeiMa[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char TempData[8];
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
void Dsiplay(unsigned char FirstBit,unsigned char Num);
    
void main (void)
{
    unsigned char num=0;
    KEY_ADD=1;
    KEY_DEC=1;
    while(1)
    {
        if(!KEY_ADD)
    {
        DelayMs(10);
        if(!KEY_ADD)
            {
            while(!KEY_ADD);
                {
                    if(num<9)
                    num++;
                }
        }
    }
        if(!KEY_DEC)
    {
        DelayMs(10);
        if(!KEY_DEC)
            {
                while(!KEY_DEC)
                {
                    if(num>0)
                    num--;
                }
            }
    }
void Display(unsigned char FirstBit,unsigned char Num)
{
    unsigned char i;
      for(i=0;i<Num;i++)
    {
        DataPort=0;
        LATCH1=1;
        LATCH1=0;
        
        DataPort=dofly_WeiMa[i+FirstBit];
        LATCH2=1;
        LATCH2=0;
        
        DataPort=TempData[i];
        LATCH1=1;
        LATCH1=0;
        
        DelayMs(2);
    }
}
        TempData[0]=dofly_DuanMa[num%10];
        Display(0,1);
    }
}

void DelayUs2x(unsigned char t)
{
 while(--t);
    {
            DelayUs2x(245);
            DelayUs2x(245);
    }
}

出现了:main.c(45): error C141: syntax error near 'void', expected '__asm'是为什么?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-27 18:20
    关注

    【以下回答由 GPT 生成】

    这个错误是由于在C语言中,不允许在函数之前定义其他类型的变量或执行其他操作。在这种情况下,导致错误的原因是定义了一个函数void DelayUs2x(unsigned char t);之前有其他操作。

    要解决这个问题,可以将函数void DelayUs2x(unsigned char t);的定义移到函数main之前或者在main函数之前增加一个函数原型。

    修正后的代码如下所示:

    #include <reg52.h>
    sbit KEY_ADD = P3^3;
    sbit KEY_DEC = P3^4;
    #define DataPort P0
    sbit LATCH1 = P2^2;
    sbit LATCH2 = P2^3;
    unsigned char code dofly_DuanMa[10] = {0x3f, 0x01, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
    unsigned char code dofly_WeiMa[10] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
    unsigned char TempData[8];
    
    void DelayUs2x(unsigned char t);
    void DelayMs(unsigned char t);
    void Display(unsigned char FirstBit, unsigned char Num);
    
    void DelayUs2x(unsigned char t)
    {
        while(--t)
        {
            DelayUs2x(245);
            DelayUs2x(245);
        }
    }
    
    void DelayMs(unsigned char t)
    {
        while(t--)
        {
            DelayUs2x(245);
            DelayUs2x(245);
        }
    }
    
    void Display(unsigned char FirstBit, unsigned char Num)
    {
        unsigned char i;
        for(i = 0; i < Num; i++)
        {
            DataPort = 0;
            LATCH1 = 1;
            LATCH1 = 0;
    
            DataPort = dofly_WeiMa[i + FirstBit];
            LATCH2 = 1;
            LATCH2 = 0;
    
            DataPort = TempData[i];
            LATCH1 = 1;
            LATCH1 = 0;
    
            DelayMs(2);
        }
    }
    
    void main(void)
    {
        unsigned char num = 0;
        KEY_ADD = 1;
        KEY_DEC = 1;
        while(1)
        {
            if(!KEY_ADD)
            {
                DelayMs(10);
                if(!KEY_ADD)
                {
                    while(!KEY_ADD)
                    {
                        if(num < 9)
                            num++;
                    }
                }
            }
    
            if(!KEY_DEC)
            {
                DelayMs(10);
                if(!KEY_DEC)
                {
                    while(!KEY_DEC)
                    {
                        if(num > 0)
                            num--;
                    }
                }
            }
    
            TempData[0] = dofly_DuanMa[num % 10];
            Display(0, 1);
        }
    }
    

    请注意,我进行了以下更改: 1. 将void DelayUs2x(unsigned char t);void DelayMs(unsigned char t);的定义移动到了函数main之前。 2. 在void DelayUs2x(unsigned char t);函数的定义中增加了函数原型,以便在DelayMs函数中使用。 3. 在函数Display(unsigned char FirstBit, unsigned char Num)之前增加了函数原型。

    这样,代码中的语法错误就被修复了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 锌合金的耐温能到多少度。可以持续多长时间
  • ¥15 .net调用本地office组件出现问题
  • ¥15 docker镜像拉取失败请教教我
  • ¥15 https访问nginx上的http
  • ¥15 需要完整规则的五子棋博弈代码
  • ¥15 Hadoop的部署与安装的一些疑问
  • ¥15 短剧的sdk在哪里接入
  • ¥30 智能割草机自动化割草
  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零