找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2677|回复: 5
收起左侧

这个咋错了啊C(4): error C129: missing ';' before 'keydown'

[复制链接]
ID:815452 发表于 2020-8-21 21:12 | 显示全部楼层 |阅读模式
#include<reg52.h>
#include"LCD.h"       
uchar keydown()
{
        uchar i = 0;
        uchar key = P2 & 0x0f;
        if((P2&0x0f) != 0x0f)
        {
                delayMs(10);
                if((P2&0x0f) != 0x0f)
                {
                        key = P2 & 0x0f;
                        while((P2&0x0f) != 0x0f);
                        switch(key);
                        {
                                //Key1~4 接P2.4~7
                                case 0x0e: return 1;
                                case 0x0d: return 2;
                                case 0x0b: return 3;
                                case 0x07: return 4;
                        }
                }
        }
        return 0;
}

/***********************************************
显示时钟
***********************************************/
void showClock()
{
        uchar  i = 0;
        LCDclear();
       
        for(; i<6; i++)
        {
                displayField(i);
        }
        displaySpan('-', ':');

        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;       
}

/***********************************************
中断加时间
************************************************/
void time0() interrupt 1;
{
        TH0=(65536-50000)/256;
        TL1=(65536-50000)%256;
        countTimer ++;
        if(countTimer == 20)
        {
                countTimer = 0;       
                autoAdd1Sec();
        }
}

void showLogo(uchar logo[])
{
        LCDclear();
        displayStr(logo,0,0);
}

void refreshPage()
{
        if(g_year != g_LCDyear)         
        {
                g_LCDyear = g_year;
                displayField(e_year);
        }
        if(g_mon != g_LCDmon)
        {
                g_LCDmon = g_mon;
                displayField(e_mon);
        }
        if(g_day != g_LCDday)
        {
                g_LCDday = g_day;
                displayField(e_day);
        }
        if(g_hou != g_LCDhou)
        {
                g_LCDhou = g_hou;
                displayField(e_hou);
        }
        if(g_min != g_LCDmin)
        {
                g_LCDmin = g_min;
                displayField(e_min);
        }
        if(g_sec != g_LCDsec)
        {
                g_LCDsec = g_sec;
                displayField(e_sec);
        }
}

void changeClock();
{
        uchar count = 0;
        uchar key;
        TR0 = 0;
        initCousorXY();
        while(1)
        {
                refreshPage();
                key = 0;
                writeCmd(0x0E);//显示,开光标并闪烁
                moveCousor(g_cousorx[count],g_cousory[count]);

                key = keydown();
                if(key == 2)
                {
                        count ++;
                }
                if(key == 3)
                {
                        addClkField(count);
                }
                if(key == 4)
                {
                        subClkField(count);
                }
                writeCmd(0x0c);//关光标       
                if(count >= 6)
                        break;
        }
        TR0 = 1;       
}

void main()
{
        uchar mode = 0;//0:显示Logo,1:显示时间
        uchar i = 0;
        uchar movelen;
        uchar logo[] = "    welcome!";
        uchar move[] = "Tt could be better,but I'm busy."; //貌似最长只能40字节
        //uchar move[] = "(*^_^*)";
        movelen = sizeof(move)-1;
       
        setDateTime(2013,9,12,18,23,14);
        LCDinit();
        LCDclear();
        showLogo(logo);

        while(1)
        {
                switch(keydown();)
                {
                        case 1: mode = ! mode;
                                        if(mode == 1)
                                        {
                                                showClock();
                                               
                                        }
                                        else
                                        {
                                                showLogo(logo);       
                                        }
                                        break;       
                        case 2:        if(mode == 1)
                                        {
                                                changeClock();
                                        }
                                        break;
                        default: break;
                }
                if(mode == 1)
                        refreshPage();
                else
                {
                        displayStr(move,1,15-i);
                        displayStr(" ",1,15+movelen-i);
                }
                i++;
                i = i%(15+movelen+1);
                delayMs(200);
        };
}


回复

使用道具 举报

ID:155507 发表于 2020-8-21 21:30 | 显示全部楼层
少了这个

#define uchar unsigned char
回复

使用道具 举报

ID:815452 发表于 2020-8-21 23:27 | 显示全部楼层
angmall 发表于 2020-8-21 21:30
少了这个

#define uchar unsigned char

加了这个一堆错呀
1.c(3): warning C318: can't open file 'LCD.h'
1.C(6): error C141: syntax error near '{'
1.C(8): error C247: non-address/-constant initializer
1.C(9): error C141: syntax error near 'if'
1.C(9): error C141: syntax error near '&', expected ')'
1.C(11): error C141: syntax error near '10'
1.C(12): error C141: syntax error near 'if'
1.C(12): error C141: syntax error near '&', expected ')'
1.C(14): error C279: 'key': multiple initialization
1.C(14): error C231: 'key': redefinition
1.C(14): error C247: non-address/-constant initializer
1.C(15): error C141: syntax error near 'while'
1.C(15): error C141: syntax error near '&', expected ')'
1.C(17): error C141: syntax error near '{'
1.c - 13 Error(s), 1 Warning(s).
回复

使用道具 举报

ID:213173 发表于 2020-8-22 05:39 | 显示全部楼层
123456qwerty1 发表于 2020-8-21 23:27
加了这个一堆错呀
1.c(3): warning C318: can't open file 'LCD.h'
1.C(6): error C141: syntax error  ...

要加载LCD.h和LCD.c。
回复

使用道具 举报

ID:466505 发表于 2020-8-22 08:50 | 显示全部楼层
switch(keydown();)这句是错的吧,多了个;
回复

使用道具 举报

ID:833190 发表于 2020-10-23 17:14 | 显示全部楼层
主函数里的switch(keydown();),后面的;不要
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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