keil c51 关键字

news/2024/12/5 5:18:36/

一:KeilCx51扩展的关键字:

at •alien •bdata •bit •code •compac •data

•far •idata •interrupt •large •pdata •priority •reentrant

•sbit •sfr •sfr16 •small •task •using •xdata
二:C51扩展关键字说明

1、_at_定义变量的绝对地址

格式:<[>memory_type<]>type variable_name_at_constant;

例:int xdata value_at_0x8000;/int at xdata 0x8000/

2、alien (PL/M-51)函数外部声明

C函数调用PL/M-51必须先用alien声明

例:extern alien char plm_func (int,char);

char c_func (void){
int i;

char c;

for(i=0;i<100;i++){
c=plm_func(i,c); /callPL/Mfunc/

}

return©;

}

C函数要被PL/M-51调用必须先用alien声明

例:alien char c_func(char a,int b) {
return(a*b);

}

3、Code data, bdata, pdata, idata, xdata C51存储器类型声明

Code 程序代码存储区

Data 直接寻址片内数据存储区(低128字节)

Bdata 位寻址片内数据存储区(16字节)

Idata 间接寻址片内数据存储区(256字节)

Pdata 分页寻址外部数据存储区(256字节)

Xdata 可寻址片外数据存储区(64KB)

例:int bdata ibase; /Bit-addressable int/

char bdata bary[4]; /Bit-addressablearray/

4、bit位变量定义

格式:bit name<[>=value<]>;

例:static bit done_flag=0; /bitvariable/

5、sfr sfr16 sbit C51扩展数据类型

sfr 用于定义8位特殊功能寄存器

sfr16 用于定义16位特殊功能寄存器

sbit 用于定义可位寻址对象

例:sfr P0=0x80; /Port-0, address 80h/

sfr16 T2=0xCC; /Timer2: T2L 0CCh, T2H 0CDh/

sbit EA=0xAF; //将位绝对地址赋給位变量

sfr PSW=0xD0; sbit OV=PSW^2; sbit OV=0xD0^2;

int bdata ibase; /Bit-addressableint/

sbit mybit0=ibase^0; /bit0ofibase/

6、compact,large,smallC51中变量的存储模式选择

Small模式用于将所有未指明存储区的变量均保存在data存储区

compact模式用于将所有未指明存储区的变量均保存在pdata存储区

Large模式用于将所有未指明存储区的变量均保存在xdata存储区

例:#pragmasmall /Defaulttosmallmodel/

extern int calc(char i, int b) large reentrant;

extern int func(int i,float f) large;

extern void*tcp(char xdata *xp, int ndx) compact;

int mtest(int i,int y) /Smallmodel/

{ return(iy+yi+func(-1,4.75)); }

int large_func(int i,int k) large /Largemodel/

{ return(mtest(i, k)+2); }

7、far far存储区是指许多新的8051扩展地址空间。CX51编译器使用通用的3个字节的指针来访问扩展内存空间。两个CX51的内存类型far and far const,访问扩展RAM空间的变量和扩展ROM空间中的常量。

R3 Value Memory Type Memory Class Address Range 0x00 data/idataDATA/IDATAI:0x00-I:0xFF

0x01xdataXDATAX:0x0000-X:0xFFFF

0x02-0x7Ffar HDATA X:0x010000-X:0x7E0000

0x80unused

0x81-0xFDfarconst HCONST

C:0x800000-C:0xFC0000(farconstismappedintothebankedmemoryareas)

0xFE pdataXDATAone256-bytepageinXDATAmemory

0xFF code CODE/ CONST C:0x0000-C:0xFFFF

8、interruptC51使用interruptm修饰符可将函数转化为中断函数m为中断向量优先级。

例:unsigned int interruptcnt;

unsigned char second;

void timer0 (void) interrupt 1 using2{
if (++interruptcnt==4000) { /countto4000/

second++; /secondcounter/

interruptcnt=0; /clearintcounter/

}

}

9、_task_与_priority_CX51编译器使用_task_和_priority_支持RTX51Full和RTX51 Tiny的实时多任务操作系统。

