把0xff!=key改為key!=0xff,不能判斷常數是否等於變數!至於編譯器,其實都差不多,keil還算不錯的一個,編譯器之間各有優缺點。對於錯誤不好找,確實有點,學單片機要先有一定的C語言功底,至少做到沒有語法錯誤,一般報錯很可能都是連鎖的,沒有一個編譯器能做到那麼智能能把錯誤都定位到那麼准,多花點時間吧!我談談我的學習經驗吧:學單片機先看些教程,找些別人的代碼,學學思考方法!再從中形成自己的方法! 慢慢的要學會看晶元資料,多思考,過了一段時間就會覺得容易些,過了一個坎就會容易多了!
2. 51單片機C語言編譯問題
應該是硬體不兼容,下載個高版本軟體編譯,我們用的DELL電腦不支持燒錄器使用,所以每次都要用筆記本
3. c語言編譯連接好後,用cmd無法顯示數據
首先需要安裝有一個編譯器並設置好環境變數,如
vc或gcc,以下是命令
gcc:
gcc
-c
test.c
-o
test.o
gcc
test.o
-o
test.exe
vc:
cl
/c
/tc
/o1
/md
test.c
link
test.obj
編譯gui程序時,連接還需要指定靜態庫文件.
4. 用c語言編程,編譯後有錯誤卻不顯示
這個狀態表示:你的程序沒有錯誤,而是系統安裝不完整,或者其他問題導致編譯的最後一個階段(連接)無法進行,這個階段執行的命令的cl.exe,執行這個程序報錯了。
5. 急!!!keil編譯c語言程序時先是出現A51 ASSEMBLER停止工作,然後又出現C51/CX51 compiler停止工作
win7 右鍵keil,「以管理員身份運行",然後輸入License,百試百靈
6. 是用c語言和匯編混合編的程序,在keil里編譯時出現C51 FATAL-ERROR -
程序問題。
LL SEGMENT CODE; // 在程序存儲區中定義段
PUBLIC LED; //聲明函數
FLAG DATA 20H
DPFLAG DATA 22H
RSEG LL; //函數可被連接器放置在任何地方
LED:
NOP
DISP: MOV P1,#0FFH ;顯示函數
MOV P2,#0
MOV DPTR,#TAB
MOV A,DPFLAG
CJNE A,#1,DISP0 ;判斷是否有選擇按鍵
SJMP N1
DISP0:MOV P1,#0F8H
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
NOP ;弄兩個空指令緩沖下數碼管
NOP
MOV P2,#0
N1: MOV A,DPFLAG
CJNE A,#2,DISP1
SJMP N2
DISP1: MOV P1,#0F9H
MOV A,R3
MOVC A,@A+DPTR
MOV P2,A
NOP
NOP
MOV P2,#0
N2: MOV A,DPFLAG
CJNE A,#3,DISP2
SJMP NEND
DISP2: MOV P1,#0FAH
MOV A,R4
MOVC A,@A+DPTR
MOV P2,A
NOP
NOP
MOV P2,#0
NEND: RET
NOP
RET
TAB: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,40h,0
END
上面是匯編文件,。
#include<reg52.h>
extern void led();
void main()
{
P2=0XFF;
led();
while(1)
{
led();
}
}
這里是C文件。
你試試,我這個工程師可以的
7. C語言編譯出錯,在keilc51上提示如圖,求指教
你把s寫成大寫的S了
8. TKStudio V4.5.1編譯c51時怎麼提示說找不到C語言編譯器啊明明裝了
工具,選項,工具鏈,指定編譯器路徑。
9. 我的單片機C語言程序哪裡為什麼編譯不了
提示已經很明確了,編譯器認為第21行有錯。
這款編譯器採用的C標准並不是最新的,不支持變數的即時聲明。所以你需要把20行和21行換一下,確保所有變數都聲明之後,再開始書寫執行代碼。