STM32学习笔记2021-9-22【预热课程学习】

本文介绍了一种将C51单片机的IO口电平切换功能模块化的实现方法,通过创建独立的.h和.c文件来提高代码的可读性和可维护性。文章详细展示了如何编写和组织这些文件,以及如何在main.c中调用它们。

目录

整理工程:

建立.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用来进行顶层应用设计

其它.c和.h用来进行底层应用设计

此时的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即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值