5235|9

7

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

C语言时钟程序在KEIL中提示出错 [复制链接]

#include                        

#define uchar unsigned char

#define uint unsigned int

char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,

                    0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/

uchar hour=0,min=0,sec=0;                /*时、分、秒单元清零*/

uchar deda=0;                                  /*5mS计数单元清零*/

uchar t_hour=0,t_min=0;                   /*闹时时、分单元清零*/

bit d_05s=0;                             /*0.5秒标志*/

bit o_f=0;                                         /*闹时启/停标志*/

uchar set=0;                                      /*模式设定标志*/

uchar m=0;

uchar flag=0;                                     /*RAM掉电标志*/

void delay(uint k);                              /*延时子函数*/

void conv();                                       /*走时单元转换*/

void p_out();                                      /*判别闹时到否子函数*/

void dirve();                                       /*走时时间输出驱动子函数*/

void t_dirve();                                    /*闹时时间输出驱动子函数*/



/*闹时启/停子函数*/

void time1_of()                                 

{uchar m;

       if(P3_7==0)delay(1);

       if(P3_7==0)o_f=1;

       for(m=0;m<30;m++)

              {

              t_dirve();

              P1=DATA_7SEG[t_min/10]  3=0xfd;delay(1);

              if(P3_1==0){if(o_f==1)P1_7=0;}else P1_7=1;

              delay(1);

              }


       if(P3_5==0)delay(1);

       if(P3_5==0)    o_f=0;

       for(m=0;m<30;m++)

              {

              t_dirve();

              P1=DATA_7SEG[t_min/10]3=0xfd;delay(1);

              if(P3_1==0){if(o_f==1)P1_7=0;else P1_7=1;}

              delay(1);

              }

}


/*走时函数*/

void time()

{

conv();                                              /*走时单元转换*/

dirve();                                              /*走时时间输出驱动子函数*/

p_out();                                             /*判别闹时到否子函数*/

}



/*定时器T0  5mS初始化*/

void init_timer()

{

TMOD=0x01;

TH0=-(4800/256);

TL0=-(4800%256);

IE=0x82;

TR0=1;

}


/*扫描按键子函数*/

void scan_key()

{

delay(1);

if(P3_4==0)set++;

if(set>=4)set=0;

if(set==1)flag=0x55;

F0:if(P3_4==0)goto F0;                      /*按键未释放,在此等候*/

}



/*延时子函数*/

void delay(uint k)

{

uint i,j;

for(i=0;i
for(j=0;j<121;j++)

{;}}

}


/*5mS定时中断服务子函数*/

void zd(void) interrupt 1

{

TH0=-(4800/256);

TL0=-(4800%256);

deda++;

}


/*调整走时时间*/

void time_adj()

{uchar m;

       if(P3_5==0)delay(1);

       if(P3_5==0)hour++;

       if(hour==24)hour=0;

       for(m=0;m<30;m++)

              {

              dirve();

              if(P3_2==0)P1_7=0;

              else P1_7=1;

              delay(1);

              }


       if(P3_7==0)delay(1);

       if(P3_7==0)min++;

       if(min==60)min=0;

       for(m=0;m<30;m++)

              {

              dirve();

                     if(P3_2==0)P1_7=0;

              else P1_7=1;

              delay(1);

              }

}



/*调整闹时时间*/

void time1_adj()

{uchar m;

       if(P3_5==0)delay(1);

       if(P3_5==0)t_hour++;

       if(t_hour==24)t_hour=0;

       for(m=0;m<30;m++)

              {

              t_dirve();

              }


       if(P3_7==0)delay(1);

       if(P3_7==0)t_min++;

       if(t_min==60)t_min=0;

       for(m=0;m<30;m++)

              {

              t_dirve();

              }

}     


/*时、分、秒单元及走时单元转换*/

void conv()

{

if(deda<=100)d_05s=0;

       else d_05s=1;

if(deda>=200){sec++;deda=0;}

if(sec==60){min++;sec=0;}

if(min==60){hour++;min=0;}

if(hour==24){hour=0;}

}


/*走时时间输出驱动子函数*/

void dirve()

{

P1=DATA_7SEG[hour/10]3=0xf7;delay(1);

P1=DATA_7SEG[hour%10];P3=0xfb;delay(1);

if(d_05s==1){if(P3_2==0)P1_7=0;else P1_7=1;}

delay(1);

P1=DATA_7SEG[min/10];P3=0xfd;delay(1);

if(o_f==1){if(P3_1==0)P1_7=0;else P1_7=1;delay(1);}

P1=DATA_7SEG[min%10];P3=0xfe;delay(1);

}


