標(biāo)題:
求助! hanjia.c(75): error C141: syntax error near 'void', expected '__asm'
[打印本頁]
作者:
277563114
時(shí)間:
2019-2-9 21:32
標(biāo)題:
求助! hanjia.c(75): error C141: syntax error near 'void', expected '__asm'
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
//-----------------------------------------------
/* define constants */
#define FOSC 11059200L
#define T1MS (65536-FOSC/12/1000) //1ms timer calculation method in 12T mode
/* define SFR */
sbit TEST_LED = P1^0; //work LED, flash once per second
sbit pwm1 = P1^1;
sbit pwm2 = P1^2;
sbit pwm3 = P1^3;
sbit pwm4 = P1^4;
sbit k1=P1^5;
sbit k2=P1^6;
sbit k3=P1^7;
sbit k4=P2^0;
/* define variables */
WORD count; //1000 times counter
WORD a,b,c;
WORD time;
WORD p1,p2,p3,p4;
//-----------------------------------------------
/* Timer0 interrupt routine */
void tm0_isr() interrupt 1 using 1
{
TL0 = T1MS; //reload timer0 low byte
TH0 = T1MS >> 8; //reload timer0 high byte
if (count++ == 100) //1ms * 1000 -> 1s
{
count = 0; //reset counter
TEST_LED = ! TEST_LED; //work LED flash
}
if (count<=p1)
{
pwm1=0;
}
else{pwm1=1;}
if (count<=p2)
{
pwm2=0;
}
else{pwm2=1;}
if (count<=p3)
{
pwm3=0;
}
else{pwm3=1;}
if (count<=p4)
{
pwm4=0;
}
else{pwm4=1;}
//-----------------------------------------------
/* main program */
void main()
{
while (1){
if (k1==0)
{
for(a=0;a++;a<10000)
{
if(a<5000)
{
if(k1==1)
{
for(b=0;b++;b<10000)
{
if(k1==0)
{
p1=80;
p2=60;
p3=90;
p4=80;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
b=10000;
a=10000;
}
else
{
a=10000;
b=10000;
}
}
}
}
if(a>4999)
{
if(k3==0&&k1==0)
{
p1=100;
p2=60;
p3=90;
p4=80;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if(k1==0)
{
p1=100;
p2=80;
p3=80;
p4=100;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
}
}
if (k3==0)
{
p1=100;
p2=0;
p3=0;
p4=100;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
p1=100;
p2=0;
p3=0;
p4=0;TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
else
{
if (k2==0)
{
p1=50;
p2=100;
p3=0;
p4=0;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if (k3==0)
{
p1=0;
p1=40;
p1=100;
p1=0;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if (k4==0)
{
p1=0;
p2=30;
p3=0;
p4=100;
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
}
}
}
} //loop
}
作者:
wulin
時(shí)間:
2019-2-9 21:33
要養(yǎng)成規(guī)范書寫的習(xí)慣。void tm0_isr() interrupt 1 using 1函數(shù)最后一行少了一個(gè)花括號(hào),void main()函數(shù)最后一行多了一個(gè)花括號(hào)。
作者:
angmall
時(shí)間:
2019-2-10 07:31
給你改了,對(duì)比一下就知道哪里錯(cuò)了。
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
//-----------------------------------------------
/* define constants */
#define FOSC 11059200L
#define T1MS (65536-FOSC/12/1000) //1ms timer calculation method in 12T mode
/* define SFR */
sbit TEST_LED = P1^0; //work LED, flash once per second
sbit pwm1 = P1^1;
sbit pwm2 = P1^2;
sbit pwm3 = P1^3;
sbit pwm4 = P1^4;
sbit k1=P1^5;
sbit k2=P1^6;
sbit k3=P1^7;
sbit k4=P2^0;
/* define variables */
WORD count; //1000 times counter
WORD a,b,c;
WORD time;
WORD p1,p2,p3,p4;
//-----------------------------------------------
/* Timer0 interrupt routine */
void tm0_isr() interrupt 1 using 1
{
TL0 = T1MS; //reload timer0 low byte
TH0 = T1MS >> 8; //reload timer0 high byte
if (count++ == 100) //1ms * 1000 -> 1s
{
count = 0; //reset counter
TEST_LED = ! TEST_LED; //work LED flash
}
if (count<=p1)
{
pwm1=0;
}
else{pwm1=1;}
if (count<=p2)
{
pwm2=0;
}
else{pwm2=1;}
if (count<=p3)
{
pwm3=0;
}
else{pwm3=1;}
if (count<=p4)
{
pwm4=0;
}
else{pwm4=1;}
//-----------------------------------------------
} //<----------------- 這里錯(cuò)了 少這個(gè)
/* main program */
void main()
{
while (1){
if (k1==0)
{
for(a=0;a++;a<10000)
{
if(a<5000)
{
if(k1==1)
{
for(b=0;b++;b<10000)
{
if(k1==0)
{
p1=80;
p2=60;
p3=90;
p4=80;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
b=10000;
a=10000;
}
else
{
a=10000;
b=10000;
}
}
}
}
if(a>4999)
{
if(k3==0&&k1==0)
{
p1=100;
p2=60;
p3=90;
p4=80;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if(k1==0)
{
p1=100;
p2=80;
p3=80;
p4=100;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
}
}
if (k3==0)
{
p1=100;
p2=0;
p3=0;
p4=100;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
p1=100;
p2=0;
p3=0;
p4=0;TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
else
{
if (k2==0)
{
p1=50;
p2=100;
p3=0;
p4=0;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if (k3==0)
{
p1=0;
p1=40;
p1=100;
p1=0;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
else
{
if (k4==0)
{
p1=0;
p2=30;
p3=0;
p4=100;
TMOD |= 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
}
}
}
}
} //loop
} //loop <------- //main 這里錯(cuò)了
//} <--------------- 這里錯(cuò)了
復(fù)制代碼
作者:
HC6800-ES-V2.0
時(shí)間:
2019-2-10 09:10
非常簡(jiǎn)單的錯(cuò)誤:main()之前的函數(shù)少了一個(gè)},main()最后多了一個(gè)}而已。
看你的程序,好亂,出這樣的錯(cuò),很正常�。。。�!
作者:
xuyaqi
時(shí)間:
2019-2-10 09:46
大括弧問題,把最下邊 } 移到 main 上面就可以啦。
作者:
suuy79
時(shí)間:
2019-2-10 10:05
中斷程序少了一個(gè)“}”,在void main前面+“}”即可解決
作者:
sxinyuanxu
時(shí)間:
2022-2-12 22:51
void main前面+“}”即可解決,我也遇到相同的問題 解決了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1