www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]本章討論以下內(nèi)容: ●絕對(duì)地址訪問(wèn)●C與匯編的接口 ●C51軟件包中的通用文件 ●段名轉(zhuǎn)換與程序優(yōu)化第一節(jié) 絕對(duì)地址訪問(wèn)C51提供了三種訪問(wèn)絕對(duì)地址的方法:1. 絕對(duì)宏:在程序中,用“#include”即可使用其中定義的宏

本章討論以下內(nèi)容:

●絕對(duì)地址訪問(wèn)

●C與匯編的接口

●C51軟件包中的通用文件

●段名轉(zhuǎn)換與程序優(yōu)化


第一節(jié) 絕對(duì)地址訪問(wèn)

C51提供了三種訪問(wèn)絕對(duì)地址的方法:

1. 絕對(duì)宏:

在程序中,用“#include”即可使用其中定義的宏來(lái)訪問(wèn)絕對(duì)地址,包括:

CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

具體使用可看一看absacc.h便知

例如:

rval=CBYTE[0x0002];指向程序存貯器的0002h地址

rval=XWORD [0x0002];指向外RAM的0004h地址

2. _at_關(guān)鍵字

直接在數(shù)據(jù)定義后加上_at_ const即可,但是注意:

(1)絕對(duì)變量不能被初使化;

(2)bit型函數(shù)及變量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list結(jié)構(gòu)從40h開(kāi)始。

xdata char text[25b] _at_0xE000;指定text數(shù)組從0E000H開(kāi)始

提示:如果外部絕對(duì)變量是I/O端口等可自行變化數(shù)據(jù),需要使用volatile關(guān)鍵字進(jìn)行描述,請(qǐng)參考absacc.h。

3. 連接定位控制

此法是利用連接控制指令code xdata pdata data bdata對(duì)“段”地址進(jìn)行,如要指定某具體變量地址,則很有局限性,不作詳細(xì)討論。

第二節(jié) Keil C51與匯編的接口

1. 模塊內(nèi)接口

方法是用#pragma語(yǔ)句具體結(jié)構(gòu)是:

#pragma asm

匯編行

#pragma endasm

這種方法實(shí)質(zhì)是通過(guò)asm與ndasm告訴C51編譯器中間行不用編譯為匯編行,因而在編譯控制指令中有SRC以控制將這些不用編譯的行存入其中。

2. 模塊間接口

C模塊與匯編模塊的接口較簡(jiǎn)單,分別用C51與A51對(duì)源文件進(jìn)行編譯,然后用L51將obj文件連接即可,關(guān)鍵問(wèn)題在于C函數(shù)與匯編函數(shù)之間的參數(shù)傳遞問(wèn)題,C51中有兩種參數(shù)傳遞方法。

(1) 通過(guò)寄存器傳遞函數(shù)參數(shù)

最多只能有3個(gè)參數(shù)通過(guò)寄存器傳遞,規(guī)律如下表:

參數(shù)數(shù)目 Char Int long,float 一般指針

1 R7 R6 & R7 R4~R7 R1~R3

2 R5 R4 & R5 R4~R7 R1~R3

3 R3 R2 & R3 R1~R3

(2) 通過(guò)固定存儲(chǔ)區(qū)傳遞(fixed memory)

這種方法將bit型參數(shù)傳給一個(gè)存儲(chǔ)段中:

?function_name?BIT

將其它類型參數(shù)均傳給下面的段:?function_name?BYTE,且按照預(yù)選順序存放。

至于這個(gè)固定存儲(chǔ)區(qū)本身在何處,則由存儲(chǔ)模式默認(rèn)。

(3) 函數(shù)的返回值

函數(shù)返回值一律放于寄存器中,有如下規(guī)律:

Return type Registev 說(shuō)明

Bit 標(biāo)志位 由具體標(biāo)志位返回

char/unsigned char

1_byte指針 R7 單字節(jié)由R7返回

int/unsigned int

2_byte指針 R6 & R7 雙字節(jié)由R6和R7返回,MSB在R6

long&unsigned long R4~R7 MSB在R4, LSB在R7

Float R4~R7 32Bit IEEE格式

一般指針 R1~R3 存儲(chǔ)類型在R3 高位R2 低R1

(4) SRC控制

該控制指令將C文件編譯生成匯編文件(.SRC),該匯編文件可改名后,生成匯編.ASM文件,再用A51進(jìn)行編譯。

第三節(jié) Keil C51軟件包中的通用文件

在C51LiB目錄下有幾個(gè)C源文件,這幾個(gè)C源文件有非常重要的作用,對(duì)它們稍事修改,就可以用在自己的專用系統(tǒng)中。

1. 動(dòng)態(tài)內(nèi)存分配

init_mem.C:此文件是初始化動(dòng)態(tài)內(nèi)存區(qū)的程序源代碼。它可以指定動(dòng)態(tài)內(nèi)存的位置及大小,只有使用了init_mem( )才可以調(diào)回其它函數(shù),諸如malloc calloc,realloc等。

