51单片机检测出现,missing ';' before '++',怎么也找不到错误,求解

这是源程序,跟着视频教程上写的
#include<reg52.h>
#include <intrins.h>//函数声明
#define uchar unsigned char
#define uint unsigned int
//宏定义
void init()
uchar temp,t0; //用于流水灯的循环移位,给P1口赋值
void main()
{
init();//调用函数前需要在主函数中声明一下
while(1)
{

}
}
void init()//初始化函数
{
temp=0xfe;
P1=temp;//初始化流水灯
//初始化定时器
TMOD=0x11;//将两个定时器同时设置为方式1
TH0=(65536-50000)/256;//对高八位赋值
TL0=(65536-50000)%256;//对低八位赋值
EA=1;//把总中断打开
ET0=1;//定时器中断打开
TR0=1;//启动定时器
}
//中断函数程序
void timer0() interrupt 1
( //写中断函数首先要对函数
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==10)
{
t0=1; //对t0进行清零
temp=_crol_(temp,1);//移位
P1=temp;
}
)

你的错误有两处


第一个是中断函数的声明语句后面缺少分号


第二个是中断函数的方括号被你打错了


改完的程序如下,编译没问题


另外,主循环内如果没有语句,可以不用方括号的,直接在后面加个分号即可


节约行数,看着直观些,若满意请记得采纳下,谢谢!


#include<reg52.h>

#include <intrins.h>//函数声明

#define uchar unsigned char

#define uint unsigned int

//宏定义

void init();

uchar temp,t0; //用于流水灯的循环移位,给P1口赋值


void main()

{

     init();//调用函数前需要在主函数中声明一下

     while(1);

}

void init()//初始化函数

{

     temp=0xfe;

     P1=temp; //初始化流水灯

     //初始化定时器

     TMOD=0x11; //将两个定时器同时设置为方式1

     TH0=(65536-50000)/256; //对高八位赋值

     TL0=(65536-50000)%256; //对低八位赋值

     EA=1; //把总中断打开

     ET0=1; //定时器中断打开

     TR0=1; //启动定时器

}

//中断函数程序

void timer0() interrupt 1

{     //写中断函数首先要对函数

     TH0=(65536-50000)/256;

     TL0=(65536-50000)%256;

     t0++;

     if(t0==10)

     {

         t0=1; //对t0进行清零

         temp=_crol_(temp,1);//移位

         P1=temp;

     }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-01
在"++"之前缺少";",看看是不是用了全角符号追答

+1

第2个回答  2015-02-22
贴程序
第3个回答  2015-02-22
少了个分号?
相似回答