初步认识51单片机-2.4单片机C语言模块化编程

发布者:cangart最新更新时间:2016-03-29 来源: eefocus关键字:51单片机  C语言  模块化编程 手机看文章 扫描二维码
随时随地手机看文章
2.2单片机C语言模块化编程

这里插入一节,讲讲单片机C语言的模块化编程。什么叫做模块化编程。前面我们写的代码全部在led.c文件中,试想一下,如果代码过多,怎么阅读。另外与你合作的人如何看懂你的代码。简单的讲,没有可读性和移植性。模块化编程就是为了解决这个问题。当一个工程量比较大时,我们会把这个工程分成一段一段的任务,每个人完成不同段的任务。同时每个段之间是有联系的。假设开发人员A需要条用B的某个功能模块,那么A只要关注模块的功能和如何调用就行了,至于这个功能是如何实现的,可以不用理会。另外,对于单个人员开发完某个工程,下一个工程可能需要同样的功能模块,同样只需要知道如何调用该模块就可以了,无需再去研究该段代码实现功能的过程。还有一个工程如果过大,出现了错误,不容易排查错误。但是按照一个一个模块的思路来排查,思路就显得更清晰。

下面我们来看看如何建立单片机C语言模块化编程

(1)打开Keil软件,Project->New uVersion Project

打开led文件夹,在file name中输入led并保存

(2)选择单片机型号,前面讲过不罗嗦

(3)弹出一个对话框,选择yes

(4)新建一个空白文件或者使用ctrl+N,然后保存(ctrl+S),取名为src

然后双击src文件夹,在file name中输入main.c并保存。

在main.c中输入以下程序:

  • #include
  • void main(void)
  • {
  • }
  • 然后保存

(5)点击project->options for Target ‘target 1’…   

 

  •  

(6)在target中,选择晶振为11.0592

(7)然后点击output, 勾选Creat HEX File,然后点击Select Folder for Objects…

(8)此时会弹出一个对话框,新建一个文件夹并取名为output,然后双击output文件夹,点击确定

(9)然后点击Listing,之后点击Select Folder for listings

(10)在弹出的对话框中双击output,点击ok,再次点击ok.

(11)回到主界面,右键单击source group, 选择add files to group”sourcegroup1”…

(12)在弹出的对话框中双击src,点击main.c,再点击Add,然后点击close

(13)src文件夹中存放源码,当我们点击编译时,输出相关的文件会存放在output中

(14)现在我们新建四个文件,led.c,led.h,delay.c,delay.h. 我们把前面写的程序分成三个模块,main.c部分,led.c部分,delay.c延时部分. 如何新建这些文件,同样的,点击创建空白文件(ctrl+N),然后保存(ctrl+S),将保存路径选择在src文件夹中,如果要建立led.c,则filename为led.c,如果要建立led.h,则filename为led.h

(15)建好这四个文件后,在led.c中输入如下内容:

  • #include
  • sbit LED = P1^0;
  • void ledON(void)
  • {
  •         LED =0;
  • }
  • void ledOFF(void)
  • {
  •         LED=1;
  • }

复制代码

然后点击保存。

在led.h中输入

  • #ifndef _LED_H_
  • #define _LED_H_
  • extern void ledON(void);
  • extern void ledOFF(void);
  • #endif

复制代码

在delay.c中输入,

  • unsigned int i;
  • void delay(void)
  • {
  •         for(i=0;i<30000;i++);
  • }

复制代码

在delay.h中输入:

  • #ifndef _DELAY_H_
  • #define _DELAY_H_
  • extern void delay(void);
  • #endif

复制代码

在main.c中输入:

  • #include
  • #include "delay.h"
  • #include "led.h"
  • void main(void)
  • {
  •           while(1)
  •           {
  •                   ledON();
  •                 delay();
  •                 ledOFF();
  •                 delay();
  •           }
  • }

复制代码

(16)添加led.c,delay.c文件

(17)点击编译,检查错误,完成。

关键字:51单片机  C语言  模块化编程 引用地址:初步认识51单片机-2.4单片机C语言模块化编程

上一篇:51单片机之寄存器-3.1单片机定时器
下一篇:初步认识51单片机-2.3单片机控制DS18B20温度传感器模块

推荐阅读最新更新时间:2024-03-16 14:48

