
keil 3 keil错误:error c129: missing ';' before RCAP2,怎么改也不对
#include<C8051F040.h>#defineucharunsignedchar#defineuintunsignedint#defineulongunsign...
#include<C8051F040.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define MOTO_BREAK DIRlA=DIRlB
#define MOTO_FORD DIRlA=0,DIRlB=1
#define MOTO_BACK DIRlA=1,DIRlB=0
sfrl6 RCAP2="0xca";
sfrl6 RCAP3="0xca";
sfrl6 RCAP4="0xca";
sfrl6 TMR4="0xcc";
sfrl6 TMR3="0xcc";
sfrl6 TMR2="0xcc";
sfrl6 PCA0CP0="0xfb";
sfrl6 PCA0CP1="0xfd";
sfrl6 PCA0CP2="0xe9";
sfrl6 PCA0CP3="0xeb";
sfrl6 PCA0CP4="0xed";
sfrl6 PCA0CP5="0xe1";
uchar temppage;
sbit DIRlA=P3^0; //方向控制引脚
sbit DIRlB=P3^1;
void pca0ini()
{ //CEX0为8位PWM输出模式
SFRPAGE=0x00;
PCA0CPM0=0x42;
}
void delay1ms(uint time)
{ //延迟1ms
uint i;
uint j;
for(i=0;i<time;i++)
{
for(j=0;j<300;j++);
}
}
void PWM0_set(uchar val)
{ //高电平占空比为val/256
SFRPAGE=0x00;
PCA0CPH0=val+1;
}
void pcaini()
{
SFRPAGE=0x00;
PCA0MD=0x08; //PCA采用系统时钟,且PCA溢出中断禁止
PCA0CN=0x40; //启动PCA计数器
}
void config()
{
//看门狗禁止
WDTCN=0x07;
WDTCN=0xDE;
WDTCN=0xAD;
SFRPAGE=0x0F;
//交叉开关配置,CEX0~CEX5配置到P0.0~P0.5
XBR0=0x30;
XBR1=0x00;
XBR2=0x40;
XBR3=0x00;
//引脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P0为数字输入口
SFRPAGE=0x0f;
P0MDOUT=0x00;
P1MDIN=0xFF;
//晶振配置,采用内部晶振8分频
SFRPAGE=0x0F;;
CLKSEL=0x00;;
OSCXCN=0x00;;
OSCICN=0x84;;
}
void main(void)
{
config();
pcaini();
pca0ini;
while(1)
{
//慢速反向运行2s
MOTO_BACK;
PWM0_set(10);
delay1ms(2000);
MOTO_BREAK; //急停
//慢速正向运行2s
MOTO_FORD;
PWM0_set(10);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(2000);
//快速反向运行2s
MOTO_BACK;
PWM0_set(200);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(500);
//快速正向运行2s
MOTO_FORD;
PWM0_set(200);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(2000);
}
}
跟引号无关。。。为什么总是那个错误,而且只有那个错误 展开
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define MOTO_BREAK DIRlA=DIRlB
#define MOTO_FORD DIRlA=0,DIRlB=1
#define MOTO_BACK DIRlA=1,DIRlB=0
sfrl6 RCAP2="0xca";
sfrl6 RCAP3="0xca";
sfrl6 RCAP4="0xca";
sfrl6 TMR4="0xcc";
sfrl6 TMR3="0xcc";
sfrl6 TMR2="0xcc";
sfrl6 PCA0CP0="0xfb";
sfrl6 PCA0CP1="0xfd";
sfrl6 PCA0CP2="0xe9";
sfrl6 PCA0CP3="0xeb";
sfrl6 PCA0CP4="0xed";
sfrl6 PCA0CP5="0xe1";
uchar temppage;
sbit DIRlA=P3^0; //方向控制引脚
sbit DIRlB=P3^1;
void pca0ini()
{ //CEX0为8位PWM输出模式
SFRPAGE=0x00;
PCA0CPM0=0x42;
}
void delay1ms(uint time)
{ //延迟1ms
uint i;
uint j;
for(i=0;i<time;i++)
{
for(j=0;j<300;j++);
}
}
void PWM0_set(uchar val)
{ //高电平占空比为val/256
SFRPAGE=0x00;
PCA0CPH0=val+1;
}
void pcaini()
{
SFRPAGE=0x00;
PCA0MD=0x08; //PCA采用系统时钟,且PCA溢出中断禁止
PCA0CN=0x40; //启动PCA计数器
}
void config()
{
//看门狗禁止
WDTCN=0x07;
WDTCN=0xDE;
WDTCN=0xAD;
SFRPAGE=0x0F;
//交叉开关配置,CEX0~CEX5配置到P0.0~P0.5
XBR0=0x30;
XBR1=0x00;
XBR2=0x40;
XBR3=0x00;
//引脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P0为数字输入口
SFRPAGE=0x0f;
P0MDOUT=0x00;
P1MDIN=0xFF;
//晶振配置,采用内部晶振8分频
SFRPAGE=0x0F;;
CLKSEL=0x00;;
OSCXCN=0x00;;
OSCICN=0x84;;
}
void main(void)
{
config();
pcaini();
pca0ini;
while(1)
{
//慢速反向运行2s
MOTO_BACK;
PWM0_set(10);
delay1ms(2000);
MOTO_BREAK; //急停
//慢速正向运行2s
MOTO_FORD;
PWM0_set(10);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(2000);
//快速反向运行2s
MOTO_BACK;
PWM0_set(200);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(500);
//快速正向运行2s
MOTO_FORD;
PWM0_set(200);
delay1ms(2000);
MOTO_BREAK; //急停
delay1ms(2000);
}
}
跟引号无关。。。为什么总是那个错误,而且只有那个错误 展开
2个回答
展开全部
你对sfr16进行定义了吗?还有不需要加引号!你改成sfr RCAP2=0xca;试试看!!
追问
没有用的。。5555
追答
我在机器上改了,这个错误通过了啊?你修改后还是原来的错误吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询