版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9講多文件聯(lián)編青島科技大學王澤文件聯(lián)編多文件聯(lián)編 將相關(guān)的一組函數(shù)放在一個C文件中,并為該C文件制作可供其它功能模塊調(diào)用的頭文件(*.h)。在其它功能模塊中復用這組函數(shù)時,只需要在工程文件中添加進包含這組函數(shù)的源文件和對應頭文件即可。多文件聯(lián)編的優(yōu)點 1、代碼的可復用性 2、限定錯誤范圍,便于查找調(diào)試錯誤 3、團隊開發(fā),相互協(xié)作。預處理指令源代碼中預處理指令叫做指示字(directive)。以#開頭,在每行都是第一個非空字符。通常#都在第一列,后面緊跟著指示關(guān)鍵字。Gcc預處理程序能夠理解的指示字如下定義宏名字 #define,預處理程序會把這個宏擴展到使用該名字的位置包含 #include查找指示字列表,直到找到指定的文件,然后將文件內(nèi)容插入,就好像在文本編輯器中插入一樣判斷1 #if //為真,執(zhí)行該段代碼 #elif //為真,執(zhí)行該段代碼 #else //都不滿足,執(zhí)行該段代碼 #endif判斷2 #ifdef //若定義過某一宏,執(zhí)行該段代碼 #else //沒定已過,執(zhí)行該段代碼 #endif判斷3 #ifdefined //若定義過某一宏,執(zhí)行該段代碼 #elifdefined //定義過另一宏,執(zhí)行該段代碼 #else //否則執(zhí)行該段代碼 #endif判斷4 #ifndef //若沒定義過某一宏,執(zhí)行該段代碼 #else //否則,執(zhí)行該段代碼 #endif判斷5 #if!defined //若沒定義過該宏,執(zhí)行該段代碼 #elif!defined //若沒定義過該宏,執(zhí)行該段代碼 #else //否則,執(zhí)行該段代碼 #endif出錯 #error產(chǎn)生出錯信息,掛起預處理程序警告 #warning由預處理程序創(chuàng)建的一個警告信息連續(xù)操作符 ##可用于宏內(nèi)將兩個字符串連接成一個解除定義過的宏 #undef刪除前面用#define定義的宏調(diào)試 #line指出行號以及可能的文件名,報告給編譯程序,用于創(chuàng)建目標文件中的調(diào)試信息額外信息 #pragma提供額外信息的標準方法,可用來指出一個編譯程序或一個平臺。
防止頭文件多次包含若頭文件a.h和b.h都有以下語句#include“l(fā)cd.h”某一c文件包含頭文件#include“a.h”#include“b.h”則lcd.h被包含了兩次。為解決以上問題,頭文件lcd.h如下/********************文件lcd.h*********************************/#ifndefLCD_H#defineLCD_H //lcd.h的頭文件內(nèi)容#endif/********************文件lcd.h結(jié)束****************************/液晶顯示頭文件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 //數(shù)據(jù)寫入光標右移,AC+1#definedisp_on0x0C //顯示開#definedisp_off0x08 //顯示關(guān)#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數(shù)據(jù)端口定義#defineLCD_PORTPORTB//發(fā)送LCD數(shù)據(jù)端口#defineLCD_PINPINB//讀取LCD數(shù)據(jù)端口#defineLCD_DDRDDRB//LCD數(shù)據(jù)端口方向//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_結(jié)束液晶顯示源文件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數(shù)據(jù)引腳輸入 RS_0();RW_0(); EN_1(); LCD_PORT=cmd;_NOP();_NOP(); EN_0();}//寫LCD數(shù)據(jù)寄存器voidWrite_LCD_Data(unsignedchardat){ LCD_BUSY_WAIT(); LCD_CTRL_DDR|=(1<<PIN_RS)|(1<<PIN_RW)|(1<<PIN_EN);//設定控制端為cpu出 LCD_DDR=0xFF;//lcd數(shù)據(jù)引腳輸入 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度安置房買賣合同履約保證金協(xié)議4篇
- 2025版無紡布制品研發(fā)、生產(chǎn)與銷售合作框架合同3篇
- 二零二四年度醫(yī)療機構(gòu)與藥品生產(chǎn)企業(yè)藥品采購合同3篇
- 二零二四年美發(fā)店店員聘用協(xié)議6篇
- 2025年度個人住宅裝修工程合同風險控制范本
- 二零二五年度模具行業(yè)產(chǎn)業(yè)鏈整合與協(xié)同發(fā)展合同4篇
- 二零二五年度現(xiàn)代農(nóng)業(yè)大棚租賃與農(nóng)業(yè)大數(shù)據(jù)分析合作合同3篇
- 二零二五年度超聲科醫(yī)護人員薪酬福利合同范本4篇
- 2025年測繪項目質(zhì)量管理合同示范文本4篇
- 二零二五年度水泥攪拌車租賃與施工材料配送服務協(xié)議
- 湖北省十堰市城區(qū)2024-2025學年九年級上學期期末質(zhì)量檢測綜合物理試題(含答案)
- 2024企業(yè)答謝晚宴會務合同3篇
- 風電工程需要編寫的專項施工方案及危大工程目錄
- 商業(yè)計劃書(BP)財務計劃風險控制資本退出與附錄的撰寫秘籍
- 全國職工拔河比賽執(zhí)行方案
- 冶金廠、軋鋼廠工藝流程圖
- 七年級下冊《Reading 1 A brave young man》優(yōu)質(zhì)課教案牛津譯林版-七年級英語教案
- 中國人婚戀狀況調(diào)查報告公布
- 《木蘭詩》第1第2課時示范公開課教學PPT課件【統(tǒng)編人教版七年級語文下冊】
- GB/T 11144-2007潤滑液極壓性能測定法梯姆肯法
- 國家開發(fā)銀行
評論
0/150
提交評論