基于51单片机的低功耗甲烷检测系统设计方案
1引言   气体检测系统表是工矿企业、社会公用事业、环境保护等领域必备的安全装备。经过几十年的发展,在可测气体种类、测量范围、精度、稳定性、寿命等主要技术指标方面均有明显提高,随着大规模集成电路技术的发展,仪表向微型化、多参数组合与智能化方向发展。新型甲烷气体检测系统应具有智能化的特点,能在一定其他气体干扰的情况下工作,可以采用电子鼻。系统的结构,通过模式识别方法辨识甲烷气体。以小型化的电子鼻系统为基础的甲烷气体检测系统,在设计上应考虑减小系统的体积、简化气体的进样装置和改进电路以满足低功耗要求等问题;另外便携式检测系统的操作者通常情况下是现场人员,属于非专业人员,系统的操作不能复杂,因此对于系统的人机交互功能在设计上也应得到重
[单片机]
基于<font color='red'>51单片机</font>的低功耗甲烷检测系统设计方案
51单片机还适合作为初学者入门的单片机吗?
对于很多初学者来说考虑要不要从51单片机入门是个挺头疼的问题。毕竟现在许多公司已经不用51单片机做产品了。但是51单片机流行了这么久,它肯定是一款很经典的产品。我以前也是从51开始学的。 我个人的建议是从51单片机作为入门是一个非常不错的选择。大多数的从业者都是以51单片机作为起点的。下面就具体说说我推荐51作为入门的具体原因。 容易入门 我们作为初学者脑海里可能没有单片机的概念,如果我们入门以STM32或者STM8S这类单片机来入门的话,作为初学者我们会感到迷茫无从下手。STM32这类的单片机内容会比较多,一开始就要了解单片机的方向寄存器还要了解单片机的数据寄存器,甚至还有库函数,太多的知识涌入进来,一时间让初学
[单片机]
51单片机教程(三):单片机串口通信实例
简介:上讲介绍并应用了单片机内部定时器和中断,并给出了实例。这一讲将介绍单片机上的串口通信。通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个
[单片机]
<font color='red'>51单片机</font>教程(三):单片机串口通信实例
51单片机总线时序与编址技术
一、总线概述   计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。   二、单片机的三总线结构   51 系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k( 2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU 通过地址选择访问的对象,完成与各对象之间的信息传递。   单片机三总线扩展示意如图1 所示。     1、数据总线   51 单片机的数据总线为P0 口,P0 口为双向数据通道,CPU 从P0 口送出和读回数据。   2、地址总线   51 系列单片机的地址总线
[模拟电子]
51单片机中断控制寄存器
51单片机中断控制寄存器有4个:TCON(定时器控制寄存器),SCON(串行口控制寄存器),IE(中断允许控制寄存器),IP(中断优先级控制寄存器)。 51单片机中断系统: TCON(定时器控制寄存器): IE(中断允许控制寄存器): IP(中断优先级控制寄存器): SCON(串行口控制寄存器): TMOD(定时计数器工作方式控制寄存器):
[单片机]
<font color='red'>51单片机</font>中断控制寄存器
89C51单片机16位数据传送指令的执行过程
16位数据传送指令(1条) 这是89C51单片机唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入数据指针DPTR中去。其中高8位送入DPH,低8位送入DPL。 MOV DPTR,#data16;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL 例如:MOV DPTR,#2345 则执行完程序后,DPL中的值为23,DPL中的值为45。
[单片机]
89C<font color='red'>51单片机</font>16位数据传送指令的执行过程
Solid Sands和台湾汉芝电子强强联合
Solid Sands和台湾汉芝电子强强联合,通过高性能C语言编译器加速MCU微控制单元创新 C和C++编译器与库测试及认证领域的全球领导者Solid Sands 近日宣布,家用微控制器和安全 IC 的创造者——台湾汉芝电子已在其下一代微控制单元(MCU)编译器设计中采用了 SuperTest 编译器测试和验证技术。 汉芝电子主要为物联网、工业自动化、智能家居和消费电子等安全密集型、高增长细分市场提供MCU技术 ,目前已向市场交付了超过了1亿颗芯片。汉芝电子将使用SuperTest来确保这些微控制器的编译器达到最高质量水平。SuperTest可支持实现独立嵌入式C语言, 为汉芝电子创新的微控制器和安全 ASIC 提供
[嵌入式]
Solid Sands和台湾汉芝电子强强联合
基于51单片机的锅炉水位温度压力检测系统仿真设计
仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0056 1.主要功能: 基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用) 1.系统实时通过LCD1602显示水位检测值,锅炉炉膛温度值,锅炉内部压力值。 2、可对锅炉的水位上下限、炉膛温度上下限、压力上下限进行设置,第一行显示上限值,第二行显示下限值。 3、如果水位、温度、压力过限则蜂鸣器报警,通过LED指示报警类型。 4、默认水位下限值10cm,上限值40cm,压力下限值30kPa,压力上限值50kPa,温度下限值5℃,温度上限值105℃。 5、温
[单片机]
基于<font color='red'>51单片机</font>的锅炉水位温度压力检测系统仿真设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved