历史上的今天
返回首页

历史上的今天

今天是:2025年08月20日(星期三)

正在发生

2021年08月20日 | 51单片机-多文件编写

2021-08-20 来源:eefocus

为了与主流的编程素养接轨,我们本章讲解如何书写简洁并且高效率的代码以及首次运用多文件编程。多文件的作用是方便编写大程序时更加的模块化,那么至于原理,头文件包含关系等这些知识还需读者自己再多多补补C语言知识了。

 

1.多文件的优势

运用多文件编程是为了使我们教程无需每次都贴出相同功能的代码,像第一阶段最后的一个例程,已经有很多代码完全可以前往以前的例程里复制即可,笔者也是考虑到一开始我们都是从单个“.c”文件入门单片机编程,所以之前的例程都是提供完整的代码给大家方便复制移植到自己的单个“.c”工程文件中。


可后期的例程里我们的代码量越来越大,显然全部给出就不合适了,所以我们把经常使用的功能模块代码封装起来放在另一个“.c”文件里提供给我们调用,这个“.c”文件命名为“function.c”。以后我们提供的代码就是“main.c”的内容,这样教程供给的代码数量就会精简一些。

 

2.typedef

第一阶段里我们的代码有一部分可以再简化的,比如unsigned int的定义,我们用“typedef unsigned int u16;”声明,u16就是用一个更简洁的名字来取代“unsigned int”去定义16位的变量。


用“typedef unsigned char u8;”的话,u8就是用来定义8位的变量,或者像之前定义的数组也可以像这样

“u8 LEDSET[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};”去定义。

那么有时需要定义32位的变量,就用“typedef unsigned long u32;”即可。

虽然#define与typedef的作用有点意思相近,但“#define u16 unsigned int”是不严谨的编写习惯,不建议这样使用,原因大家可上网了解。

 

3.准备工作

首次讲解多文件编程,这里大家跟着步骤来做。

新建一个“.c”文件,命名为“function.c”后保存。

6.01.png?imageView2/2/w/550 


再新建一个“function.h”

6.02.png?imageView2/2/w/550


双击“Source Group 1”添加文件进去

6.03.png?imageView2/2/w/550


在“function.h”先添加如下内容:

1
2
3
4
5
6
7
8
9
#ifndef __FUNCTION_H__
#define __FUNCTION_H__
  
typedef unsigned char  u8;//对数据类型进行声明定义
typedef unsigned int  u16;
typedef unsigned long u32;
  
  
#endif

6.04.png?imageView2/2/w/550

后续工作我们下一讲再讲解。


推荐阅读

史海拾趣

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

自1964年起,CDIL便踏上了半导体制造的先驱之路。当时,电子产业正处于蓬勃发展的初期,CDIL凭借对技术的敏锐洞察和不懈追求,迅速成为印度乃至全球半导体制造领域的佼佼者。其硅芯片和器件的制造质量和技术水平均达到了世界级标准,为印度电子产业的发展奠定了坚实基础。

ABB公司的发展小趣事

CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。

Franz Binder GmbH & Co公司的发展小趣事

CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。

台湾致强(FORT)公司的发展小趣事

在追求企业发展的同时,致强科技始终不忘对环境的责任。公司积极响应环保法规要求,将环保理念融入产品研发、生产和销售的各个环节。通过采用环保材料、优化生产流程、实施节能减排等措施,致强科技有效降低了产品对环境的负面影响。此外,公司还定期评估并符合最新的环保法规要求,确保企业与消费者的价值观和环境保护目标相一致。

天二科技(EVER OHMS)公司的发展小趣事

天二科技(EVER OHMS)于1988年正式成立,其初创团队便专注于电阻器领域的研发与制造。面对当时电子行业的激烈竞争,天二科技凭借对电阻器技术的深入理解,成功开发出多款高性能、高精度的电阻器产品,迅速在市场中崭露头角。这些产品不仅满足了当时市场的需求,更为公司后续的发展奠定了坚实的基础。

ACT [Advanced Crystal Technology]公司的发展小趣事

面对不断变化的市场需求和技术挑战,天二科技始终坚持持续创新和客户至上的经营理念。公司与客户保持紧密合作,深入了解客户的需求和反馈,不断推出符合市场需求的新产品和解决方案。同时,天二科技还注重培养员工的创新意识和能力,鼓励员工积极参与技术创新和研发工作。这种持续创新和客户至上的经营理念使得天二科技在电子行业中始终保持领先地位。

问答坊 | AI 解惑

反汇编器

反汇编器快来下啊…

查看全部问答>

逻辑分析仪基础简介

摘要:本文介绍了逻辑分析仪的基本概念、历史由来与发展、基本分类、技术指标和基本功能等等,并且介绍了逻辑分析仪和示波器的区别与联系,通过这些介绍了逻辑分析仪的基础知识。     关键词:定时分析  状态分析   ...…

查看全部问答>

请教 TMS320C5509与LCD的接线图

跪求 TMS320C5509与LCD的接线图,并且我想使用TMS320C5509做图像采集,采集的图像精度为352X288,请求摄像头与TMS320C5509的接线图…

查看全部问答>

新手请教MC3000问题

在MC3000中我用的是VS2003开发C# 怎么才能屏蔽掉设备自带的扫描音? 然后根据程序判断后来发出我想要的声音( 这步已经实现)…

查看全部问答>

☆☆☆☆美国讯升科技急急急急急急急急急急聘Linux/Uinux 下C++工程师☆☆☆☆☆

☆☆☆☆美国讯升科技急急急急急急急急急急聘Linux/Uinux 下C++工程师☆☆☆☆☆ 请严格符合以下条件者请投简历到:bzhang@comrise.com,并注明应聘职位及招聘信息来源于天涯论坛。 一:手机应用软件开发工程师 Qualifications A: 手机应用软件 ...…

查看全部问答>

请问各位过来人IC封装测试是干什么的呢

    最近找工作,请问大家“IC封装测试”是干什么的呢? 主要是以下几个问题,谢谢了哈 1.工作的主要内容是什么的呢? 2.工作的前景如何,以后发展方向主要是怎样的呢? 3.行业的待遇具体怎么样呢?  …

查看全部问答>

更新IV:FirmwareLib在EK_STM32F上的学习体会(I2C/IWDG)

继续,上一贴是:更新III:Firmware Lib在EK_STM32F上的学习体会(FLASH/GPIO)再早的几个帖子链接可以在上一贴内找,就不一个一个列出来了,等全系列结束了来个总集。-----------------------I2C分隔线-----------------------------------Exem ...…

查看全部问答>

奇怪的串口接收,请教。。。

我是刚刚接触stm8 自己焊了块板 今天调试串口就是不行,可以接收到但是是乱码 我用的是它官方的固件库 下面是例程 /*********************/ #include "stm8s.h" #include "stdio.h" main() {       &nb ...…

查看全部问答>

MSP430F449的时钟问题

msp430F449的时钟最高可以40MHZ,请问下这个40MHZ是外接40MHZ晶振实现,还是编程实现?单片机频率40MHZ除了功耗大,还有什么负面影响吗? 还有 我软件变成只能将XT2上的8M时钟作为MCLK,请问怎样编程实现40MHZ的F449的MCLK频率??…

查看全部问答>