/*闹时时间输出驱动子函数*/

void t_dirve()

{

P1=DATA_7SEG[t_hour/10];P3=0xf7;delay(1);

if(P3_3==0)P1_7=0;else P1_7=1;

delay(1);

P1=DATA_7SEG[t_hour%10];P3=0xfb;delay(1);

P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);

P1=DATA_7SEG[t_min%10];P3=0xfe;delay(1);

}



/*判别闹时到否子函数*/

void p_out()

{

if(o_f==1){

       if(t_hour==hour){if(t_min==min)

              if(P3_0==0){P1_7=0;delay(1);}

              else P1_7=1;

                                   }

              }

}


/*主函数*/

void main()

{

       init_timer();                       /*定时器T0初始化*/

       while(1)                                     /*无限循环*/

       {

       if(P3_4==0)scan_key();               /*有按键,调用按键扫描子函数*/

switch(set)                                        /*根据set键值散转*/

{

case 0:time();break;                                   /*走时时间程序*/

case 1:time1_adj();break;                     /*闹时时间调整*/

case 2:time_adj();break;                      /*走时时间调整*/

case 3:time1_of();break;                      /*启/停闹时*/

default:break;                                     /*其它退出*/

}

       if(flag!=0x55)                             /*判断掉电标志*/

       {for(m=0;m<100;m++)               /*点亮四个8字400mS*/

              {

              P1=0x80;P3=0xf7;delay(1);

              P1=0x80;P3=0xfb;delay(1);

              P1=0x80;P3=0xfd;delay(1);

              P1=0x80;P3=0xfe;delay(1);

              }


              P1=0xff;P3=0xff;delay(400); /*熄灭四个8字400mS*/

       }

       }

}


错误提示
Build target 'Target 1'
assembling STARTUP.A51...
compiling AT892051.C...
AT892051.C(85): error C141: syntax error near '3'
AT892051.C(115): error C141: syntax error near '3'
AT892051.C(237): error C141: syntax error near 'for'
AT892051.C(243): error C141: syntax error near '}'
AT892051.C(456): error C141: syntax error near '3'
Target not created
大家帮忙看看是哪里出问题了
此帖出自单片机论坛

最新回复

void delay(uint k) { uint i,j; for(i=0;i for(j=0;j  详情 回复 发表于 2009-9-15 15:07
点赞 关注
 

回复
举报

255

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
请给出
AT892051.C(85): error C141: syntax error near '3'
这一行 指的是什么地方

一般找到第一个就能解决 以下的问题了


是不是 P1=DATA_7SEG[t_min/10]  3=0xfd;  这句话的语法问题
此帖出自单片机论坛
 
个人签名每天进步一点点
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我好久都没有写程序了 如果猜的没有错的话,应该是你的第三行的数码管0~9的段码定义最后的} 0x90后面不要那个逗号的,因为后面再没有段码定义了哈。
此帖出自单片机论坛
 
 
 

回复

440

帖子

0

TA的资源

五彩晶圆(高级)

4
 
弄个附件吧,看起来很费劲的
此帖出自单片机论坛
 
 
 

回复

196

帖子

0

TA的资源

五彩晶圆(中级)

5
 
至少是3楼说的那句有问题,以后要问这种问题,最好附有电路图
此帖出自单片机论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(高级)

6
 
可以分成几个函数,各个调试,在联调。
此帖出自单片机论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(高级)

7
 
先使时钟动起来,在做按键函数
此帖出自单片机论坛
 
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

8
 
P1=DATA_7SEG[hour/10]3=0xf7;delay(1);
有问题吧
是不是
P1=DATA_7SEG[hour/10];P3=0xf7;delay(1);
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

9
 

错误都给你指出来了

AT892051.C(85): error C141: syntax error near '3'
AT892051.C(115): error C141: syntax error near '3'
AT892051.C(237): error C141: syntax error near 'for'
AT892051.C(243): error C141: syntax error near '}'
AT892051.C(456): error C141: syntax error near '3'

3=0xfd;

改吧,有3个"3"应该是P3
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

10
 

问题2

void delay(uint k)

{

uint i,j;

for(i=0;i
for(j=0;j<121;j++)

{;}}

}

改为
void delay(uint k)

{

uint i,j;

for(i=0;i      {
         for(j=0;j<121;j++)
              {
                     ;
                 }
      }
}


FOR不完整
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表