找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2082|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

好結(jié)構(gòu)好邏輯,淺談單片機程序的結(jié)構(gòu)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63113 發(fā)表于 2022-3-19 12:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
SO技術(shù)分享之30
編程、棋類和寫作是公認(rèn)為幾個比較鍛煉人思維的活動,不過這也是通過在長期練習(xí)在中后期能達(dá)到的思維佳、邏輯清晰的效果。假如是初識時,還是會覺得比較迷茫和混亂。不過一個好的邏輯結(jié)構(gòu),能快速地幫助進(jìn)步。
一個好的程序結(jié)構(gòu),有助于理清思路、避免犯錯和遺漏。
本文介紹在單片機編程時做出較好的程序結(jié)構(gòu)的方法,包括文件組織、C文件內(nèi)代碼的組織等內(nèi)容。
1、程序的組成
一般來說,一個程序由頭文件和C程序組成。頭文件用于定義,文件存儲的后綴為.h,C程序用于編寫實現(xiàn)功能的代碼,文件存儲的后綴為.c。
2、本文談及的程序結(jié)構(gòu)的內(nèi)容
一是一個工程里C文件的分配。如果一個工程里面有多個C文件,那么之前就需要對C文件進(jìn)行一下分配。
C文件的分配可以按照功能來分配,可以按照部件(模塊)來分配,也可以按照執(zhí)行過程來分配。其實第二第三種分配方式就是分別對應(yīng)程序編程方法的面向?qū)ο蠛兔嫦蜻^程。
二是一個C程序里子程序的劃分。子程序的劃分比較簡單,一般按照一個功能或者一個任務(wù)來分一個子程序即可。
這幾種分配或者劃分的方法無所謂優(yōu)劣,適用簡單即可。
3、一個單片機程序的標(biāo)準(zhǔn)結(jié)構(gòu)

其實標(biāo)準(zhǔn)結(jié)構(gòu)也不是說非要一定這樣做,只是這樣做會比較好。
首先得載入頭文件,不管是系統(tǒng)頭文件還是自定義的頭文件,在這個程序里需要用到的都需要載入,如定義需要的相關(guān)子程序、引腳等。
如果要用到全局變量,那么全局變量等的定義一般也是需要的。
Main函數(shù)是一個工程里一定要有的,而且只能唯一。單片機執(zhí)行程序時一定會運行到的程序就是main函數(shù),其他子函數(shù)一般在main函數(shù)中被調(diào)用或者嵌套調(diào)用。如有開發(fā)定制項目需要,可Q:2531二六3726
子程序可以與main函數(shù)放在同一個C文件,也放在其他C文件里。放在其他C文件的話,可以通過引用頭文件來實現(xiàn)調(diào)用。
特殊子程序,如一些中斷子程序等,如果要用到那么也需要去定義和編寫。
4、一個例子

圖 2是一個單片機程序的標(biāo)準(zhǔn)結(jié)構(gòu)的例子,左邊project樹中包含了該工程的所有文件。在main.c文件中,先是引用相關(guān)頭文件,如引腳的定義就在其中一個頭文件里,接著是全局變量的定義,main.c文件中main函數(shù)是關(guān)鍵的程序,是一個單片機程序里一定會執(zhí)行的程序,其他子程序在main函數(shù)中調(diào)用,具體的子程序代碼在其他C文件里,main函數(shù)中用while(1)執(zhí)行反復(fù)循環(huán)。
本節(jié)完,精彩待續(xù)。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1011952 發(fā)表于 2022-3-21 15:32 | 只看該作者
正在學(xué)習(xí)單片機。偶然發(fā)現(xiàn)這個論壇,希望能得到幫助。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表