嵌入式硬件篇---Keil51中的关键字


文章目录


前言

本文简单介绍了Kiel51单片机中的各种关键字的作用和用途。


1. 存储类型关键字

1.1code

作用

作用:将变量或数据存储在**程序存储器(ROM)**中,不可修改,只能读取。

地址范围

地址范围:0x0000~0xFFFF(取决于单片机型号)。

用途

用途:常量、字符串、查表数据

示例

c 复制代码
const unsigned char lookup_table[] code = {0x01, 0x02, 0x03};

1.2data

作用

作用:直接寻址内部RAM(速度快,容量小)。

地址范围

地址范围:0x00~0x7F(128字节)。

用途

用途:高频访问的全局变量或静态变量

示例

c 复制代码
char fast_var data = 0;

1.3idata

作用

作用:间接寻址的内部RAM(速度稍慢于data)。

地址范围

地址范围:0x00~0xFF(256字节)。

用途

用途:需要较大内部RAM空间的变量。

示例

c 复制代码
int buffer[32] idata;

1.4xdata

作用

作用:外部扩展RAM(16位地址访问,速度较慢)。

地址范围

地址范围:0x0000~0xFFFF(64KB)。

用途

用途:大型数组或缓冲区。

示例

c 复制代码
float sensor_data[1000] xdata;

1.5pdata

作用

作用:分页访问外部RAM(通过P2端口分页,8位地址)。

地址范围

地址范围:每页256字节(由P2决定页地址)。

用途

用途:中等规模数据,需较快访问速度。

示例

c 复制代码
unsigned char page_buffer[256] pdata;

1.6volatile

作用

作用:告知编译器变量可能被意外修改 (如中断、硬件寄存器),禁止优化。

用途

用途:多线程、中断服务程序、硬件寄存器。

示例

c 复制代码
volatile unsigned int timer_count;

2. 其他常用关键字

2.1bit

作用

作用:定义1位二进制变量(仅占用1位存储空间)。

示例

c 复制代码
bit flag = 0;

2.2sbit

作用

作用:定义特殊功能寄存器(SFR)的某一位。

示例

c 复制代码
sbit LED = P1^0;  // 定义P1.0引脚为LED控制位

2.3sfr / sfr16

作用

作用:定义8位或16位的特殊功能寄存器。

示例

c 复制代码
sfr P0 = 0x80;     // 定义P0端口
sfr16 TMR0 = 0x8C; // 定义16位定时器0

2.4reentrant

作用

作用:声明函数为可重入函数(支持递归或并行调用)。

示例

c 复制代码
int factorial(int n) reentrant {
    return (n <= 1) ? 1 : n * factorial(n-1);
}

2.5interrupt

作用

作用:定义中断服务函数,后跟中断号(0~31)。

示例

c 复制代码
void Timer0_ISR() interrupt 1 {
    // 定时器0中断处理
}

2.6using

作用

作用:指定中断服务函数使用的寄存器组(0~3)。

示例

c 复制代码
void UART_ISR() interrupt 4 using 2 {
    // 使用寄存器组2
}

2.7存储模式关键字

small

small:默认变量存储在data区(128字节)。

compat

compact:默认变量存储在pdata区(256字节/页)。

large

large:默认变量存储在xdata区(64KB)。

3. 关键点总结

关键字 存储区域 地址范围 速度 典型用途

code ROM 0x0000~0xFFFF 慢 常量、查表数据

data 内部RAM 0x00~0x7F 最快 高频访问变量

idata 内部RAM 0x00~0xFF 快 中等规模变量

xdata 外部RAM 0x0000~0xFFFF 慢 大型数组、缓冲区

pdata 外部RAM 分页访问 中等 分页数据存储

volatile - - - 防止编译器优化

通过合理使用这些关键字,可以优化程序性能和内存占用,适应8051的资源限制。


相关推荐
Shylock_Mister10 小时前
ESP32堆栈空间优化全攻略
c语言·嵌入式硬件·物联网
点灯小铭10 小时前
基于单片机的超声波自动泥浆回收系统
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Tracy97310 小时前
OT83211_VC1:4通道 ASRC OTG(44.1kHz~192kHz)音频采样率转换器产品介绍
嵌入式硬件·音视频·xmos 模组·xmos模组固件
电鱼智能的电小鱼15 小时前
基于电鱼 AI 工控机的智慧工地视频智能分析方案——边缘端AI检测,实现无人值守下的实时安全预警
网络·人工智能·嵌入式硬件·算法·安全·音视频
电院工程师21 小时前
SIMON64/128算法Verilog流水线实现(附Python实现)
python·嵌入式硬件·算法·密码学
Shang1809893572621 小时前
T41LQ 一款高性能、低功耗的系统级芯片(SoC) 适用于各种AIoT应用智能安防、智能家居方案优选T41L
人工智能·驱动开发·嵌入式硬件·fpga开发·信息与通信·信号处理·t41lq
BreezeJuvenile21 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
l1t1 天前
利用DeepSeek采用hugeint转字符串函数完善luadbi-duckdb的decimal处理
数据库·lua·c·duckdb·deepseek
安庆平.Я1 天前
STM32——定时器
stm32·单片机·嵌入式硬件·定时器
ACP广源盛139246256731 天前
(ACP广源盛)GSV2231---DisplayPort 1.4 MST 到 HDMI 2.0/DP/Type-C 转换器(带嵌入式 MCU)
c语言·开发语言·单片机·嵌入式硬件·音视频·mst