[技术问答] 牛版主,新唐N76E003的XRAM怎么用C操作啊?

[复制链接]
2633|12
 楼主| xuanhuanzi 发表于 2018-11-29 12:19 | 显示全部楼层 |阅读模式
手册只给了用汇编操作的方法,不过大家都是用C的,有没有什么关键字或者方法直接用C实现操作。比如怎么直接把变量定义到该位置。
 楼主| xuanhuanzi 发表于 2018-11-29 12:20 | 显示全部楼层
下面是官方的例子,除了汇编,还有其他方法使用C操作吗?
  1. #include <stdio.h>
  2. #include "N76E003.h"
  3. #include "Function_define.h"

  4. /******************************************************
  5. The C file combine with assembler code compiler
  6.   Please always confirm the .c file option mark enable
  7.         "Generate assembler SRC file" and "Assembler SRC file
  8. ******************************************************/


  9. /*------------------------------------------------
  10. The main C function.  Program execution starts
  11. here after stack initialization.
  12. ------------------------------------------------*/
  13. void main (void)
  14. {

  15.         Set_All_GPIO_Quasi_Mode;
  16.                
  17. #pragma asm
  18.                         MOV DPH,0
  19.                         MOV DPL,0
  20.                        
  21.                         ;Write XRAM
  22. L1:
  23.                         MOV A,DPL
  24.                         MOVX @DPTR,A
  25.                         INC DPTR
  26.                         MOV A,DPH
  27.                         CJNE A,#03H,L1


  28.                         ;read check
  29.                         MOV DPL,#0
  30.                         MOV DPH,#0
  31. L2:
  32.                         MOV A,DPL
  33.                         MOV 11H,A
  34.                         MOVX A,@DPTR
  35.                         CJNE A,11H,L3
  36.                         INC DPTR
  37.                         MOV A,DPH
  38.                         CJNE A,#03H,L2
  39.                         MOV P1,#69
  40.                         sjmp $
  41.                         ;read check end       


  42.                         ;error alart
  43. L3:
  44.                         MOV R0,#05h
  45.                         MOV A,#55H
  46.                         MOVX @R0,A
  47.                         MOV P1,A
  48.                         sjmp $
  49.                        
  50. #pragma endasm
  51.             

  52. }


 楼主| xuanhuanzi 发表于 2018-11-29 12:21 | 显示全部楼层
有没有大神研究出方法,分享分享。
tianxj01 发表于 2018-11-29 15:04 | 显示全部楼层
xuanhuanzi 发表于 2018-11-29 12:21
有没有大神研究出方法,分享分享。

unsigned char xdata  test[128];
这样就把内存定义到XRAM了。
 楼主| xuanhuanzi 发表于 2018-11-29 15:12 | 显示全部楼层
tianxj01 发表于 2018-11-29 15:04
unsigned char xdata  test[128];
这样就把内存定义到XRAM了。

多谢,多谢。
 楼主| xuanhuanzi 发表于 2018-11-29 15:20 | 显示全部楼层
多谢各位大侠,我已经查了资料和启动文件。发现启动文件里已经定义了该空间位置。
启动文件位置:\N76E003_BSP_Keil_C51_V1.0.6\Startup\STARTUP.A51
下面是文件的部分内容
  1. ;------------------------------------------------------------------------------
  2. ;
  3. ;  User-defined Power-On Initialization of Memory
  4. ;
  5. ;  With the following EQU statements the initialization of memory
  6. ;  at processor reset can be defined:
  7. ;
  8. ;               ; the absolute start-address of IDATA memory is always 0
  9. IDATALEN        EQU     80H     ; the length of IDATA memory in bytes.
  10. ;
  11. XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory
  12. XDATALEN        EQU     2FFH     ; the length of XDATA memory in bytes.
  13. ;
  14. PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
  15. PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.
其中
XDATASTART EQU 0H ; the absolute start-address of XDATA memory
XDATALEN EQU 2FFH ; the length of XDATA memory in bytes.
721955bff928a7af86.png
就是这里,看好关键字。
XDATA指片外SRAM空间,X指external
所以可以用C51的关键字xdata

评论

学习了  发表于 2018-12-7 19:34
wahahaheihei 发表于 2018-11-29 19:48 | 显示全部楼层
多谢大仙分享啊。要不然我也不会啊,还以为必须用汇编呢
wahahaheihei 发表于 2018-11-29 19:48 | 显示全部楼层
新唐的例程真是的,希望例子提供一下C代码的参考,这样大家心里有底了。
yiyigirl2014 发表于 2018-12-7 20:33 | 显示全部楼层
多谢分享,终于知道怎么搞了。
天灵灵地灵灵 发表于 2018-12-8 18:12 | 显示全部楼层
用C51的这个关键字还是很强的
heisexingqisi 发表于 2018-12-18 18:16 | 显示全部楼层
人才啊,多谢。
xinxianshi 发表于 2018-12-23 23:49 | 显示全部楼层
关键字定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

2322

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部