




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025勞務派遣合同協議書范本
- 護理倫理畢業答辯
- 常見癥狀護理之頭暈護理
- 湖北省武漢市江岸區七校2024-2025學年高一下學期4月期中生物試題 含答案
- 婦科常規護理體系構建
- 2025年低血鉀知識試題
- 湖南省湘一名校聯盟2024-2025學年高一下學期4月期中地理試題(原卷版)
- 山東省濟寧市2025年高考模擬考試歷史試題及答案(濟寧三模)
- 浙江省衢州市五校聯盟2024-2025學年高二下學期期中聯考歷史試題(含答案)
- 物流和快遞合作協議
- 2023-2024學年四年級數學下學期開學摸底考試(A4版)(人教版)
- 2025年湖北省各市(州、區)供電服務有限公司招聘筆試參考題庫含答案解析
- 私人合同協議書模板
- 神經鞘瘤MRI診斷要點及鑒別診斷課件
- 2025年河北高考地理模擬預測試卷(含答案解析)
- 120個常見文言實詞例釋-高考語文考前復習速記清單
- T-CEPPEA 5002-2019 電力建設項目工程總承包管理規范
- GA 1812.2-2024銀行系統反恐怖防范要求第2部分:數據中心
- 2025年端午節撞上兒童節活動方案
- 法治護航成長路-四年級法制教育專題
- 電工技能培訓課件下載
評論
0/150
提交評論