在多次用到某些代码块或者某些模块的时候我们可以将这些代码块或模块放入一个头文件中,这样当我们再次使用这些代码的时候就直接引用头文件就可以了。从而避免了繁琐的代码。比如搞一个LCD_1602显示红外接收的信号,主要是将LCD_1602的函数模块放入头文件中
接下来总结步骤:
1:建立一个新文件,放入代码所在目录下,命名后缀.h
如创立一个LCD_1602操作的头文件lcd.h 加入必要的宏定义和函数声明。#ifndef
意思是如果没有定义lcd.h情况下执行,对应着下文的#endif
.
#ifndef __LCD_H_
#define __LCD_H_
#ifndef uint
#define uint unsigned int
#endif
/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c); //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat) ;
/*LCD1602初始化子程序*/
void LcdInit();
#endif
2.再创立一个文件 与头文件同名后缀.c
引用之前的头文件
#include"lcd.h"
/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数,延时1ms
* 输 入 : c
* 输 出 : 无
* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输