单片机-C语言-定义和申明
以下代码是单片机程序,51单片机,编译器为HT-IDE3000,
简单来说
头文件中只能申明,
变量在头文件中申明时,要加上extern 这个关键字用来告诉编译器,变量在其它的文件中定义,为什么要在头文件中申明变量?---------->因为想在其它文件里的代码中使用这些变量,
如在a.c中使用b.c里定义的变量,
enum 不是变量,是我们自己定义的数据类型,像int char 一样,只不过是我们自己定义的,所以不用加,
extern u16 g_u16TimeBaseCount;
extern u8 g_8count_2s;
extern u8 g_8count_8s;
extern u8 g_8count_18s;
extern u8 g_8count_60s;
extern u8 g_8count_200s;
extern u8 g_8count_6h;
extern u8 g_8count_200sw;//6hour wash
extern u8 g_8count_6hw;//6hour wash
extern u8 w_6hw_start;
extern u8 w_6hw_end;
extern u8 g_state;
extern u16 make_6h_count;
extern u8 g_once;
extern u16 s_c1;//中间变量
extern u16 s_c2;
extern u16 s_c3;
extern u16 s_c4; extern u8 UARTReceive;
extern u8 AD[];
extern u8 TDS[];
extern u8 count_AD;
extern u8 count_ADS;
extern u16 sumTDS_H,sumTDS_L,sum;
extern u16 temer; typedef enum GPIOPin
{
GPIO_Pin_0 = ((u8)0x01), /*!< Pin 0 selected */
GPIO_Pin_1 = ((u8)0x02), /*!< Pin 1 selected */
GPIO_Pin_2 = ((u8)0x04), /*!< Pin 2 selected */
GPIO_Pin_3 = ((u8)0x08), /*!< Pin 3 selected */
GPIO_Pin_4 = ((u8)0x10), /*!< Pin 4 selected */
GPIO_Pin_5 = ((u8)0x20), /*!< Pin 5 selected */
GPIO_Pin_6 = ((u8)0x40), /*!< Pin 6 selected */
GPIO_Pin_7 = ((u8)0x80), /*!< Pin 7 selected */
GPIO_Pin_LNib = ((u8)0x0F), /*!< Low nibble pins selected */
GPIO_Pin_HNib = ((u8)0xF0), /*!< High nibble pins selected */
GPIO_Pin_All = ((u8)0xFF) /*!< All pins selected */
}GPIO_Pin_TypeDef;
函数也在头文件中,也只能申明,不能加函数体
u8 UART_Receive();
变量和函数的实现也就是函数体,只能在源文件中定义
uFlg uF1,uF2,uF3,uF4;
u16 g_u16TimeBaseCount;
u8 g_8count_2s;
u8 g_8count_8s;
u8 g_8count_18s;
u8 g_8count_60s;
u8 g_8count_200s;
u8 g_8count_6h;
u8 g_8count_200sw;//6hour wash
u8 g_8count_6hw;//6hour wash
u8 w_6hw_start;
u8 w_6hw_end;
u8 g_state;
u16 make_6h_count;
u8 g_once;
u16 s_c1;//中间变量
u16 s_c2;
u16 s_c3;
u16 s_c4;
u8 UARTReceive=;
u8 AD[]={,,,,,};
u8 TDS[]={,,,,,};
u8 count_AD=;
u8 count_ADS=;
u16 sumTDS_H=,sumTDS_L=,sum=;
u16 temer; //===========================数据接收=========================================//
u8 UART_Receive()
{
u8 data;
if(_rxif==)//如果接收到数据
{
data=_txr_rxr;
return data;
}
}
单片机-C语言-定义和申明的更多相关文章
- 单片机C语言下LCD多级菜单的一种实现方法
摘要: 介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑.实用的程序模型. 关键词: 液晶显示屏; 多级菜单; 单片机; C 语言; LCD 中 ...
- 51单片机C语言学习笔记3: 存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...
- 51单片机C语言学习笔记6:51单片机C语言头文件及其使用
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...
- 单片机C语言中标志位的经典应用
/* 本例程是C语言的位域操作示例 这里为什么位域结构体与联合体一起使用? -->因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据 主要应用:单片机C语言 好处:用标志位可以节省R ...
- 单片机C 语言与汇编语言混合编程
在单片机应用系统设计中,过去主要采用汇编语言开发程序. 汇编语言编写的程序对单片机硬件操作很方便,编写的程序代码短,效率高,但系统设计的周期长,可读性和可移植性都很差.C语言程序开发是近年来单片机系统 ...
- 51单片机数组的定义方法(code与data的作用)
转自:http://blog.sina.com.cn/s/blog_94994f7b01010s1h.html 数组前不加“code”或“data”,则默认将数组存放在程序存储器中:code 指定数据 ...
- 单片机c语言教程:C51循环语句
单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...
- C语言和单片机C语言为什么会有差异?虽不同但理同!
许多小伙伴在学完C语言后想入门单片机,但学着学着发现明明都是C语言,为什么单片机C语言和我当初学的C语言有差异呢? 今天小编就来梳理我们平时所学的C语言与单片机C语言的有什么样的不同. 单片机c语言比 ...
- Java语言定义的线程状态分析
说到线程,一定要谈到线程状态,不同的状态说明线程正处于不同的工作机制下,不同的工作机制下某些动作可能对线程产生不同的影响. Java语言定义了6中状态,而同一时刻,线程有且仅有其中的一种状态.要获取J ...
随机推荐
- Python初学者第八天 元组和字典
8day 1.数据类型:元组 元组:有序的,不可变地数据的集合.但若包含其他可变元素,这些元素可变.显示的告诉别人,此处不可修改: a = (1,2,3,4,5,['1','a']) 2.数据类型:字 ...
- 《SQL必知必会》总结
目录 第1章 了解SQL 第2章 检索数据 第3章 排序检索数据 第4章 过滤数据 第5章 高级数据过滤 第6章 用通配符进行过滤 第7章 创建计算字段 第8章 使用数据处理函数 第9章 汇总数据 ...
- vs中ctrl+w选中智能感应的整个单词
vs中ctrl+w选中智能感应的整个单词
- html5 css3新特性了解一下
html5: 用于绘画的 canvas 元素 以及SVG 用于媒介回放的 video 和 audio 元素 拖拽(Drag 和 drop) 地理定位(Geolocation) 对本地离线存储的更好的支 ...
- js实现抛物线运动 兼容IE低版本(转)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 使用View填充ViewPager
ViewPager在app开发中十分常见.今天以一个例子详细解读下ViewPager的基础知识. 一.什么是ViewPager 可以这样理解,ViewPager就相当于一个容器,它的里面可以装view ...
- MVVM的核心:双向绑定
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致. 唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewMod ...
- 调整home和根分区大小
目标:将VolGroup-lv_home缩小到100G,并将剩余的空间添加给VolGroup-lv_root ============================================= ...
- sourcetree创建分支与分支合并
一.Sourcetree简单介绍 通过Git可以进行对项目的版本管理,但是如果直接使用Git的软件会比较麻烦,因为是通过一条一条命令进行操作的. Sourcetree则可以与Git结合,提供图形界面 ...
- Charles Proxy v4.1.3 Mac、Win64、Win32破解版
http://charles.iiilab.com/ 1. 下载Charles Proxy 4.1.3版本,百度云盘下载 或 去官网下载 2. 安装后先打开Charles一次(Windows版可以忽略 ...