日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机c语言模块化实例程序设计,单片机C语言模块化设计

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机c语言模块化实例程序设计,单片机C语言模块化设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:單片機C語言模塊化設計

keil中實現 模塊化編程.doc

在使用 KEIL 的時候,我們習慣上在一個.c 的文件中把自己要寫的東西按照

自己思路的順序進行順序書寫。這樣是很普遍的寫法,當程序比較短的時候比如

幾十行或者一百多行,是沒有什么問題的。但是當程序很長的時候,比如你要用

到 LCD 顯示數據,就有幾個 LCD 相關的函數,然后你想在 LCD 上顯示溫度,那么

就要有 DS18B20 相關的操作,這又有幾個相關的函數, 如果你還想加上去 DS1302

的時間顯示功能,那么又要多很多函數。這樣的話一個程序下來幾百行是很正常

的事情,對于自己寫的程序可能在自己的腦海中比較清晰,不會太亂,但是當把

自己寫的程序交給別人來看的時候,別人往往會看的云里霧里,經常會看著看著

就不知道你寫的是什么了。

如果大家寫過類似電子鐘這樣的比較長的程序的話, 肯定在網上下載過相關

的程序看過,有沒有覺得別人的程序看起來讓自己覺得很郁悶呢?。現在我

們來介紹一種在 KEIL 中 C 語言的模塊寫法。這樣的寫法其實也是很好用的,一

些稍長的程序中經常見到。

是不是看起來不陌生?這就對了。其實如果學過 PC 機的 C 語言的話,對多

文件的編譯比較熟悉那么這個就不是什么問題了,因為這基本上是相同的。如果

您是高手對此很熟悉的話,那么請略過本文;如果您是對此不是很熟悉并對此有

點興趣,那么本文或許對您有所幫助。如果在本文中有講的不對的地方請跟帖提

出。或者在我的主頁給我留言進行交流。

這個教程不大容易用文字的形式來講清楚, 如果用視頻來做的話效果應該好

的多,但是俺沒這個條件(俺普通話不好怕嚇到大家,) 。可能一帖會寫不

完,另外打字是件很痛苦的事情,所以這個請見諒。下面正式開始。

我們主的目的是學習模塊化的寫法,所以功能是次要的,熟悉了這個寫法以

后功能是大家自己控制的,我們現在將以 燈的控制為例子講起。

這樣, 我們先建立三個.c 的文件, 分別命名為 main.c、delay.c 和 _on.c,

并將在建立文件的時候盡量做到看到文件名即能看出程序的功能, 這樣的話比較

直觀,不容易混亂。然后將這三個文件都添加進工程。 (這個不能不會吧?)

在 delay.c 中我們加入如下代碼:

void delay1s()

{

unsigned int m,n;

for(m=1000;m>0;m--)

for(n=20;n>0;n--);

}

當然這個延時函數的實際延時時間并不是一秒,我們暫且不用管它,知道他

是起延時作用的就可以了。在 led_on.c 這個文件中我們加入如下代碼:

void led_on()

{

P0=0x00;

delay1s();

P0=0xff;

delay1s();

}

然后在 main.c 函數中我們添加如下代碼:

void main()

{

led_on();

}

這個程序的功能簡單的很,就是實現 LED 的閃爍。

下面問題來了,就是如何將這三個 C 文件關聯起來。

其實在單個.c 文件的程序中,我們在寫程序的時候第一件事就是寫上

#include ,如果你是一個好學者, 你一定問過為什么要這樣寫一句話,

要是你上過輔導班,老師一定跟你講 reg52.h 是頭文件,這句話的作用的把頭文

件包含進來。當然這是很正確的,你可以打開 reg52.h,看一下里面的內容,里

面包含了關于 51 的一些定義,如果在這個文件中遺漏的東西可以使用命

令 sfr 來在 C 文件中定義,如在 STC89C52 中實用擴展 RAM 的時候會用到一個寄

存器你可以添加到這個文件中或者在 C 文件中用 sfr 定義。進一步想一下,一個

包含命令可以把一個文件包含進來, 那么用不同的頭文件包含不就可以把更多的

文件包含進來了嗎?是不是有點思路了?

先講到這里,下次看一下具體如何將三個文件關聯起來。

我們接著上一次的討論一下如何將三個 c 文件關聯起來, 在單文檔的程序中

我們使用#include 這個命令將單片機的頭文件與我們的程序關聯起來。同理我

們也將以頭文件的形式把我們建立的源程序關聯起來。

首先,我們需要一個新文檔,這個文檔的建立有兩種方法(以 delay1s 函數

為例)第一種,

。 在工程目錄下建立一個 delay1s.txt 然后將其改名為 delay1s.h。

因為都是同編碼的所以不會出現亂碼,然后在工程中將其打開。第二種方法是直

接在工程中新建一個文檔,然后保存的時候將名字保存為 delay1s.h 即可。如果

是需要添加很多文件的話建議使用第一種方法,這是個人建議。

其次,我們需要編寫 delay1s.h 這個文件的內容,其內容如下:

#ifndef _DELAY1S_H_

#define _DELAY1S_H_

void delay1s();//延時函數

#endif

這個是頭文件的定義,作用是聲明了 delay1s()函數,因為如果在別的函數

中如果我們需要用到 delay1s()函數的話,若不事先聲明則在編譯的時候會出

錯。對于#ifndef......#define......#endif;這個結構大概的意思就是說如果沒有

定義(宏定義)一個字符串,那么我們就定義它,然后執行后面的語句,如果定

義過了那么就跳過不執行任何語句。

關于為什么要使用這么一個定義方法,比如在 led_on()函數中我們調用了

