這是新手的第一次嘗試,是老師傅的一次回望當年。
準備階段,我們儘量讓第一次測試完整,可操作。由於準備比較多,講得儘可能詳細,所以分為兩篇,上篇是軟體測試,下篇是硬體測試。
所有材料:
1,安裝軟體的電腦,至少安裝了keil和ISP,keil用於編輯程序,ISP用於把程序下載到單片機中。沒有這兩個,我們即使首次測試成功,接下來的學習也會很艱難。
2,可以上電的最小系統板,已安裝單片機。上電是基本的,單片機也是基本的,沒有單片機,程序就沒地方存,沒有電,什麼也幹不了。
3,下載器,它是電腦和晶片的連接紐帶,沒有它,接下來也是學著艱難,下載線可以想辦法,下載器就只能買了。
材料準備好了,小白們就可以準備了,大佬們也準備好板凳。
首先,測試軟體是否可以運行,並寫下第一個代碼,同時導出可執行文件。
打開安裝好的keil軟體。
然後我們建立一個工程
文件名我寫成了002,主要是為了好記,你們可以命成自己喜歡的,例如我們要練習LED燈,可以直接命名為小燈點亮,沒有問題的,支持中文。
接著是選擇我們需要編程的控制器型號,原則上選擇相近的型號即可,最好選擇一致,自帶的沒有STC的庫,所以我導入了一個,由於我已經導入,所以可以直接看到。
你們可以用inter的8051替代,沒有問題的。如果需要知道如何導入晶片庫,我們後面說到下載的時候會介紹一下方法。選擇好之後,點擊確定。從這一步開始,程序就已經進入編輯階段了,你選擇的這個晶片型號,就決定了接下來你使用的函數中,哪些是已經準備好的,可以直接調用,如果選錯,可能會導致無法編譯或者編譯錯誤。就像學習文理分科一樣,雖然不影響學習,但是最終考試題會不一樣。
我選擇的是與我的晶片型號一致的STC89C52RC
看到這個選擇「否」,意思是將這個引導文件添加到工程的項目中,我們暫時不需要,所以不用。如果選擇了「是」也不影響操作,接著進行下一步即可。(截圖忘記保存,不影響操作,大家自己看提示就可以完成)
新建一個程序文檔,我們可以在項目上單擊右鍵,會彈出菜單欄,選擇第二項》》添加一個新的文檔。
我們在對話框中,選擇第一個.c文件,然後輸入文件名,原則上支持中文,但是條件允許的情況下,儘量選擇英文加數字,防止出現編譯錯誤。畢竟這個軟體時國外開發的。還是要遷就一下它,防止軟體使用中亂發脾氣。
這個添加的文件直接就是程序文檔,後綴名就是「****.c」。
還有一種快捷的添加文件方式,也說一下,就是這個一頁紙一樣的圖標,左鍵單擊就添加了,不過出現的是一個沒有後綴名的文檔。
我們需要點擊上方的藍色的保存按鍵,或者直接Ctrl+s,在彈出的對話框下方,輸入想要命名的文件名,例如「003.c」,切記,此時的「.c」不可以省略,否則就會保存問文本文檔,程序就讀不出來。填完,點擊保存即可。
下面我們寫入第一個程序,也是每個學習單片機的同學最容易接受的一段代碼,估計大家都是從這個開始的吧,我當年第一次學,可是比這個難,所以直接完犢子了,今天就來的簡單些,防止重蹈當年的覆轍。
首先是第一句:#include<reg51.h>
這個根據各自的單片機型號而定,建議大家選擇這個,通用的基本聲明,我的是52型號的,用這個也可以,不過以後的學習中,大家可以根據需要書寫與自己單片機一致的頭文件,例如我的就可以書寫成#include<reg52.h>,這裡邊包含的是一些已經幫我們聲明好的變量和定義,可以直接使用,方便了程序書寫。暫時先不用理會,先寫上第一句。
然後是第二句:sbit LED=P1^0;
這個是一個賦值語句,高中就學習過,意思是把P1.0口的值送給LED,但是前邊的sbit,就改變了他的一些功能,此時也可以理解為,P1.0和LED相等,看見P1.0就可以認為是LED,看見LED就認為是P1.0,給P1.0新建了一個名字叫LED。就像我們有大名,喊著比較彆扭,於是就起了個小名,喊著親切還好認。跟這個是一個意思。
在課堂上老師會說這個是一個聲明語句,意思是,提前告訴所有程序:唉!都聽好了,以後看見有人喊「LED」就是在喊「P1.0」,都挺清楚了。
於是程序中就可以用LED代替P1.0進行操作了。
接下來是主程序:void main(void){}
mian後的括號中的void可以不用寫,如果嚴格一些,需要寫,不寫也不會報錯。後邊的大括號是必須寫的,一對出現。我們以後寫的所有程序都需要在這個函數中運行,不管你寫的什麼,都需要走主函數過一下,就像一個火車站的進站口一樣,負責檢查和執行。
我們需要在主函數的大括號中寫上一個語句,完成一個輸出。
輸出語句:LED=0;
這句話就相當於P1.0=0。
最後需要加一個語句,用於保持程序的當前狀態,防止出現錯誤。
最後的一句:while();
就這麼幾句,看似簡單,其實可以通過它,我們來簡單測試一下軟體是否可用,下載器是否正常,單片機是否可以正常驅動,作為開始,這就夠了。
編譯前,項目中只有程序的.c文件。
點擊編譯,用於檢查和生成可執行文件。如果有錯誤會在下方的提示窗中顯示。
編譯後,下方提示0-錯誤,0-警告。如果有錯誤,程序就不會生成可執行文件,如果有警告,可以生成可執行文件,但警告的內容是提示你,即使生成了可執行文件,你也可能會無法真常執行程序。所以最好做到沒有錯誤,沒有警告。
一般編譯完後,我們的頭文件會引導出一個文件,包含在了我們的程序文件中,就是左側002.c下方的reg52.h。這個先按下不談。
查看輸出提示,我們發現,並沒有提示導出了可執行文件。主要是我們沒有設置。要輸出文件,還需要設置一下。之前的文章中已經有提到過。
單擊下圖中的設置按鈕,進入設置界面。
在設置中的第三項output中,將輸出HEX文件前選中,打勾。然後點擊確定。
接著再次編譯異一次,此時,在0-錯誤,0-警告的上方,多了一句話,生成了HEX文件,存儲在了「.\objects\002」這個地址中。我們從這個地址就可以找到所虛的可執行文件。這個文檔,位置在你存儲002.C文件的文件夾中。
就是下圖中間的文件。
至此,軟體調試結束,如果你成功生成了「*****.hex」文件,那麼離成功就只有一步之遙了。由於篇幅限制,先分享這麼多,硬體的調試,下篇文章會進行詳細解釋。
對於已經深諳單片機之道的大佬,這些就是連門都沒入的基本功,好比進入古代宗門中,的外門弟子修習的法術,而且還是最初級的那種,所以這個適合新手看,若是已經入門或造詣頗深,可以為文章提出更合理的講解方法,留言回復,讓更多小白,輕鬆入門。授人一計,若得大道。
如果是第一次使用軟體,總會有些問題,歡迎不懂的小夥伴私信或留言。
往期文章:
自學單片機第三篇:keil軟體
自學單片機第四篇:proteus pro軟體
自學單片機第五篇:TSC-ISP軟體
感謝關注,瀏覽更多福利