筆者在做移植時(shí),將Embest IDE環(huán)境下的例程移到REALVIEWMDK的過程中,曾經(jīng)遇到這樣一個(gè)問題:在生成工程時(shí),編譯全部通過,但在鏈接時(shí)提示許多符號(hào)未定義!如果讀者也遇到過這個(gè)問題,請(qǐng)繼續(xù)看下去,如果鏈接時(shí)提示未
1.匯編語句寫法2.設(shè)置嵌套了匯編的C文件屬性勾選這兩項(xiàng)為黑色4.匯編常包含的庫文件。自己看著選存儲(chǔ)模式是small模式添加這個(gè)文件、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
C51程序編譯生成匯編代碼的效率,是由許多因素共同決定的,對(duì)于Keil C51,主要受以下兩種因素影響:第一節(jié) 存儲(chǔ)模式的影響存儲(chǔ)模式?jīng)Q定了缺省變量的存儲(chǔ)空間,而訪問各空間變量的匯編代碼的繁簡(jiǎn)程度決定了代碼率的高
程序比較簡(jiǎn)單,但感覺比較有意思,個(gè)人認(rèn)為有一定應(yīng)用價(jià)值,希望大家有更好的思路和方法,互相促進(jìn)。 程序的基本思路是:在CPU堆棧指針SP以上的RAM區(qū)域,通過把堆棧指針SP上移若干個(gè)字節(jié),把空出的RAM區(qū)域供用
1.MDK中的char類型的取值范圍是?在MDK中,默認(rèn)情況下,char 類型的數(shù)據(jù)項(xiàng)是無符號(hào)的,所以它的取值范圍是0~255。它們可以顯式地聲明為signed char 或 unsigned。因此,定義有符號(hào)char類型變量,必須用signed顯式聲
Keil簡(jiǎn)明使用方法共分6步: 第0步、 新建文件夾:在您喜歡的合適位置,新建一個(gè)用于存放您的工程文件的文件夾(如:d:\\chinadpj1-1)。 第1步:打開 Keil C51調(diào)試軟件,打開后界面參考圖1所示。 第2步: 新建一個(gè)工
keil中的指針分為兩種,一種是普通指針,兼容標(biāo)準(zhǔn)C語言的指針;另一種是我翻譯成內(nèi)存特殊指針(memory-specific pointers,翻譯的不好:>) 一、普通指針 普通指針的定義方式如下, char * ptr; 跟標(biāo)準(zhǔn)
/*******************************************KEIL里擴(kuò)展出了b,h,l來對(duì)輸入字節(jié)寬的設(shè)置:(1)b八位(2)h十六位(默認(rèn))(3)l三十二位在Keil C51中用printf輸出一個(gè)單字節(jié)變量時(shí)要使用%bd,如unsigned char counter
模塊內(nèi)接口:使用如下標(biāo)志符:asm匯編語句endasm注意:如果在程序中使用了,注意在Keil編譯器中需要激活Properties中的“GenerateAssemblerFile”和“AssemblerFile”兩個(gè)選項(xiàng)1、把"xx.c"加入工程中,右擊"xx.c"選擇
使用_at_關(guān)鍵字對(duì)存儲(chǔ)器進(jìn)行絕對(duì)地址定位程序如下:#includecharxdataLED_Data[50]_at_0x8000;main(){LED_Data[0]=0x23;}在keil中運(yùn)行以上程序可以在存儲(chǔ)器窗口中輸入 x:0x8000 可以看到0x8000地址中的值為0x23.說明
存儲(chǔ)器類型 本C51編譯器支持8051及其派生類型的結(jié)構(gòu)能夠訪問8051的所有存儲(chǔ)器空間具有下表列出的存儲(chǔ)器類型的變量都可以被分配到某個(gè)特定的存儲(chǔ)器空間。存儲(chǔ)器類型 描述code 程序空間6
1.1使用Keil MDK以及標(biāo)準(zhǔn)外設(shè)庫創(chuàng)建STM32工程通過上一節(jié)對(duì)標(biāo)準(zhǔn)外設(shè)庫的介紹,想必各位讀者對(duì)標(biāo)準(zhǔn)外設(shè)庫已經(jīng)有了基本的認(rèn)識(shí),然而由于標(biāo)準(zhǔn)外設(shè)庫中文件眾多,很多初學(xué)者在開始很長(zhǎng)一段時(shí)間內(nèi)甚至都無法完全自己建立一
匯編是從org 0000h開始啟動(dòng),那么keil c51是如何啟動(dòng)main()函數(shù)的?keil c51有一個(gè)啟動(dòng)程序startup.a51,它總是和c程序一起編譯和鏈接。下面看看它和main()函數(shù)是如何編譯的;//主函數(shù)如下;void main(void){while (
在KEIL C中,有多個(gè)源文件使用到全局變量時(shí),可以在一個(gè)源文件中定義全局變量,在另外的源文件中用extern 聲明該變量,說明該變量定義在別的文件中,將其作用域擴(kuò)展到此文件。例如:有以下兩個(gè)源文件test1.c,test2.
code是KEIL C51 擴(kuò)展的關(guān)鍵字,用code修飾的變量將會(huì)被放到CODE區(qū)里。但C語里的const關(guān)鍵字好像也有定義不能改變的變量的功能,這兩個(gè)關(guān)鍵字有什么區(qū)別呢?在幫助手冊(cè)里查找const,可以找到以下的描述1 Variables
/* 6位數(shù)碼管演示程序: 顯示數(shù)碼從0---99循環(huán),按 P3.2 按鍵,顯示從"0" 開始*/#i nclude int count1s; unsigned int count1m; unsigned char dis_bitcount=0; unsigned char display_o[6]; unsigned char displa
(1)初始值不是0的全局變量 在程序調(diào)到main()函數(shù)執(zhí)行前,除了要進(jìn)行內(nèi)存清零、初始化堆棧外,還需要將全局變量的初始值加載到RAM的指定區(qū)域(編譯過程中為全局變量分配的空間)。(2)未初始化的局部變量 實(shí)際的
很多朋友都在想,怎么讓keil C51與ARM能夠并存使用。有安裝經(jīng)驗(yàn)的朋友都知道,安好C51后再安ARm,C51不能正常工作;安好ARM后再安C51,ARM不能正常工作.網(wǎng)上也有相關(guān)解決辦法,不過不怎么樣,要么不詳細(xì),要么就是復(fù)
一般的編譯器將函數(shù)中的區(qū)域變數(shù)動(dòng)態(tài)配置在stack,等函數(shù)結(jié)束空間就釋放出來。因?yàn)?051 的內(nèi)部記憶體很少,只有區(qū)區(qū)128 或256 bytes,而且stack 也是共用這塊記憶體。為了節(jié)省stack 空間,所以區(qū)域變數(shù)基本上是靜
深入理解并應(yīng)用C51對(duì)標(biāo)準(zhǔn)ANSIC的擴(kuò)展是學(xué)習(xí)C51的關(guān)鍵之一。因?yàn)榇蠖鄶?shù)擴(kuò)展功能都是直接針對(duì)8051系列CPU硬件的。大致有以下8類:8051存儲(chǔ)類型及存儲(chǔ)區(qū)域存儲(chǔ)模式存儲(chǔ)器類型聲明變量類型聲明位變量與位尋址特殊功能寄存