久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8579|回復: 5
打印 上一主題 下一主題
收起左側(cè)

Keil軟件“C語言”與“匯編”混編—相關知識整理

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:249638 發(fā)表于 2017-11-15 14:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
給大家分享一個Keil軟件“C語言”與“匯編”混編教程,給需要 C與匯編 混編的同學

用 Keil 在C中嵌入?yún)R編  1
在 Keil 中嵌入?yún)R編  2
介紹直接嵌入?yún)R編代碼的方法  4
采用匯編可能會有的好處  5
Keil C 語言與匯編語言混合編程  7
深入剖析 Keil C51  —— 從匯編到 C51  9
C 語言和匯編語言的變量以及函數(shù)的接口問題   14
匯編與 C 語言混合編程的關鍵問題  15
KEIL 段重定位  15

用 Keil 在 C 中嵌入?yún)R編
    早前公布了C和匯編混編的溫度控制器程序,收到一些朋友的詢問,他們無法在自己程序中使用我的18B20的匯編子程序或無法正常通過混編后的程序編譯。
    其實在KEIL 中嵌入?yún)R編的方法很簡單。 如圖一, 在 C 文件中要嵌入?yún)R編的地方用#pragma  asm 和#pragma  endasm分隔開來,這樣編譯時 KEIL 就知道這中間的一段是匯編了。


    為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用
C51S.LIB。這也是最常用的。這些庫文件是中 KEIL 安裝目錄下的 LIB 目錄中。 加好后就可以順利編譯了。(注:
我只在 7.0以上版本使用過)


在 Keil 中嵌入?yún)R編
    1、其實在 KEIL 中嵌入?yún)R編的方法很簡單。如圖 1,在 C 文件中要嵌入?yún)R編的地方用#pragma asm 和#pragma endasm 分隔開來,這樣編譯時 KEIL 就知道這中間的一段是匯編了。  


   2、在有加入?yún)R編的文件中,還要設置編譯該文件時的選項,如圖 2 所示。

    3、Generate Assembler SRC File 生成匯編 SRC 文件 Assemble SRC File  封裝匯編文件
       (如圖 3 的狀態(tài)為選中)
       選上這兩項就可以在 C 中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊。

    4、為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用 C51S.LIB。這也是最常用的。這些庫文件是中 KEIL 安裝目錄下的 LIB 目錄中。 加好后就可以順利編譯了

介紹直接嵌入?yún)R編代碼的方法
1、在 C  文件中要嵌入?yún)R編代碼片以如下方式加入?yún)R編代碼:
   #pragma ASM
   ; Assembler Code Here
   #pragma ENDASM
2、在 Project 窗口中包含匯編代碼的 C  文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRC File”和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態(tài);
3、根據(jù)選擇的編譯模式,把相應的庫文件(如 Small  模式時,是 Keil\C51\Lib\C51S.Lib)加入工程中,  該文件必須作為工程的最后文件;


采用匯編可能會有的好處
C51 編譯器能對 C語言程序進行高效率的編譯,生成高效簡潔的代碼,在大多數(shù)的應用場合,采用 C語言編程即可完成預期的任務,但是,在有些場合還是會用到匯編,例如在下面的幾種情況下,采用匯編可能會有很多好處:
1、已有程序的移植:在單片機領域工作很久的工程人員可能會保留有很多的早期用匯編語言編制的程序模塊,并且這些模塊已經(jīng)經(jīng)過實際應用的驗證,如果重新用 C編程,可能工作量很大,這時就可以用嵌入?yún)R編的方式把以前的匯編模塊植入新的應用,可以明顯的加快開發(fā)的進度。
2、局部功能需要足夠短的執(zhí)行時間:在有些應用中,部分的功能模塊需要有很高的執(zhí)行效率,而有些匯編的指令在 C中沒有對應的指令,這給我們對單片機的高效操作帶來困難,嵌入?yún)R編可是我們的程序執(zhí)行更有效率。
3、對一些特定地址進行操作:在 C中我們要對特定地址進行讀寫,一般用以下兩種方式:用_AT_指令定義變量; 定義指向外部端口或數(shù)據(jù)地址的指針; 在匯編中只需要使用 MOVX A,@DPTR或MOVX @DPTR,A 就可以了,
這樣可以增強程序的可讀性。
4、其他的需要匯編的應用:在這里我們不可能舉出所有可能要用匯編的例子,在你的應用中,你可能在一個或多個應用中感到 C語言的不足,而需要用到匯編指令,請你記住,可以在 C中嵌入?yún)R編子程序,這對你的程序非常有用。


完整的pdf格式文檔51黑下載地址(共17頁):
Keil軟件“C語言”與“匯編”混編-——-相關知識整理.pdf (421.94 KB, 下載次數(shù): 100)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:268118 發(fā)表于 2018-1-29 06:09 | 只看該作者
感謝樓主的分享。
回復

使用道具 舉報

板凳
ID:128099 發(fā)表于 2019-11-16 13:29 | 只看該作者
這個是好資料,謝謝樓主。
回復

使用道具 舉報

地板
ID:18591 發(fā)表于 2019-12-8 23:12 | 只看該作者

這個是好資料,謝謝樓主。
回復

使用道具 舉報

5#
ID:343852 發(fā)表于 2021-7-20 11:19 來自手機 | 只看該作者
感謝樓主分享!受益了!
回復

使用道具 舉報

6#
ID:624685 發(fā)表于 2021-7-27 12:52 | 只看該作者
好資料,謝謝LZ分享。收藏慢慢學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人免费av | 欧美中文一区 | 日本亚洲一区 | 国产精品一区在线观看 | 亚洲国产成人av好男人在线观看 | 亚洲综合激情 | 日韩视频三区 | 欧美一区二区 | 午夜成人免费视频 | 亚洲网站在线观看 | 午夜电影福利 | 国产视频在线一区二区 | 超碰97人人人人人蜜桃 | 91精品国产91久久久久久最新 | 射久久 | 国产亚洲欧美另类一区二区三区 | 天天干天天爱天天 | 日韩欧美在线视频观看 | 亚洲国产精品一区二区www | 久久爱综合 | 欧美激情精品久久久久久 | 韩日在线 | 国产一二三区电影 | 久久久久中文字幕 | 精品一二区 | 国产成人小视频 | 午夜欧美| 精品国产一区二区三区久久狼黑人 | a视频在线 | 日韩精品一区二区三区在线 | 久久久久久久久久久丰满 | 九九九视频精品 | 亚洲免费人成在线视频观看 | 午夜国产羞羞视频免费网站 | 色婷婷狠狠 | 国产精品久久久久久吹潮日韩动画 | 日韩一区在线播放 | 亚洲人va欧美va人人爽 | 国产色99精品9i | 毛片99| 91久久国产综合久久91精品网站 |