『壹』 單片機C語言編譯錯誤:requires ANSI-style prototype
需要要把調用的子函數放到main前面,或者在main函數前面先把需要調用的子函數定義聲明一下。
requires ANSI-style prototype的意思是:需要ANSI樣式原型。
(1)C語言嵌入匯編語言編譯報錯擴展閱讀
單片機匯編指令是為解決某些特定的問題代碼中必須嵌入匯編語言以代替C語言完成的單片機的編程,匯編語言對於程序調試是不可或缺的。它包括:算術操作類指令,布爾變數操作類指令,邏輯操作數指令,控制轉移類指令。
直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言對硬體的控制是依賴於類庫來實現的。
對於一些對程序大小和運行速度有非常嚴苛要求的項目,都必須使用匯編指令。C語言只是為了方便編寫,與機器打交道的都是2進制代碼。
『貳』 是用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文件。
你試試,我這個工程師可以的