找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1686|回复: 8
收起左侧

keil编译出错 第19行少“;” 急急急!!!

[复制链接]
ID:154739 发表于 2017-3-23 14:58 | 显示全部楼层 |阅读模式
  • #include <reg52.h>
  • #define uchar unsigned char
  • #define uint unsigned int
  • sbit START = P3^3;
  • sbit CLK = P3^2;
  • sbit OE= P3^1;
  • sbit EOC = P3^0;
  • uint light;
  • uchar state=0;
  • void timer0()interrupt 1;
  • void delay(uint z)
  • {
  •         uint x,y;
  •         for(x=z;x>0;x--)
  •         for(y=110;y>0;y--);
  • }
  • void timer0()interrupt 1
  • {
  • TH0=(65536-6)/256;
  • TL0=(65536-6)%256;
  • CLK=~CLK;
  • }
  • void transfer()
  • {
  • START=0;
  • OE=0;
  • delay(5);
  • while(!EOC);
  • OE=1;
  • light=P0;
  • OE=0;
  • START=1;
  • }
  • void init()
  • {
  • TMOD=0x01;
  • TH0=(65536-6)/256;
  • TL0=(65536-6)%256;
  • EA=1;
  • ET0=1;
  • TR0=1;
  • P2=0x0f;
  • }
  • void move(uchar step)
  • {
  • uchar i;
  • P2=0x0f;
  • for(i=0;i<step;i++)
  • {
  •    P2=~0x03;
  •          delay(200);
  •    P2=~0x06;
  •          delay(200);
  •          P2=~0x0c;
  •          delay(200);
  •          P2=~0x09;
  •          delay(200);
  •         }
  • }
  • void reserve(uchar step)
  • {
  • uchar i;
  • P2=0x0f;
  • for(i=0;i<step;i++)
  • {
  •    P2=~0x09;
  •          delay(200);
  •    P2=~0x0c;
  •          delay(200);
  •          P2=~0x06;
  •          delay(200);
  •          P2=~0x03;
  •          delay(200);
  •         }
  • }
  • void movestep(uchar level)
  • {
  •   switch(level)
  •   {
  •          case0:switch(state)
  •          {
  •           case0:break;
  •                 case1:reserve(1);break;
  •                 case2:reserve(2);break;
  •                 case3:reserve(3);break;
  •          }state=0;break;
  •          case1:switch(state)
  •          {
  •           case0:move(1);break;
  •                 case1:break;
  •                 case2:reserve(1);break;
  •                 case3:reserve(2);break;
  •          }state=1;break;
  •          case2:switch(state)
  •          {
  •           case0:move(2);break;
  •                 case1:move(1);break;
  •                 case2:break;
  •                 case3:reserve(1);break;
  •          }state=2;break;
  •          case3:switch(state)
  •          {
  •           case0:move(3);break;
  •                 case1:move(2);break;
  •                 case2:move(1);break;
  •                 case3:break;
  •          }state=3;break;
  •         }
  • }
  • void main()
  • {
  •   init();
  •         while(1)
  •         {
  •          delay(1000);
  •         transfer();
  •         P0=~light;
  •         if(light>=0&&light<40)movestep(0);
  •         if(light>=40&&light<125)movestep(1);
  •         if(light>=125&&light<210)movestep(2);
  •         if(light>=210&&light<255)movestep(3);
  •         }
  • }
  • 能帮忙看下这个程序有什么问题吗  老是在keil uVision4中编译错误  老实说第19行少“;”。求各位大神帮下忙找出错误并告诉下怎么改


回复

使用道具 举报

ID:182806 发表于 2017-3-23 15:23 | 显示全部楼层
18行最后面不是应该有; 吗?
回复

使用道具 举报

ID:111634 发表于 2017-3-23 15:24 | 显示全部楼层
中断函数是不需要先函数说明的,删去该句就行。不过,你的程序还有其他错误。
回复

使用道具 举报

ID:157238 发表于 2017-3-23 15:29 | 显示全部楼层
中断服务程序不用进行函数声明
回复

使用道具 举报

ID:182824 发表于 2017-3-23 15:49 | 显示全部楼层
对啊,中断函数不用函数声明啊
回复

使用道具 举报

ID:157238 发表于 2017-3-23 17:03 | 显示全部楼层
switch 语句中case与常量表达式之间是需要有空格的。我也是初学者,不知复合switch语句是否可以使用?
回复

使用道具 举报

ID:182858 发表于 2017-3-23 17:10 | 显示全部楼层
KANKAN
回复

使用道具 举报

ID:154739 发表于 2017-3-23 17:11 | 显示全部楼层
le51 发表于 2017-3-23 17:03
switch 语句中case与常量表达式之间是需要有空格的。我也是初学者,不知复合switch语句是否可以使用?

谢谢  你说的是对的 我的程序也改对了
回复

使用道具 举报

ID:182872 发表于 2017-3-23 18:06 | 显示全部楼层
可以用仿真器测试一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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