找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3744|回复: 9
打印 上一主题 下一主题
收起左侧

代码管理技巧分享

  [复制链接]
跳转到指定楼层
楼主
ID:284866 发表于 2018-8-21 11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己总结的一些单片机代码管理技巧,希望对新手有一定的帮助,本来是写给同班同学看的,现在共享出来啦

今天看到某位同学的单片机代码,工程很大,包括 LCD、矩阵键盘+独立按键扫描、红外解码 等等全放在 main.c 文件里,上千行的代码,着实看着头晕。
不知道单片机实习的老师有没有教大家这种大工程的代码管理技巧,如果没讲或者讲了

但是没听明白,可以借此文档学习一番,简单而且实用。 代码管理示例如下:


基础管理:


1:工程目录,第一级只有一个文件夹 AT89C51,第二级可以有多个,这里我只有一个
(因为 51 的工程不需要太多的文件),第三级就是每个文件夹里面包含的源文件(.c),可 以看到第三级前面有加号,点开会有第四级,是各个源文件所包含的头文件(.h),看到这 里如果觉得头晕可以忽略此条。
2:此处后面详细解释。
3:选项卡,每个点开的源文件和头文件都可以在此处点击选择查看,右击可以选择
close。
4:在每个源文件里如果想调用其他源文件里的函数,包含其对应头文件即可。

如何实现:
将各个模块比如键盘扫描、LCD 液晶等等分别写在各个源文件里,分开管理方便得多, 比如 LCD 驱动的源代码,示例如下
Lcd.c
源函数都写在源文件里,这个很好理解,毋庸赘言.



Lcd.h
在头文件里将对应源文件里的函数都声明一遍

1、lcd.c 和 lcd.h 必须都要取一样的名字 lcd 吗? 可以不同,但是为了调用方便最好一样
2、头文件里的
#ifndef LCD_H
#define LCD_H
#endif              可以不要吗?
可以,但是为了不重复包含最好加上(LCD_H 可以多加些下划线,这样取名只是 为了防止重复)


3、还可以在源文件里声明一些变量,然后在对应的头文件里用 extern 声明这些变量(包 含但不限于各种类型变量、数组、结构体),
如果想用这些变量和函数只需要包含这个头文件就可以直接使用啦!



以上就是一些代码管理的一些基础要点,初次看起来可能会觉得比较麻烦,但是多做一
两次之后就会其实很简单,熟练之后管理代码会极为方便。 有不清楚的欢迎咨询


下面讲一些进阶的代码管理,有兴趣的可以继续看下去: 第一张图里的 2 处,点开后如下:

可以发现这就是这个工程的各级目录,前两级目录可以通过点击箭头所指的虚线框新 建,第三级可以点 Add Files 来添加
一般 1 所处的地方只有一个文件夹,但是,如果有两个工程绝大多数文件都是相同的, 只有个别文件不同,这样我们就可以将这两个工程合二为一,或者说合多为一,在 2 处新建
一个文件夹 AT89C52,建了之后会发现其包含的文件与最初的那个是完全一样的,这时我 们需要去掉那些这个工程里不需要的文件(注意不是直接remove,如果直接移除的话俩工 程里都移除了)
Keil4 里的操作:比如我们不想要下面的 lcd.c,右击选择第一个 Options

出现如下画面
将 include in target build 勾选掉,也就是去掉前面的勾勾

点击 OK 即可,keil4 里会出现如下样式


Keil5 里的操作,与 keil4 一样,右击不需要的源文件选择 Options,将 include in target build
勾选掉,只是在工程目录里的显示样式不一样


最后讲一下,在建了一个包含两个工程的工程(好像有点矛盾?)之后会发现工程目录 里面只有一个工程的目录(好像有点难懂,见下图)

可以看到只有一个 AT89C51


如果我们想切换到 AT89C52 该如何做呢

点击箭头所指之处就可以啦

Keil5 亦是一样

写在最后: 如有错误之处欢迎点出批评指正; 在使用过程中还是有有疑问的小伙伴欢迎一起讨论哟!

完整的pdf格式文档51黑下载地址:
代码管理技巧.pdf (447.32 KB, 下载次数: 54)


评分

参与人数 2黑币 +62 收起 理由
tieq1952 + 12 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏12 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-8-22 02:21 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:386381 发表于 2018-8-22 07:19 来自手机 | 只看该作者
非常实用的好资料谢谢楼主分享
回复

使用道具 举报

地板
ID:46999 发表于 2018-8-22 07:27 | 只看该作者
好资料,有很高的参考价值。
回复

使用道具 举报

5#
ID:328121 发表于 2018-8-22 08:24 | 只看该作者
有帮助,谢谢
回复

使用道具 举报

6#
ID:253767 发表于 2018-8-22 09:03 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

7#
ID:499701 发表于 2019-7-5 13:15 | 只看该作者
这个技巧很实用,谢谢分享
回复

使用道具 举报

8#
ID:307020 发表于 2019-7-6 18:09 | 只看该作者
谢谢楼主分享,模块化管理的技巧
回复

使用道具 举报

9#
ID:689425 发表于 2023-8-13 10:44 | 只看该作者
好好好,模块化管理方便整洁,可以减少很多工作量
回复

使用道具 举报

10#
ID:433219 发表于 2023-8-16 09:45 | 只看该作者
mcu一般都是一人全包,,,涉及到多人协作写程序的,互相调用的就繁琐了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表