導航:首頁 > 軟體知識 > 51單片機程序如何編譯

51單片機程序如何編譯

發布時間:2023-03-24 23:54:10

㈠ 單片機c51有哪幾種編譯模式

下面僅對C51在變數定義中注意的問題以及與80C51存儲資源有關的問題作說明,其餘遵循C語言的規定。1.變數聲明在變數的聲明中,可以包括存儲類型和signed或unsigned等屬性。如:(1)chardatavar1;定義字元型變數var1,被分配在內部RAM低128B,編譯後,通過直接定址方式訪問。(2)charcodetext[]=「ENTERPARAMETER」;定義字元數組text[],將其分配到程肆李序存儲區,並賦初始值「ENTERPARAMETER」。編譯後,通過MOVCA,@A+DPTR訪問。(3)unsignedlongxdataarray[100];定裂鋒遲義無符號長整型數組array[100],將其分配到外RAM中,編譯後,通過MOVXA,@DPTR訪問。(4)floatidatax,y,z;定義浮點類型變數x,y,z,將其分配到內RAM中,編譯後,通過間接定址方式訪問基則。(5)unsignedintpdatadimension;定義無符號整型變數dimension,將其分配到外RAM中,編譯後,通過MOVXA,@Ri指令採用分頁的形式訪問。(6)unsignedcharxdatavector[10][4][4];定義無符號字元型數組vector[10][4][4],將其分配到外RAM中,編譯後,通過MOVXA,@DPTR訪問。(7)charbdataflags;定義字元型變數flags,將其分配到可位定址的內部數據存儲器中,可以以位元組方式訪問,也可以以位方式訪問。

㈡ 51單片機用什麼軟體編程

51單片機用什麼軟體編程介紹如下:

與匯編相比,C語言在功能上、結構性、可讀性、握腔可維護性上有明顯的優勢,因而易學易用。用過匯編語言後再使用C來開發,體會更加深刻。KeilC51軟體提供豐富的函數庫個功能強大的集成開發調試工具,全Windows界面。

㈢ 51單片機程序編寫(勞駕寫得詳細一點)

#include <宴談reg51.h>
void delay(unsigned int n)
{
while(n--);
}
void main()
{
char i;
//可以編好想要怎麼流水的燈位的狀消銀態
unsigned char led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
while(1)
{
for(i=0;i<8;i++)
{
P1=led[i]; //晌橋碰LED接在P1口
delay(10000);
}
for(i=0;i<8;i++)
{
P1=led[8-i];
delay(10000);
}
}
}

㈣ 51單片機如何使用

使用51單片機需要達到以下基本條件:

1、至少要搭建一個最小系統;

2、你需要編制一個51的控製程序;

3、你需要將程序編譯連接成HEX或BIN格式的代碼並下載或燒錄到51單片機。

這樣你就可以使用這款51單片機了。

㈤ 用c++怎樣編寫51單片機程序

相信很多初學者都有同樣的疑問,也有同樣的希望。就是用C++語言來寫單片機程序的源代碼。現在我來解釋一下單片機的源代碼程序幾乎沒有人用C++來寫的。x0dx0a1. 假設一下你現在用C++寫完了一個程序代碼。那麼你要讓單片機認識必須要編譯吧,對吧 。請問你有合適的編譯軟體來編譯你的代碼嗎?x0dx0a2. 就算有編譯器能編譯,你能保證它的代碼效率一定能給單片機用嗎?x0dx0a 單片機的ROM是K級的水平,執行指令的速度也遠遠小於PC。絕對不能和PC機相比的禪譽。這個就決定了單片機編程時很多時候要考慮它的代碼效率和代碼大小問題。所以一般情況下對於單片機編程我們之用匯編語言或者C語言。就算是用C寫程序也要注意代碼的效率等問題。x0dx0a 還有就是只有很大型的項目及應用程序開發才有可能有C++來寫程序。一般的系統文件,應用程序都是用C來寫的。有的系統代碼甚至要用匯編語言來寫。x0dx0a舉個生活中的例子:如果你從家裡去公司上班你一般的出行方式是什麼?x0dx0a1.坐公車 2.騎車 3.自己開車 4.坐地鐵 5.走過去。如果誰說他是做直升飛機去上班的。那要麼這個人腦子不正常,要麼就是太有錢了炫富。如果你要打蒼行襲鏈蠅用蒼蠅拍子就行了。如果要你用巡航導彈來打蒼蠅,你認為可能嗎?x0dx0a 所以我們單片機寫程序的話一般就檔孫是匯編語言和C語言。幾乎沒有人用C++語言的。

