目录
整理工程:
建立.h头文件和.c源文件
?编写Toggle.h
?编写Toggle.c
?尾声
整理工程:
简介:把各个不同模块的代码放在不同的.c文件内,并在.h文件里提供外部函数的声明,可以使main.c的代码更加简洁,提高了可阅读性可维护性,也方便了以后工程的调用。
本文以基于C51的源码为例
以下是一段切换任意IO口高低电平使用在C51上的代码:
#include <regx52.h>
void delay(unsigned int i)
{
while(i--);
}
//枚举型
typedef enum
{
Port0,Port1,Port2,Port3
}Port_x;
typedef enum
{
Pin0,Pin1,Pin2,Pin3,Pin4,Pin5,Pin6,Pin7
}Pin_x;
void IO_Out_Toggle(Port_x port,Pin_x pin);
void main()
{
while(1)
{
IO_Out_Toggle(Port3,Pin0);
delay(500);
}
}
//函数功能:切换任意的一个引脚输出"高/低"电平
//port:(0~3)表示的是P0~P3的端口
//pin:(0~7)表示的是0~7的引脚
void IO_Out_Toggle(Port_x port,Pin_x pin)
{
switch(port)
{
case Port0: P0 ^= (0x01<<pin);
break;
case Port1: P1 ^= (0x01<<pin);
break;
case Port2: P2 ^= (0x01<<pin);
break;
case Port3: P3 ^= (0x01<<pin);
break;
}
}
将其归类整理
建立.h头文件和.c源文件
新建文件如图所示
?
?编写Toggle.h
作用:提供外部函数的声明
#ifndef __Toggle_H__
#define __Toggle_H__
typedef enum
{
Port0,Port1,Port2,Port3
}Port_x;
typedef enum
{
Pin0,Pin1,Pin2,Pin3,Pin4,Pin5,Pin6,Pin7
}Pin_x;
void IO_Out_Toggle(Port_x port,Pin_x pin);
#endif
?编写Toggle.c
#include <regx52.h>
#include <Toggle.h>//调用枚举
//函数功能:切换任意的一个引脚输出"高/低"电平
//port:(0~3)表示的是P0~P3的端口
//pin:(0~7)表示的是0~7的引脚
void IO_Out_Toggle(Port_x port,Pin_x pin)
{
switch(port)
{
case Port0: P0 ^= (0x01<<pin);
break;
case Port1: P1 ^= (0x01<<pin);
break;
case Port2: P2 ^= (0x01<<pin);
break;
case Port3: P3 ^= (0x01<<pin);
break;
}
}
?尾声
此时的main.c可简化为
#include <regx52.h>
#include <Toggle.h>
void delay(unsigned int i)
{
while(i--);
}
void main()
{
while(1)
{
IO_Out_Toggle(Port3,Pin0);
delay(500);
}
}
以后在其它工程中需要使用IO口电平切换时只需要在工程内添加Toggle.h,Toggle.c并在主函数内调用.h即可。
|