calloc.c:此文件是給數(shù)組分配內(nèi)存的源代碼,它可以指定單位數(shù)據(jù)類型及該單元數(shù)目。

malloc.c:此文件是malloc的源代碼,分配一段固定大小的內(nèi)存。

realloc.c:此文件是realloc.c源代碼,其功能是調(diào)整當(dāng)前分配動(dòng)態(tài)內(nèi)存的大小。

2. C51啟動(dòng)文件STARTUP.A51

啟動(dòng)文件STARTUP.A51中包含目標(biāo)板啟動(dòng)代碼,可在每個(gè)project中加入這個(gè)文件,只要復(fù)位,則該文件立即執(zhí)行,其功能包括:

●定義內(nèi)部RAM大小、外部RAM大小、可重入堆棧位置

●清除內(nèi)部、外部或者以此頁(yè)為單元的外部存儲(chǔ)器

●按存儲(chǔ)模式初使化重入堆棧及堆棧指針

●初始化8051硬件堆棧指針

●向main( )函數(shù)交權(quán)

開(kāi)發(fā)人員可修改以下數(shù)據(jù)從而對(duì)系統(tǒng)初始化

常數(shù)名 意義

IDATALEN 待清內(nèi)部RAM長(zhǎng)度

XDATA START 指定待清外部RAM起始地址

XDATALEN 待清外部RAM長(zhǎng)度

IBPSTACK 是否小模式重入堆棧指針需初始化標(biāo)志,1為需要。缺省為0

IBPSTACKTOP 指定小模式重入堆棧頂部地址

XBPSTACK 是否大模式重入堆棧指針需初始化標(biāo)志,缺省為0

XBPSTACKTOP 指定大模式重入堆棧頂部地址

PBPSTACK 是否Compact重入堆棧指針,需初始化標(biāo)志,缺省為0

PBPSTACKTOP 指定Compact模式重入堆棧頂部地址

PPAGEENABLE P2初始化允許開(kāi)關(guān)

PPAGE 指定P2值

PDATASTART 待清外部RAM頁(yè)首址

PDATALEN 待清外部RAM頁(yè)長(zhǎng)度

提示:如果要初始化P2作為緊湊模式高端地址,必須:PPAGEENAGLE=1,PPAGE為P2值,例如指定某頁(yè)1000H-10FFH,則PPAGE=10H,而且連接時(shí)必須如下:

L51 PDATA(1080H),其中1080H是1000H-10FFH中的任一個(gè)值。

以下是STARTUP.A51代碼片斷,紅色是經(jīng)常可能需要修改的地方:

;------------------------------------------------------------------------------

; This file is part of the C51 Compiler package

; Copyright KEIL ELEKTRONIK GmbH 1990

;------------------------------------------------------------------------------

; STARTUP.A51: This code is executed after processor reset.

;

; To translate this file use A51 with the following invocation:

;

; A51 STARTUP.A51

;

; To link the modified STARTUP.OBJ file to your application use the following

; L51 invocation:

;

; L51, STARTUP.OBJ

;

;------------------------------------------------------------------------------

;

; User-defined Power-On Initialization of Memory

;

; With the following EQU statements the initialization of memory

; at processor reset can be defined:

;

; ; the absolute start-address of IDATA memory is always 0

IDATALEN EQU 80H ; the length of IDATA memory in bytes.

;

XDATASTART EQU 0H ; the absolute start-address of XDATA memory

XDATALEN EQU 0H ; the length of XDATA memory in bytes.

;

PDATASTART EQU 0H ; the absolute start-address of PDATA memory

PDATALEN EQU 0H ; the length of PDATA memory in bytes.

;

; Notes: The IDATA space overlaps physically the DATA and BIT areas of the

; 8051 CPU. At minimum the memory space occupied from the C51

; run-time routines must be set to zero.

;------------------------------------------------------------------------------

;

; Reentrant Stack Initilization

;

; The following EQU statements define the stack pointer for reentrant

; functions and initialized it:

;

; Stack Space for reentrant functions in the SMALL model.

IBPSTACK EQU 0 ; set to 1 if small reentrant is used.

IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.

;

; Stack Space for reentrant functions in the LARGE model.

XBPSTACK EQU 0 ; set to 1 if large reentrant is used.

XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.

;

; Stack Space for reentrant functions in the COMPACT model.

PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.

PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.

;

;------------------------------------------------------------------------------

;

; Page Definition for Using the Compact Model with 64 KByte xdata RAM

;

; The following EQU statements define the xdata page used for pdata

; variables. The EQU PPAGE must conform with the PPAGE control used

; in the linker invocation.

;

PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.

PPAGE EQU 0 ; define PPAGE number.

;

;------------------------------------------------------------------------------

3. 標(biāo)準(zhǔn)輸入輸出文件

putchar.c

putchar.c是一個(gè)低級(jí)字符輸出子程,開(kāi)發(fā)人員可修改后應(yīng)用到自己的硬件系統(tǒng)上,例如向C

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