单片机-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初学者第二天 用户输入和注释
2day Python基础语法: 1.用户输入和注释 用户输入: 代码注释:# 注释部分不会被执行,或用来帮助理清代码逻辑 2.数据类型:数字 int:整数 long:长整形 注:Pyt ...
- AutoHotkey使用Excel的Com对象可能导致进程残留问题的原因及解决方案
在AutoHotkey脚本中,对Excel的应用体验很不错,xl := ComObjActive("Excel.Application")就和当前Excel表连接了, 通过xl变量 ...
- Win10安装msi程序报错2503和2502错误解决方案
刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...
- 如何理解 Learning to rank
转:http://hi.baidu.com/christole/item/23215e364d8418f896f88deb What is Rank? rank就是排序.IR中需要排序的问题很多,最常 ...
- AngularJs学习笔记--Understanding the Model Component
原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model 在angular文档讨论的上下文中,术语“model”可以 ...
- C/C++心得-从内存开始
因工作与自身各方面需要,开始重新学C,其实说重新也不太准,原来只是大学里面接触过,且还未得多少精髓就转其他开发,不过也正是因此才有了重新学习的必要,基础部分的心得将通过博文记录下来,对于初学者应该有些 ...
- mysql 设置无密码登陆
登入 MySQL 报错: C:\Users\dell>mysql -uroot -p Enter password: **** ERROR 1045 (28000): Access denied ...
- 开关WI-Fi显示列表
实现效果: 使用方法: Show-NetList #显示Wi-Fi列表 Show-NetList -off #关闭显示 (如图) 实现代码: function Show-NetList { P ...
- es6之类与对象
一.类的定义 class Parent{ constructor(name="mukewang"){ this.name=name; } } let v_parant=new Pa ...
- 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)
洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...