當前位置:首頁 » 編程軟體 » c51編譯

c51編譯

發布時間: 2022-01-31 01:15:09

『壹』 C51編譯問題

朋友 仔細看看你的程序,這一行:unsigned char j; 延時
在你的說明字元前 應該加什麼,呵呵 丟了這個 「//」。

『貳』 KEIL C51多文件編譯

首先主函數只能存在於一個文件中,這個文件可以直接取名mian.c這樣比較方便管理。然後按功能分其它文件,分別編寫XX.h和XX.c文件,在XX.h中寫入函數的聲明和全局變數的定義,在XX.c中寫函數的具體內容,並且在XX.c中要include「XX.h」,在mian.c中include所有的.h文件。這樣就可以正常編譯和燒寫了。最終生成的還是一個hex文件

『叄』 C51編譯不通過的問題

你這個是程序代碼里有問題呢
不是提示了嗎,在「*」前面缺少了「;」在文件74JIANCE.c里,好好檢查一下

『肆』 在keil環境中遍了一段C51的程序後怎麼編譯

1 新建一工程;在主菜單project下(.Uv2)
2 新建一文件;如C則存為.c文件,如匯編則存為.asm文件;
3 在左邊窗口中的Target1上右擊,在菜單中選add file to group,再選中你的剛建的

文件,即把它加入到你的工程中。
4 選中主菜單project-->build target(或F7)即可編譯你的程序;
5 選中主菜單debug的第一項,則切換到調試窗口;
6 選中主菜單debug->go(F5)即可運行程序了。

注意:view ->periodic window update 是刷新窗口,這樣結果可以看得更清。

還有不清楚的問我:MSN:[email protected]
公司上QQ不方便,呵呵.

『伍』 c51提供哪3種編譯模式

case 1(0x87): case 2(0x47): case 3(0x27): case 4(0x17): 這樣編譯是沒有問題 但是燒到板子上以後程序是否能達到需要的結果就不是很

『陸』 c51怎麼編譯lib

如何生成LIB庫文件

1.首先准備好生成LIB庫文件對應的.c和.h文件,在這里用到的.c和.h文件分別是:

"reg303.h"

"rjwf303_flash.h"

"rjwf303_flash.c"

"cos_security.h"

"cos_security.c"

2.新建一個項目,將上面的文件添加到項目中,並做以下設置:

選中Create Library

3.編譯之後就可以在項目目錄下生成對應的LIB文件。

『柒』 Keil C51編譯的問題!

你主程序里沒有別的程序代碼了?
單片機在編譯時,首先是進行編譯預處理(頭文件包括指令,宏定義處理,條件編譯,各種偽指令等),然後再進入優化編譯階段,再進行匯編過程,接著是程序鏈接。

你在主程序中定義,unsigned char a[2]={1,2};數組,並分配兩個存儲單元。雖然在語法上是沒有錯,程序也能正確被編譯。但程序在真正進行實質鏈接時,由於你並沒有真正進行功能性的程序指定,編譯時它會生成很多冗餘的匯編代碼,按照你定義的單元。上面生成的匯編,你如果仔細看,很多的條件跳轉語句都是轉到不同的內存單元。如:
DJNZ R7,C:001F //R7寄存器相減為0則轉到001F,否則順序執行。
DJNZ R7,C:004B
DJNZ R7,C:003F
INC DPTR
F2 MOVX @R0,A
INC R0
DJNZ R7,C:004B
而實際,編寫程序,也沒有你以上的那種做法,不可能只分配內存單元,而不做任何其它事情。我想,你這樣做,無非就是想做個實驗罷了。

『捌』 c51編譯錯誤

第一個錯誤:意思是定義的P發生了重復定義,你需要把「sbit P=P3^0; 」裡面的P改掉就行了

第二個錯誤:意思是「Ps_2」「Ps_3」「Ps_4」未定義,從你的代碼中可以看出是被注釋掉了

sbitPs_1=P2^0;/*--------------------------------------------------
sbitPs_2=P2^1;----------------設置這4個埠為按鍵檢測端---------
sbitPs_3=P2^2;--------------------------------------------------
sbitPs_4=P2^3;------------------------------------------------*/

修改成如下就行了:

sbitPs_1=P2^0;//設置這4個埠為按鍵檢測端
sbitPs_2=P2^1;
sbitPs_3=P2^2;
sbitPs_4=P2^3;


同理,你的"Ps_22""Ps_23""Ps_24"也被注釋掉了,只是這段程序中沒有用到,所以沒有提示錯誤。


註:C語言中 /* */注釋會把這兩個符號之間的所有字元串全部注釋掉,包括換行的內容!

『玖』 為什麼C51無法編譯

出現ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL,表示以前已經定義過一個標號,要換一個標號

movc a,@a+dptr
movc a,@a+pc

對於這兩條指令,查了一下網上的兄弟的解釋:

movc a,@a+dptr
從DPTR開始偏移A個地址的數讀取到A中.
DPTR一般為數據段的首地址.
movc a,@a+pc
從PC指令地址開始偏移A個地址的數讀取到A中.
PC為當前指令地址.

這兩個指令都是從程序空間中讀取數據.

貌似我也不大聽懂,得去問問老師

還有對於PUSH A Keil老是編譯出現為什麼編譯說錯,
EXPRESSION TYPE DOSE NOT MATCH INSTRUCTION

網上的兄弟

1.說應該為PUSH ACC

2.是編譯選項不對,應選擇韋福匯編器

3.為什麼不是A,而是ACC?

因為:A表示的是內存地址,ACC表示的是寄存器

51中,可以將寄存器入棧,不可以將內存入棧。

4.在51指令中沒有PUSH A,只有PUSH ACC,同樣對累加器A進行位操作時,沒有A.0,只有ACC.0
A是ACC的縮寫,有些地方不能互換,原因我也不知道,書中是這么寫的,編譯軟體也是這么認的,否則就出錯。

『拾』 單片機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,將其分配到可位定址的內部數據存儲器中,可以以位元組方式訪問,也可以以位方式訪問。

熱點內容
微雲如何設置密碼 發布:2025-01-08 06:58:18 瀏覽:532
玩解壓的泥 發布:2025-01-08 06:46:00 瀏覽:553
安卓手機如何卸載軟體干凈 發布:2025-01-08 06:39:21 瀏覽:615
俱樂部源碼 發布:2025-01-08 06:23:23 瀏覽:811
蘋果手機如何設置手機卡密碼 發布:2025-01-08 06:10:27 瀏覽:238
c訪問oracle資料庫 發布:2025-01-08 05:47:51 瀏覽:115
新版安卓什麼時候出 發布:2025-01-08 05:44:46 瀏覽:285
linuxmysql建庫 發布:2025-01-08 05:42:54 瀏覽:133
建行原始密碼多少號 發布:2025-01-08 05:38:01 瀏覽:550
dos下怎麼打開文件夾 發布:2025-01-08 05:36:43 瀏覽:356