电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

KEILC51混合编程---常用的绝对寻址

来源:华强电子网 作者:华仔 浏览:490

标签:

摘要: 绝对寻址CSEG, BITBSEG, DSEG, ISEG, XSEG使用1. CSEG定义ROM区程序或数据保存的开始地址CSEG AT 3800HUCTABLHALLGS_TAB:DB 07DB 05DB 04DB 00DB 02DB 032. BITDATA_SEG SEGMENT DATA BITADDRESSABLERSEG DATA_SEG ; Relocatable; bit-add

绝对寻址

CSEG, BITBSEG, DSEG, ISEG, XSEG使用

1. CSEG定义ROM区程序或数据保存的开始地址

CSEG AT 3800H

UCTABLHALLGS_TAB:

DB 07

DB 05

DB 04

DB 00

DB 02

DB 03

2. BIT

DATA_SEG SEGMENT DATA BITADDRESSABLE

RSEG DATA_SEG ; Relocatable

; bit-addressable

; segment

BITS: DS 1 ; A 1-byte

; bit-addressable

; variable

ALARM BIT BITS.0 ; Bit 0 in BITS

D1_OPEN BIT ALARM+1 ; Bit 1 in BITS

D2_OPEN BIT ALARM+2 ; Bit 2 in BITS

P1_2 BIT 90h.2 ; SFR P1.2

3. DSEG

DSEG AT 0x40 ; absolute DATA segment at 40H

TMP_A: DS 2 ; absolute data word variable

; named TMP_A

TEM_B: DS 4 ; absolute data dword (32-bit)

; variable named TMP_B

4. ISEG

ISEG AT 0xC0 ; absolute IDATA segment

; at 0C0H

TMP_IA: DS 2 ; absolute idata word variable

; named TMP_IA

TEM_IB: DS 4 ; absolute idata dword (32-bit)

; variable named TMP_IB

5. XSEG

XSEG AT 1000H ; absolute XDATA segment

; at 0x1000

OEM_NAME: DS 25 ; 25 bytes space

; for variable OEM_NAME

PRD_NAME: DS 25 ; 25 bytes space

; for variable PRD_NAME

VERSION: DS 25 ; 25 bytes space

; for variable VERSION

C 使用at 绝对定位

The _at_ keyword allows you to specify the address for uninitialized variables in your C source files.

struct link {

struct link idata *next;

char code *test;

};

struct link idata list _at_ 0x40; /* list at idata 0x40 */

char xdata text[256] _at_ 0xE000; /* array at xdata 0xE000 */

int xdata i1 _at_ 0x8000; /* int at xdata 0x8000 */

char far ftext[256] _at_ 0x02E000; /* array at xdata 0x03E000 */

void main ( void ) {

link。next = (void *) 0;

i1 = 0x1234;

text [0] = "a";

ftext[0] = "f";

}

重复字符可以使用REPT宏定义,参考如下

$NOMOD51

NNOP MACRO N

REPT N

NOP

ENDM

ENDM

OUTPUTPIN BIT P1.5

ORG 0000H

LJMP START

ORG 0100H

START:

MOV CLKCON,#00H;

LOOP:

CPL OUTPUTPIN ; 3

NNOP 42

LJMP LOOP; 5

LOOP1:

SJMP $

END



技术资讯 技术方案 技术应用 技术新品 技术前沿 行业资讯 行业方案 行业应用 行业新品 行业前沿
型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67