os_xdata_to_data

所属模块:内存管理 | 类型:XDATA→DATA搬运函数

API Metadata

函数ID:os_xdata_to_data
模块:memory
类型:xdata to data transfer
嵌套深度:1

函数简介

:contentReference[oaicite:0]{index=0} 用于将外部存储器 XDATA 中的数据读取到内部 DATA 区域。 该函数是 8051 架构下底层内存访问的重要操作接口。

该接口通过 MOVX 指令实现外部数据读取,并在关闭中断的保护下完成安全搬运。

函数原型

void os_xdata_to_data(u16 addr2, u8 addr);

参数说明

参数 说明
addr2 XDATA 地址(源地址)
addr DATA 目标地址索引

返回值

无返回值。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : os_xdata.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include"hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 将 XDATA 数据区的数据读取到指定数据区地址。 * * @param[in] addr2 XDATA 源地址。 * @param[in] addr 数据区目标地址。 * * @return None。 * * @note 函数执行过程中临时关闭中断,以保证数据访问过程不被中断打断。 * 数据读取完成后恢复进入函数前的中断使能状态。 */ void os_xdata_to_data(u16 addr2,u8 addr)// { u8 i; i=IE; EA=0; OS_HRTOS=addr; __asm mov R1,OS_HRTOS OS_HRTOS=addr2&0xff; DPH=addr2>>8; DPL=OS_HRTOS; __asm MOVX A,@DPTR __asm MOV @R1,A IE=i; } /*------------------------------------------------------------------------ | END OF FILE: os_xdata.c | ------------------------------------------------------------------------*/

使用示例

void demo_copy(void) { os_xdata_to_data(0x12, 5); }

注意事项

该函数在执行过程中会关闭中断(EA=0),确保 XDATA 访问过程的原子性。 不适合在高频实时中断环境中频繁调用。

相关推荐