delay1s()函數,然后在 main()函數中我們也調用了 delay()函數,那么,在

led_on()函數中我就就要包含頭文件 delay1s.h, 然后在 main()函數中也要包含

delay1s.h, 若主函數中我們調用過 led_on(),那么在編譯的時候, 遇到 delay1s()

和 led_on()的時候就會對 delay1s.h 進行兩次解釋,那么就會出現錯誤。若有

以上預處理命令的話,那么在第二次的時候這個_DELAY1S_H_已經被定義過了,

那么就不會出現重復定義的問題。這就是它的作用。但是注意,在編譯器進行編

譯的時候頭文件不參與編譯。

再次,我們建立一個 led_on.h,起代碼內容如下:

#ifndef _LED_ON_H_

#define _LED_ON_H_

void led_on();//燈閃爍

#endif

作用同 delay1s.h,不理解的話可以再看一下上面的解釋。

最后,將我們上次說的三個函數補充完整。

在 led_on()函數中,我們用到了 51 單片機的一些寄存器的定義,所以我們

要包含 reg52.h,而且我們用到了 delay1s()函數,所以我們要包含 delay1s.h,

故 led_on()函數的代碼如下:

#include

#include “delay1s.h” //注意這里沒有分號

void led_on()

{

P0=0x00;

delay1s();

P0=0xff;

delay1s();

}

Main 函數的代碼如下:

#include

#include “delay1s.h”

void main()

{

led_on();

delay1s();//在這里其實只有第一句就可以了,這句是不必要的

led_on();//這也是不必要的

}

在這個函數中,為了再次說明一下#ifndef......#define......#endif 這個結

構的定義,大家可以把所有的.h 文件中的這個結構去掉,然后編譯一下看一下

效果。

到這里相信大家對于這種模塊化的寫法就有大概的了解了, 如果我們想添加

新功能的時候,比如我們要添加一個流水燈的功能,那么,我們只需要增加一個

led_circle.c 和 led_circle.h,然后按照上述步驟添加進工程即可,程序的其

他部分不需要任何改動。顯然這是很方便的。其實函數的聲明可以使用 extern

關鍵字,C 語言中默認都是這個類型的,所以可以不用寫。

如果還有說的不清楚的請提出來,我們一起討論。由于這些東西都是手動輸

入的所以難免會有錯誤,如果各位朋友在看這個教程的時候發現有哪里表達錯誤

或者是不妥當的地方,歡迎指出,我會及時改正,以免誤導別人,。

責任編輯:

總結

以上是生活随笔為你收集整理的单片机c语言模块化实例程序设计,单片机C语言模块化设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本人妻不卡一区二区三区中文字幕 | 少妇性bbb搡bbb爽爽爽欧美 | 中文字幕精品视频在线 | 午夜视频在线观看国产 | 国产sm主人调教女m视频 | 国产女人被狂躁到高潮小说 | 污污软件在线观看 | 粉嫩av.com | 91视频色版 | 无码人妻精品一区二 | 五级毛片 | 成人免费视频大全 | 国产精品一区二 | 久久久久久久国产 | 最近中文字幕无免费 | 性色网站 | 激情六月丁香 | 国产一区二区三区麻豆 | 久久久久久久极品内射 | 草草影院在线播放 | 婷婷av一区二区三区 | 激情小说av| 精品美女久久久 | 亚洲天堂爱爱 | 日本一区二区三区视频在线 | 日本精品区| 一级全黄色片 | 午夜视频久久 | 五月婷婷丁香花 | 黄色录像一级大片 | 都市激情校园春色亚洲 | 成人无遮挡 | 欧美另类69xxxx | 亚洲污视频 | 欧洲美女毛片 | 人人人爽 | 欧美日韩123 | 亚洲精品久久久久久久蜜桃 | 97香蕉久久夜色精品国产 | 无码国产精品高潮久久99 | 免费av一级 | 久久久久久福利 | 亚洲黄色av| 私拍在线 | 日本在线色 | 中文在线字幕免费观 | 成年人一级黄色片 | 国产一二三在线视频 | 爆操91 | 成人小视频在线 | 欧美小视频在线观看 | 欧洲成人免费视频 | 国产毛片在线 | 日韩精品免费一区二区在线观看 | 久久精品国产99国产 | 一二三区在线视频 | 九色视频偷拍少妇的秘密 | 伦理片中文字幕 | 屁屁影院国产第一页 | 欧美1 | 在线国产不卡 | 国产噜噜噜噜久久久久久久久 | 都市激情 亚洲 | 黄色精品 | 日韩一级在线观看视频 | 美女屁股网站 | 欧美性猛交xx乱大交 | 日本污视频在线观看 | 日韩不卡高清 | 欧美一级性片 | 国产高清一区在线观看 | a毛片基地| 免费一级肉体全黄毛片 | 国产欧美一区二区三区视频 | 日韩免费一级片 | 欧美一级视频免费 | 中国农村一级片 | 性生活一级大片 | 国产精品日韩在线观看 | 樱花影院最新免费观看攻略 | 中文在线字幕av | 日本亚洲在线 | 伊人国产精品 | av导航网址| 亚洲狠狠婷婷综合久久久久图片 | 亚洲av区无码字幕中文色 | 免费一级黄色片 | 麻豆影视国产在线观看 | 韩日av在线播放 | 99热免费精品 | 玩弄丰满少妇xxxxx性多毛 | av一区二区三 | 日韩黄网| 久久三级网 | 免费av网站大全 | 国产超碰av | 中文字幕第页 | 久久久久九九九九 | 99在线视频免费观看 |