



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、如何讀懂單片機程序這是一篇關于單片機入門的基礎文章! 剛剛接觸單片機的朋友, 簡直是無從下手, 打開一個程序, 更會被復雜的結構和密密麻麻的代碼嚇倒! 多么想找個人耐心的 指導一下,是你們內心的強烈意識!好吧,我來滿足你!我對單片機的總結: “單片機其實就是一個芯片,內部有若干寄存器,外部有若 干引腳,我們可以通過程序控制內部的寄存器使得引腳與外部世界保持聯系!” 就這幾句話,道出了單片機的真諦!有沒有感覺到單片機是多么的簡單!1. 單片機程序執行流程 這是我們首先必須要知道的。 單片機程序一般就有兩種, 一種是匯編程序, 一種 是 c 語言程序。這里我們講 c 語言程序。單片機程序都有一個包
2、含主函數的文件, 包含主函數的文件都有一個統一的結構, 如下所示:#include "xxx.h"int main() /; /這是主函數的函數名若干條語句while(1) / while 括號中是 1,說明程序進入后將在 while 里面無線循環, 不會出來了,不懂的去看 c 語言基礎之 while 篇; / 若干條語句重點:單片機一上電,從主函數 main 的第一條語句開始執行,是一條語句接著 一條語句從上而下執行, 直到進入 while 后,再從 while 的第一條語句執行到最 后一條語句,由于是死循環,會再從 while 的第一條語句執行到最后一條語句, 如此反復
3、執行,永不停止!直到斷電!這些語句當中,有些是函數的調用,遇到函數的調用,進入到函數,再從函數的 第一條語句執行到最后一條語句, 然后跳出函數, 再從剛才主函數中那條函數的 下一條語句開始執行。 如果實在搞不明白函數是怎么一回事, 你可以用函數里面 的所有語句代替函數在主函數中的位置。例如:#include "LPC11XX.H"#define LED1_ON LPC_GPIO1->DATA &= (1<<0) #define LED1_OFF LPC_GPIO1->DATA |= (1<<0) #define LED2_ON L
4、PC_GPIO1->DATA &= (1<<1) #define LED2_OFF LPC_GPIO1->DATA |= (1<<1) /*/ /* 延時函數 */ /*/ void delay()uint16_t i,j;for(i=0;i<5000;i+)for(j=0;j<200;j+);/*/* LED 初始化函數 */*/void led_init()LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);LPC_IOCON->R_PIO1_0 &= 0x07;LPC_IOCON
5、->R_PIO1_0 |= 0x01;LPC_IOCON->R_PIO1_1 &= 0x07;LPC_IOCON->R_PIO1_1 |= 0x01;LPC_SYSCON->SYSAHBCLKCTRL &= (1<<16);LPC_GPIO1->DIR |= (1<<0);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DIR |= (1<<1);LPC_GPIO1->DATA |= (1<<1); /* /* 主函數 */ /* int mai
6、n()led_init();while(1)delay();LED1_ON;LED2_OFF; delay();LED1_OFF;LED2_ON;上面這個例子中,單片機一上電,會執行主函數的第一條語句,也就是 led_init(), 這個是一個函數的調用語句, 程序會從 led_init 函數中的第一條語 句開始執行,直到執行完最后一條語句后,回到主函數,進入 while ,從 while 的第一條語句 delay() 開始執行, delay() 又是一個函數, 程序會從 delay() 的第 一條語句開始執行, delay() 函數中有兩個 for 循環,執行完 for 循環后,就跳 出de
7、lay()函數,執行LED1_ON由于LED1_O是個用#define定義的宏定義, 由c語言基礎知識之#define宏定義篇,我們知道,LED1_ON就是LPC_GPIO1->DATA &= (1<<0,如此繼續執行下去。如果不用 define 宏定義,也不用函數,上面的例子就可以寫為如下形式:#include "LPC11XX.H"/*/* 主函數*/*/int main()/LED 初始化LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);LPC_IOCON->R_PIO1_0 &= 0x
8、07;LPC_IOCON->R_PIO1_0 |= 0x01;LPC_IOCON->R_PIO1_1 &= 0x07;LPC_IOCON->R_PIO1_1 |= 0x01;LPC_SYSCON->SYSAHBCLKCTRL &= (1<<16);LPC_GPIO1->DIR |= (1<<0);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DIR |= (1<<1);LPC_GPIO1->DATA |= (1<<1);while(1)for(
9、i=0;i<5000;i+)for(j=0;j<200;j+);LPC_GPIO1->DATA &= (1<<0);LPC_GPIO1->DATA |= (1<<1); for(i=0;i<5000;i+) for(j=0;j<200;j+);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DATA &= (1<<1);有沒有發現,第二種表示方法, 雖然不涉及函數和宏定義了, 對于 c 語言掌握不 是很好的人來說, 看的比較爽。如果你掌握了 c 語言的這些宏
10、定義和函數的小技 巧,第一種表示方法是不是更有利于閱讀程序的功能呢?2. 讀懂程序需要c語言基礎知識,當然,也可以邊看程序,邊學習c語言基礎知識。3. 讀懂程序需要會看單片機的寄存器定義,在程序中,大都是在給單片機的寄 存器進行配置或是獲取單片機寄存器的數據。看哪種單片機程序,就要學會看 哪種單片機的寄存器定義。知道了寄存器的定義,就知道如何配置寄存器或是 獲取的寄存器數據代表的意義了。例如我們要看LPC1114的程序,那么LPC1114的用戶手冊是必須要打開的。例如 LPC_SYSC0N->SYSAHBCLKCTR1<v16);這條語句,就是在給 SYSCO模塊中的 SYSAHB
11、CLKCT寄存器進行配置,所以我們要找到這個寄存器的定義。首先,打 開用戶手冊,找到SYSCO這一章,然后找到寄存器描述這一節,就可以找到這 個寄存器的定義了。至于 (|=(1<<16) 這些,都是寫基本的邏輯運算,也是些 c 語言的基礎知識而已。例如 (|=(1<<16) 這個就是把 1 左移 16個位,然后把左 移后的數據與SYSAHBCLKCT寄存器進行或運算,運算后的結果再放入SYSAHBCLKCT寄存器當中。1左移16個位,就是bit16 為1,其它位為0。與 寄存器SYSAHBCLKCT進行或運算,我們不管這個寄存器原來的值是多少, 我們 現在只知道, 1 或任何數,都等于 1;0或任何數,都等于任何數。所以, 1 左移 16位后,再與寄存器進行或運算, 實際上是把寄存器的 bit16 置 1,剩下的位原 來是多少,還是多少。 (常有人問我,怎么判斷自己適不適合學單片機,現在我 告訴你,你能把這些“或”“與”“非”“進制轉換”搞清楚,就可以,如果這 些搞不清楚,就不要學了,同學,單片機不適合你)。4.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年項目部安全培訓考試試題及一套參考答案
- 2024-2025員工三級安全培訓考試試題及答案預熱題
- 2024-2025班組三級安全培訓考試試題及參考答案(典型題)
- 知到智慧樹網課:大學計算機基礎及應用(吉林建筑科技學院)章節測試滿分答案
- 2025中外合資經營企業合同范本:汽車零部件生產
- 2025電子產品購銷合同范本電子產品購銷合同格式
- 2025企業間的借款合同協議書范本
- 2025租私人車位的合同協議范本
- 2025辦公室續租合同協議書
- 2025健身房房屋租賃合同模板
- 河南省普通高中2024-2025學年高三下學期學業水平選擇性模擬考試(四)歷史試題(原卷版+解析版)
- 一例盆腔臟器脫垂全盆底重建術患者的護理
- 旅游消費者決策
- 企業員工環保培訓
- 2025年河北省唐山市玉田縣第三中學中考一模地理試卷(含答案)
- 2025屆金麗衢十二校高三語文第二次聯考考場高分作文點評:“效率至上”與“深度求索”
- 快手賬號轉讓合同范例
- 話劇《林黛玉進賈府》
- 妊娠期高血壓綜合征-ppt課件
- 《電力工程》PPT精品課程課件全冊課件匯總
- 高強螺栓螺母墊圈重量一覽表
評論
0/150
提交評論