㈥ 單片機編程步驟

學單片機如何編程?非常詳細的Keil工程建立全過程講解

從零學電子
03-07
在單片機的開發或使用過程中除了掌握必要的硬體外,同樣離不開軟體,只有通過軟體(程序)的執行,硬體才能發揮出具體的作用。機器如何認識我們用各種符號編寫的程序呢?早期我們寫的匯編語言源程序要變為CPU可以執行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟體將源程序變為機器碼,隨著單片機開發技術的不斷發展,從使用匯編語言逐漸過渡到使用高級語言開發,單片機的開發軟體也在不斷發展,Keil軟體是目前最為流行的開發MCS-51系列單片機軟體。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的模擬調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部份組合在一起。Keil軟體對計算機的硬體資源要求很低,可以說現在市面上的計算機都能滿足其硬體需求。

Keil C51

Keil C51是51系列兼容單片機C語言軟體開發系統,採用全Windows界面,提供了豐富的庫函數和功能強大的集成開發調試工具。生成的目標代碼效率非常之高,且生成的匯編代碼緊湊,容易理解。在開發大型軟體時更能體現高級語言的優勢。與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。相信用過匯編語言後再使用C來開發,體會更加深刻,當然如果匯編語言和硬體結構熟練到一定程度,使用匯編語言會更具優勢,但對於大部分初學者而言,Keil C51應該是首選。掌握這一軟體的使用對於使用51系列單片機的愛好者來說是十分必要的,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟體模擬調試工具也會令你事半功倍。

Keil uVison4是普通版本,只能適用於單片機,主要是基於8051系列單片機的開發環境;Keil MDK是擴展版本,包含了部分ARM。為基於Cortex-M、Cortex-R4、ARM7、ARM9處理器設備提供了一個完整的開發環境;初學者建議採用Keil uVison4及更低版本,注意:Keil uVison4分Keil MDK-ARM和Keil C51版本,初學者應安裝Keil C51版的。

關於Keil軟體的安裝與常用其它軟體安裝的方法類似,安裝按照說明一步一步操作即可,不再贅述。本文主要詳細講解用Keil uVison4新建一個工程的詳細過程,相信通過這個教程的學習,您一定會對使用Keil軟體創建一個新的工程有深入的掌握。

第一步:從桌面找到Keil圖標,雙擊圖標啟動Keil軟體,

啟動Keil

會看到如圖所示界面。

啟動後的界面

第二步:點擊菜單條中的"Project"並從下拉菜單中選擇"New uVision Project…",

新建工程

自動彈出一個項目路徑選擇對話框,(若打開keil軟體時,如果發現此軟體默認打開了一個之前已經存在的工程,請先關閉此工程。點擊上面"Project"選項,在彈出的下拉菜單中選擇"Close Project"即可。)

選擇路徑新建文件夾

在彈出的對話框中,選擇即將創建工程的保存路徑和文件夾,若不存在可以用與Window系統一致的方法新建文件夾,如"TEST",並在該文件夾下的對話框文件名處輸入自己為工程起的工程名,如下圖輸入的LCD1602。

輸入工程名

第三步:輸入文件名點擊保存後,彈出如圖所示控制器選擇對話框,

選擇單片機類型

在單片機類型列表中找到並選中"Atmel"下的AT89C52(大家根據自己控制器型號選擇),右側區域給出所選單片機的硬體資源,

單片機的硬體資源說明

點擊"OK",彈出詢問是否將標准51系列啟動代碼添加到新建工程中的彈窗,因為keil的庫文件裡面已經有一個默認的啟動代碼了,如果你的工程里沒有啟動代碼,keil就會使用庫里的默認啟動代碼,如果有,keil就會編譯並使用你的啟動代碼,庫里的啟動代碼會被忽略。(初學者建議點擊"否即可")

選擇是否添加啟動代碼到工程中

第四步:點擊"File"菜單下的"New",新建會看到出來一個名字為"Text1"的文件,

新建C文件

再一次點擊上面"File"下拉菜單中 "Save"或點擊工具欄中的"保存",會彈出一個保存的對話框,輸入文件名如"LCD1602MAIN.C"(切記,此處無論你起什麼樣的文件名,但後面必須輸入.C!!!),單擊"保存",將文件在第二步新建的文件夾目錄下。

保存C文件

命名.C文件名

此時可以在新建文件中進行代碼編寫了,如包含頭文件 #include <Reg52.h>,但要注意,此時文件LCD1602MAIN.C並未與工程建立起聯系。

