700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > stc单片机c语言程序头文件(stc12c5a60s2.h stc12c5a60s2头文件在keil中没法用?

stc单片机c语言程序头文件(stc12c5a60s2.h stc12c5a60s2头文件在keil中没法用?

时间:2024-04-13 20:28:54

相关推荐

stc单片机c语言程序头文件(stc12c5a60s2.h stc12c5a60s2头文件在keil中没法用?

下面那段程序,头文件是编译正常在stc89c52中正常运行,当然在stc12c5a32s2中不行,就是我上次提的问题。我把头文件改成编译出错,提示:

Build target '目标 1'

assembling STARTUP.A51...

compiling 舵机回中.c...

舵机回中.C(33): error C202: 'P2_7': undefined identifier

舵机回中.C(35): error C202: 'P2_7': undefined identifier

目标未创建

应该是没定义p2口。我打开两个头文件看了下,在中有

/*------------------------------------------------

P0 Bit Registers

------------------------------------------------*/

sbit P0_0 = 0x80;

sbit P0_1 = 0x81;

sbit P0_2 = 0x82;

sbit P0_3 = 0x83;

sbit P0_4 = 0x84;

sbit P0_5 = 0x85;

sbit P0_6 = 0x86;

sbit P0_7 = 0x87;

之类的内容,在中却没有,难道不能单独用?我在代码中加入编译出现以下提示:把改成提示也一样。

D:\KEIL\C51\INC\STC12C5A60S2.H(171): error C231: 'SM0': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(172): error C231: 'SM1': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(173): error C231: 'SM2': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(174): error C231: 'REN': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(175): error C231: 'TB8': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(176): error C231: 'RB8': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(177): error C231: 'TI': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(178): error C231: 'RI': redefinition

D:\KEIL\C51\INC\STC12C5A60S2.H(180): error C231: 'SBUF': redefinition

目标未创建

请教下该怎么处理啊。我看头文件中的:

sfr CMOD= 0xD9; //PCA 工作模式寄存器。 CIDL - - - CPS2 CPS1CPS0ECF 0xxx,x000

/*

CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。

CPS2: PCA 计数器脉冲源选择位 2。

CPS1: PCA 计数器脉冲源选择位 1。

CPS0: PCA 计数器脉冲源选择位 0。

CPS2 CPS1 CPS0

0 0 0 系统时钟频率 fosc/12。

0 0 1 系统时钟频率 fosc/2。

0 1 0 Timer0 溢出。

0 1 1 由 ECI/P3.4 脚输入的外部时钟,最大 fosc/2。

1 0 0 系统时钟频率,Fosc/1

1 0 1 系统时钟频率/4,Fosc/4

1 1 0 系统时钟频率/6,Fosc/6

1 1 1 系统时钟频率/8,Fosc/8

问题是不是在这里?D9是系统时钟频率Fosc/1?附实验用的代码:头文件我在杜老师网站和官网及其他网站都下载了,里面内容都一样。

/****************************************************************************

硬件连接

把舵机插入单片机接口中

****************************************************************************/

#include

#include

#define Sevro_moto_pwm P2_7 //接舵机信号端输入PWM信号调节速度

unsigned char pwm_val_left= 0;//变量定义

unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号

unsigned long S=0;

unsigned long S1=0;

unsigned long S2=0;

unsigned long S3=0;

unsigned long S4=0;

unsigned inttime=0; //时间变量

unsigned inttimer=0; //延时基准变量

unsigned char timer1=0; //扫描时间变量

/************************************************************************/

/*PWM信号产生控制舵机 */

/************************************************************************/

/* */

/*调节push_val_left的值改变电机转速,占空比 */

void pwm_Servomoto(void)

{

if(pwm_val_left<=push_val_left)

Sevro_moto_pwm=1;

else

Sevro_moto_pwm=0;

if(pwm_val_left>=200)

pwm_val_left=0;

}

/***************************************************/

///*TIMER1中断服务子函数产生PWM信号*/

void time1()interrupt 3 using 2

{

TH1=(65536-1111)/256; //100US定时

TL1=(65536-1111)%256; //定时器100US为准。在这个基础上延时

pwm_val_left++;

pwm_Servomoto();

}

/***************************************************/

void main(void)

{

TMOD=0X11;

TH1=(65536-1111)/256; //100US定时

TL1=(65536-1111)%256;

TH0=0;

TL0=0;

TR1= 1;

ET1= 1;

ET0= 1;

EA = 1;

push_val_left=14; //舵机归中

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

{

}

}

还有在论坛看见一个朋友的代码,也是用的,又能在keil u4中编译成功。刚学习不久,头大了。

#include //12MHZ每秒一百万周期

sbit DQ=P1^0; //定义与18b20连接的单总线

sbit LED=P0^0;

void delay(unsigned int a)

{//调用函数时用时4US

while(a--); //执行一次9us

}

unsigned char RST18b20()

{//复位18b20

unsigned char i;

DQ=1;

delay(8);

DQ=0;

delay(54); //至少延时480微秒

DQ=1; //检测复位信号

//以上为复位信号发送

delay(7);//复位成功后会在15~60微秒后返回低电平,这个延时就是等待返回信号

i=DQ;

delay(20);

return(i);

}

void main()

{

unsigned char r;

P1M0=0x01;

while(1)

{

r=RST18b20();

if(r==0)

{

LED=~LED;

delay(60000);

delay(60000);

delay(60000);

delay(60000);

delay(60000);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。