




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9讲多文件联编青岛科技大学王泽文件联编多文件联编 将相关的一组函数放在一个C文件中,并为该C文件制作可供其它功能模块调用的头文件(*.h)。在其它功能模块中复用这组函数时,只需要在工程文件中添加进包含这组函数的源文件和对应头文件即可。多文件联编的优点 1、代码的可复用性 2、限定错误范围,便于查找调试错误 3、团队开发,相互协作。预处理指令源代码中预处理指令叫做指示字(directive)。以#开头,在每行都是第一个非空字符。通常#都在第一列,后面紧跟着指示关键字。Gcc预处理程序能够理解的指示字如下定义宏名字 #define,预处理程序会把这个宏扩展到使用该名字的位置包含 #include查找指示字列表,直到找到指定的文件,然后将文件内容插入,就好像在文本编辑器中插入一样判断1 #if //为真,执行该段代码 #elif //为真,执行该段代码 #else //都不满足,执行该段代码 #endif判断2 #ifdef //若定义过某一宏,执行该段代码 #else //没定已过,执行该段代码 #endif判断3 #ifdefined //若定义过某一宏,执行该段代码 #elifdefined //定义过另一宏,执行该段代码 #else //否则执行该段代码 #endif判断4 #ifndef //若没定义过某一宏,执行该段代码 #else //否则,执行该段代码 #endif判断5 #if!defined //若没定义过该宏,执行该段代码 #elif!defined //若没定义过该宏,执行该段代码 #else //否则,执行该段代码 #endif出错 #error产生出错信息,挂起预处理程序警告 #warning由预处理程序创建的一个警告信息连续操作符 ##可用于宏内将两个字符串连接成一个解除定义过的宏 #undef删除前面用#define定义的宏调试 #line指出行号以及可能的文件名,报告给编译程序,用于创建目标文件中的调试信息额外信息 #pragma提供额外信息的标准方法,可用来指出一个编译程序或一个平台。
防止头文件多次包含若头文件a.h和b.h都有以下语句#include“lcd.h”某一c文件包含头文件#include“a.h”#include“b.h”则lcd.h被包含了两次。为解决以上问题,头文件lcd.h如下/********************文件lcd.h*********************************/#ifndefLCD_H#defineLCD_H //lcd.h的头文件内容#endif/********************文件lcd.h结束****************************/液晶显示头文件lcd.h#ifndef_LCD_H_#define_LCD_H_1#include<avr/io.h>#ifndef_NOP# define_NOP()__asm____volatile__("nop"::)#endif/******************************************************************************/// LCD定义/******************************************************************************///LCD1602写指令;#defineclear_scr0x01 //清屏#definecursor_return0x02 //光标回左上角#definedata_cur_right0x06 //数据写入光标右移,AC+1#definedisp_on0x0C //显示开#definedisp_off0x08 //显示关#definecursor_right0x14 //整体显示,光标右移,AC+1#definedisp_line0x38 //两行显示,5*7点阵//LCD控制端口定义#defineLCD_CTRL_PORTPORTC#defineLCD_CTRL_DDRDDRC //LCD控制端口针定义#definePIN_RSPC0 //RS针连接定义#definePIN_RWPC1//RW针连接定义#definePIN_ENPC2//EN针连接定义//LCD数据端口定义#defineLCD_PORTPORTB//发送LCD数据端口#defineLCD_PINPINB//读取LCD数据端口#defineLCD_DDRDDRB//LCD数据端口方向//LCD控制功能定义#defineRS_0()LCD_CTRL_PORT&=~(1<<PIN_RS)//0xFE#defineRS_1()LCD_CTRL_PORT|=(1<<PIN_RS)//0x01#defineRW_0()LCD_CTRL_PORT&=~(1<<PIN_RW)//0xFD#defineRW_1()LCD_CTRL_PORT|=(1<<PIN_RW)//0x02#defineEN_0()LCD_CTRL_PORT&=~(1<<PIN_EN)//0xFB#defineEN_1()LCD_CTRL_PORT|=(1<<PIN_EN)//0x04externvoidLCD_BUSY_WAIT();externvoidWrite_LCD_Comm(unsignedcharcmd);externvoidWrite_LCD_Data(unsignedchardat);externvoidinitLcd();externunsignedcharLCD_ShowChar(chars,unsignedcharcDDRAM);externvoidLCD_ShowStr(char*str,unsignedcharcDDRAM);externvoiddivData(intx,intiPoint,char*cDisp_Buff,intiLen_Buff);#endif//_LCD_H_结束液晶显示源文件lcd.c#include<avr/io.h>#include<string.h>#include<math.h>#include<stdlib.h>#include"lcd.h"/******************************************************************************///-------------------LCD程序-----------------------/******************************************************************************///LCD忙等待voidLCD_BUSY_WAIT(){ LCD_CTRL_DDR|=(1<<PIN_RS)|(1<<PIN_RW)|(1<<PIN_EN);//设定控制端三引脚为出 LCD_PORT=0xFF;LCD_DDR=0x00;//上拉输出 RS_0();RW_1();EN_1(); _NOP();_NOP();_NOP();
while(LCD_PIN&0x80); EN_0();}//写LCD命令寄存器voidWrite_LCD_Comm(unsignedcharcmd){ LCD_BUSY_WAIT(); LCD_CTRL_DDR|=(1<<PIN_RS)|(1<<PIN_RW)|(1<<PIN_EN);//设定控制端为cpu出 LCD_DDR=0xFF;//lcd数据引脚输入 RS_0();RW_0(); EN_1(); LCD_PORT=cmd;_NOP();_NOP(); EN_0();}//写LCD数据寄存器voidWrite_LCD_Data(unsignedchardat){ LCD_BUSY_WAIT(); LCD_CTRL_DDR|=(1<<PIN_RS)|(1<<PIN_RW)|(1<<PIN_EN);//设定控制端为cpu出 LCD_DDR=0xFF;//lcd数据引脚输入 RS_1();RW_0(); EN_1(); LCD_PORT=dat;_NOP();_NOP(); EN_0();}//LCD初始化voidinitLcd(){ Write_LCD_Comm(disp_line); Write_LCD_Comm(clear_scr); Write_LCD_Comm(data_cur_right); Write_LCD_Comm(disp_on); }//写字符到cDDRAM指定的地址,并返回下一个地址。unsignedcharLCD_ShowCha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/GDAC 1-2024顶墙用铝型材
- T/CACE 0129-2024竹编安全帽
- T/CGAS 033-2024物联网智能燃气表数据安全规范
- 房地产ERP软件使用许可合同4篇
- T/CHTS 10158-2024公路跨海桥梁风-浪-流耦合作用指南
- 公司注册商标出让合同书5篇
- 抵押保证借款合同范本一2篇
- 道路关键工程综合施工合同3篇
- 血管栓塞剂及栓塞材料项目绩效评估报告
- 新生儿骨折查房要点解析
- 悬挑脚手架及卸料平台监理旁站记录表
- 神志病中西医结合临床诊疗指南-精神分裂症
- 人教部编版六年级语文下册第五单元(教案)
- 国有企业经济责任审计工作方案-全套
- 马拉松安保方案
- MOOC 电工学-西北工业大学 中国大学慕课答案
- 口腔科普馆建设方案
- 2024年全国高考物理电学实验真题(附答案)
- 景区物业服务项目管理制度和考核办法
- 儿童保健科出科规培小结
- 居民议事能力提升培训课件
评论
0/150
提交评论