機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
C語(yǔ)言中嵌入?yún)R編語(yǔ)言集錦
C語(yǔ)言中嵌入?yún)R編語(yǔ)言集錦
 更新時(shí)間:2009-9-17 15:49:07  點(diǎn)擊數(shù):0
【字體: 字體顏色
C語(yǔ)言中嵌入?yún)R編語(yǔ)言在本論壇中的集錦
論壇中的一些個(gè)人看法,我收集了一下,對(duì)錯(cuò)的話,大家見仁見智啊

下面是一個(gè)簡(jiǎn)單的例子,具體參數(shù)傳遞等,看書
$NOMOD51
ACC DATA 0E0H

P_VM EQU 0DFE2H
P_PAGE EQU 0DFE0H
                NAME     VM
?C_VM?VM SEGMENT   CODE
                PUBLIC  C_VM
  MOV ACC,#00H
  PUSH ACC
  PUSH ACC
  MOV DPTR,#P_VM
  MOV A,#0CH
  MOVX @DPTR,A
  NOP
  RET
                END

 看了KEIL-C的手冊(cè),介紹可以這樣加入?yún)R編
#pragma asm;
nop;
nop;
#pragma endasm;
在properties項(xiàng)使能對(duì)話框中的Generate Assembler SRC File和Assembler SRC File選項(xiàng)。
但為何我這樣做一直編譯通不過(guò)呢,它一直提示語(yǔ)法錯(cuò)誤。請(qǐng)大蝦指教

已經(jīng)搞定,是我在開始處定義了一個(gè)NOP,所以在使用寫ASM NOP時(shí)沖突才會(huì)報(bào)錯(cuò)。


請(qǐng)教:C語(yǔ)言調(diào)用匯編程序時(shí),如何使"Assembly output file"項(xiàng)激活請(qǐng)教:C語(yǔ)言調(diào)用匯編程序時(shí),創(chuàng)建匯編子程序框架時(shí),需要在Workbench菜單Project中選擇Option命令,并在其中的ICC430選項(xiàng)類中,對(duì)list設(shè)置:Assembly output file,可是這個(gè)選項(xiàng)時(shí)灰色的,如何才能激活??
C語(yǔ)言調(diào)用匯編程序不需要任何設(shè)置,只要將匯編的函數(shù)另外保存成一個(gè)獨(dú)立的匯編文件,并把該文件添加到工程中。在C語(yǔ)言中要聲明該匯編函數(shù)為外部函數(shù),當(dāng)然匯編的寫法要注意一些事項(xiàng),這要看一些相關(guān)的資料了。
我是想用c語(yǔ)言寫個(gè)框架,自動(dòng)生成匯編源程序,這樣就需要設(shè)置以上的選項(xiàng)。不過(guò)可以自己寫匯編的框架,就是以上你所說(shuō)的辦法,現(xiàn)在已經(jīng)好了,謝謝你!

 


keil c能編譯匯編程序嗎?keil c能編譯匯編程序嗎?
當(dāng)然可以了,內(nèi)嵌匯編語(yǔ)句就可以了#pragma src命令

 


c語(yǔ)言和匯編語(yǔ)言怎么連接誰(shuí)有c語(yǔ)言和匯編語(yǔ)言怎么連接的資料告訴我一下
建議: 用C語(yǔ)言做個(gè)框架,編譯后改為匯編框架,填入?yún)R編程序,一般可以保證和C語(yǔ)言兼容.注意格式
_asm
{
.......
........
......
}

如果你用KEIL C高版本的話可以分別編寫C和匯編的模塊,存成2個(gè)文件,分別添加到你的項(xiàng)目里,然后BUILD ALL就行了,系統(tǒng)集成環(huán)境回自動(dòng)聯(lián)接的。早期版本需要分別編譯生成OBJ文件,然后聯(lián)接就可以了。

用內(nèi)聯(lián)inline

請(qǐng)教keil c51中加入?yún)R編我在網(wǎng)上下載了一段程序,可怎么也不懂,調(diào)了半天也沒(méi)調(diào)通,請(qǐng)大家看看應(yīng)該怎么用呀,程序中的shiftR1是干什么的,還有x,ruturn(x)返回什么值?
這是下載的程序://<asm.h>
#ifdef ASM
         unsigned long shiftR1(register unsigned long);
#else
         extern unsigned long shiftR1(register unsigned long);
#endif
//end of asm.h
//<asm.c>
#define ASM
#include <asm.h>
#include <reg52.h>
#pragma OT(4,speed)
unsigned long    shiftR1(register unsigned long    x)
{
    #pragma asm
    clr c
    mov a,r4
    rrc a
    mov r4,a
    mov a,r5
    rrc a
    mov r5,a
    mov a,r6
    rrc a
    mov r6,a
    mov a,r7
    rrc a
    mov r7,a
    #pragma endasm
    return(x);
}
//end of asm.c

x=x*2;
x為4位長(zhǎng)整型。
r4567是放x的


在C51中插入?yún)R編問(wèn)題!請(qǐng)教各位:
    1、我想在C51的程序中插入?yún)R編程序,然后用KEIL編譯。使用的格式是
       asm(" ljmp 8000h ");。但在用keil編譯是提示有錯(cuò)。是否要include
       什么頭文件。
    2、在C51的源程序中能否進(jìn)行絕對(duì)地址的調(diào)用與跳轉(zhuǎn)。如;LCALL 8000H
       LJMP  8000H。

1;旌暇幊涛乙蚕雽W(xué)哦,不過(guò)我用WAVE試過(guò)幾次都不行,現(xiàn)在聽說(shuō)WAVE有指令能用了,不過(guò)我沒(méi)試過(guò)哦!
2。好象沒(méi)有哦,不如沒(méi)必要有呀,因?yàn)橛卸紱](méi)用!

KEILC51中是不能直接嵌入?yún)R編,C196就可以。

{f2)我使用的是wave,可以先用c51編個(gè)子程序接口(定好接口變量),再在a51下用匯編編子程序。最后用L51把這兩部分聯(lián)結(jié)起來(lái)(注意用參數(shù),避免程序重疊)。我沒(méi)用過(guò)什么特殊的頭文件,至于是否可以用長(zhǎng)跳轉(zhuǎn)語(yǔ)句不是很清楚。

絕對(duì)地址跳轉(zhuǎn)應(yīng)該不能用。

樓上的說(shuō)的對(duì),keilc51中要想嵌入?yún)R編,必須單獨(dú)寫一匯編的程序文件,然后和c51的程序文件連接編譯。其中還牽扯一些問(wèn)題,參數(shù)、程序名等,去老古那里看看吧

KEILC51中是可以直接嵌入?yún)R編,方法為#Pragma asm 匯編行 #pragma ,注意在寫匯編之后要記得加 END 這樣子就OK了。( 這樣我試過(guò)了,編譯時(shí)時(shí)需要勾選SRC項(xiàng),不過(guò)軟仿真執(zhí)行時(shí)遇到莫名其妙的問(wèn)題。如整個(gè)程序不從MAIN處執(zhí)行等,不知怎么回事?)

  • 上一篇: Keil C51編譯錯(cuò)誤總結(jié)
  • 下一篇: 沒(méi)有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1