首先,工程文件夹下有src、inc 和 project三个文件夹,分别存放源文件、头文件和工程文件。
然后,将所有源文件、头文件都添加到项目里面,并将头文件目录添加到魔术棒下C51选项 的 Include Path(如图)
各文件代码如下:
#ifndef _IR_CONTROL_H
#define _IR_CONTROL_H
#include <reg52.h>
sbit IN1 = P0^0;
sbit IN2 = P0^1;
sbit IN3 = P0^2;
sbit IN4 = P0^3;
void move_forward();
void retreat();
void stop();
void turn_right();
void turn_left();
void speed_up();
void slow_down();
#endif
#include <reg52.h>
#include "IR_control.h"
void move_forward()
{
IN1=PWM;
IN2=0;
IN3=PWM;
IN4=0;
}
void stop()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void turn_right()
{
IN1=PWM;
IN2=0;
IN3=0;
IN4=PWM;
}
void turn__left()
{
IN1=0;
IN2=PWM;
IN3=PWM;
IN4=0;
}
#include <reg52.h>
#include "IR_control.h"
char flag;
extern bit PWM;
unsigned int counter;
void init();
void main()
{
init();
while(1)
{
if(flag==0)
{
move_forward();
}
if(flag==1)
{
stop();
}
if(flag==2)
{
turn_right();
}
if(flag==3)
{
turn_left();
}
}
}
void init()
{
counter=0;
TH0=(65536-10)/256;
TL0=(65536-10)%256;
TH1=(65536-10)/256;
TL1=(65536-10)%256;
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
flag=0;
}
void timer_0() interrupt 1
{
TR0=0;
TH0=(65536-10)/256;
TL0=(65536-10)%256;
counter++;
if(counter<30)
{
PWM=1;
}
else
PWM=0;
if(counter>=100)
{
counter=0;
}
TR0=1;
}
有两点要注意:
1、普通类型的变量用作全局变量时(在多个源文件中使用),声明定义方法:(1)在一个头文件中: extern 声明,在其他源文件中定义和使用
(2)在其中一个源文件中: extern 声明,在其他源文件中定义和使用
2、当变量类型为sbit时,要将其声明和定义
sbit IN1 = P0^0;
sbit IN2 = P0^1;
sbit IN3 = P0^2;
sbit IN4 = P0^3;
放在头文件或者对应的源文件(我这里是IR_control.c)中。
(待续)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)