此時的C文件還未和工程建立聯系

第五步:將新建的文件添加到工程中,點擊左邊"Porject"選項框裡面的"Target 1"前面的"+"號, 在展開的下拉菜單下看到"Source Group 1"。右鍵單擊"Source Group 1"選項, 在下拉菜單中選擇"Add Files to Group 'Source Group 1'..."選項,彈出一個文件選擇對話框,單擊選中剛才新建的.c源文件,然後單擊一次"Add"按鈕,此時雖然對話框沒有關閉,但是已經把.c源文件添加到工程里了,這時只要再點擊一次"Close"按鈕即可把此對話框關閉(初學者經常以為.c源文件沒有被添加進去,還要按"Add"按鈕)。這時發現左邊的"Source Group 1"前面多了一個"+"號, 單擊此"+"號展開, 發現下面出現了剛才我們新添加進去的.c源文件"LCD1602MAIN.c"。

將C文件添加到工程中

選擇要添加的文件

已將C文件成功添加到工程中

第六步:為了降低編程的疲勞,根據需要進行字體字型大小設置,點擊如圖"Edit"菜單最下面的"Configeruration"選項,

設置舒適的字體字型大小

根據自己的需要進行字體設置即可,

如何設置字體字型大小

一個新的Keil工程建立完畢

至此,一個全新的Keil工程建立完畢,開啟自己的編程之旅吧!

了解更多

keil4編程是什麼意思
編程必背50個程序
燒錄程序的使用步驟
keil4怎麼設置成中文
如何使用keil5進行編程
st語言編程入門與精通

㈦ linux下怎麼編譯單片機c代碼,怎麼下載到51單片機上呢

1.編譯軟體用sdcc
2.sdcc不支持keil51c 的一些語法。要做以下修改:
sbitled1=P1^0; 改為 #define led1 P1_0
中斷函數interrupt改為__interrupt
單個位 P1^0 改為P1_0
若vim安裝插件YCM的話,要在.ycm_extra_conf.py加入以下兩個路徑
/usr/share/sdcc/include
/usr/share/sdcc/include/mcs51
沒創建一個工程都要敏岩拷貝一份.ycm_extra_conf.py到該工程的目錄下。

3.編譯用命令
` sdcc 目唯拿蘆指帶標文件
4.燒錄軟體用stcflash.py,該軟體只能支持stc89c52rc,不支持stc89c52。我自己親自試過。
sudo python ./stcflash.py 目標文件

㈧ 51單片機的編程問題

1:C51編譯器如何區分位地址和位元組地址
是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0埠地址位於0x80,後者說明了P0埠的bit0,即P0.0位於位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:

C51語句: P0 = 1;

P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由於0x80單元物理上對應P0埠,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。

C51語句: P0_0 = 1;

P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行後,P0.0將輸出高阻態。而P0.1-.7不會變化。

2:C51為什麼要嵌套匯編
51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由於c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限於篇幅,不能說得很細。下面舉例:

匯編程序單獨保存一個文件,加入到工程中,函數如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);

調用時形如: retvalue = proc_a(0x11);

說明:

a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。

b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然後跳轉子程序,子程序將它加1後送回。

d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用後是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。

閱讀全文

與51單片機程序如何編譯相關的資料

熱點內容
小程序如何實現提交後轉發 瀏覽:800
招商證券3年股票交易明細怎麼查 瀏覽:173
高考查詢錄取信息持續多久 瀏覽:292
為什麼能收到對方微信空白信息 瀏覽:294
工廠里調度員和技術員哪個好 瀏覽:468
專利代理人和期刊編輯哪個好 瀏覽:321
盛泰手機哪些產品 瀏覽:320
電腦程序編程怎麼學 瀏覽:785
廣聯達行業數據怎麼用不了 瀏覽:67
哪個組織最關注貨幣和技術援助 瀏覽:161
oem廠家工業化工產品有哪些 瀏覽:551
牛元牌瓷磚膠韶關總代理店在哪裡 瀏覽:509
市場的大紅酸枝有多少陷阱 瀏覽:537
華安證券除了月月紅還有哪些產品 瀏覽:517
騰訊文檔小程序如何查以前時間 瀏覽:527
全權代理買房怎麼弄 瀏覽:745
怎麼在電商上買農產品 瀏覽:865
怎麼做數據路徑 瀏覽:893
檢查肚子的程序是什麼 瀏覽:646
2010小件滯銷產品都有哪些 瀏覽:632