_task_关键字指定一个函数是一个实时的任务。

_priority_关键字指定任务的优先级。

例:void func(void)_task_num_priority_pri

10、reentrant 重入函数修饰符。所谓重入函数就是允许被嵌套调用的函数。

通常情况下,C51的功能不能被嵌套调用。因为,函数参数和局部变量都存储在固定的内存位置。函数的递归调用使用相同的内存位置。而且,在这种情况下,参数和数据得到损坏。

例:int calc (char i,int b) reentrant

{ int x; x=table[i]; return(x*b); }

11、using定义函数时用来选择函数使用寄存器的分组组

例:void rb_function (void)using 3

{…}
————————————————
版权声明:本文为CSDN博主「zhouhailiang2020」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouhailiang1991/article/details/85291244


http://www.ppmy.cn/news/496348.html

相关文章

XC5VLX30T-2FF323I Virtex-5 LXT FPGA IC 产品参数

概述 Virtex-5 FPGA有-3&#xff0c;-2&#xff0c;-1速度等级&#xff0c;其中-3具有最高的性能。Virtex-5 FPGA直流和交流特性指定为商业和工业级别。除工作温度范围外&#xff0c;除非另有说明&#xff0c;所有直流和交流电气参数对于特定转速等级是相同的(即-1转速等级的工…

stc15f2k60s2.h

#ifndef __STC15F2K60S2_H_ #define __STC15F2K60S2_H_/ //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为 // 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.…

KGE性能指标:MRR,MR,HITS@1,HITS@3,HITS@10

本文将介绍用于衡量知识图谱嵌入&#xff08;Knowledge Graph Embedding&#xff0c;KGE&#xff09;模型性能中最常用的几个指标&#xff1a;MRR&#xff0c;MR&#xff0c;HITS1&#xff0c;HITS3&#xff0c;HITS10。 一、MRR MRR的全称是Mean Reciprocal Ranking&#xff0…

CRC16

CRC选择 当数据帧长度在8bits-128bits范围内时&#xff0c;推荐CRC-8(CRC-8能够减少额外比特的开销&#xff0c;且有更好的性能表现) 当数据帧长度在128bits-2048bits范围内时&#xff0c;推荐CRC-12&#xff0c;CRC-16&#xff0c;CRC-CCITT(CRC-12额外比特的开销更小&#x…

STC15F2K60S2系列单片机

STC15F2K60S2系列主要性能&#xff1a; ●大容量2048字节片内RAM数据存储器 ●高速&#xff1a;1个时钟/机器周期&#xff0c;增强型8051内核(STC Y5)&#xff0c;速度比传统8051快7&#xff5e;12倍 速度也比STC早期的1T系列单片机(如STC12/11/10系列)的速度快20% ●宽电压&a…

FLTK-Rs 2

Trees 树形结构&#xff0c;允许在树中显示项目&#xff0c;使用add方法发添加条目 use fltk::{prelude::*, *}; use fltk::enums::FrameType;fn main() {let a celet mut win window::Window::default().with_size(400, 300);let mut tree tree::Tree::new(5,5,390,290,&…

Rock 5 RK3588 SBC初次摸索

RADXA Rock 5&#xff08;基于RK3588&#xff09;的初次摸索 硬件平台简述系统安装选择几个系统的介绍系统的安装方式 配件方面 硬件平台简述 RK3588是瑞芯微发布的一款8核&#xff08;4核大4核小&#xff09;ARM架构处理器&#xff0c;许多家都有这个芯片的开发板。 这里使用…

连接器 SM05B-PASS-TBT R/A 5POS 2MM SMD

CONN HEADER SMD R/A 5POS 2MM&#xff0c;连接器 SM05B-PASS-TBT。 品牌&#xff1a;JST 2mm间距PA系列由以下连接器组成: -PA连接器(线对板压接型) -PAF连接器(线对板绝缘置换连接(IDC)型) -PAL连接器(线对线压接式) 这些特征使得形状复杂的haress首次成为具有安全锁定机构…