[技术问答] 关于N76E003中定义长数组问题

[复制链接]
1936|10
 楼主| cn62765160 发表于 2018-6-20 13:20 | 显示全部楼层 |阅读模式
我需要定义一组256个16位数据的数组,如何在KEIL中利用N76E003的额外的768个RAM并定义
734774645 发表于 2018-6-20 13:55 | 显示全部楼层
你可以看看手册上怎么讲的,以及那个例子怎么操作的。
734774645 发表于 2018-6-20 13:56 | 显示全部楼层
  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. }
734774645 发表于 2018-6-20 13:57 | 显示全部楼层
这里用的汇编,我也不清楚怎么用C做。
tianxj01 发表于 2018-6-20 15:08 | 显示全部楼层
unsigned int xdata tmp_16[256];
这样就可以了,当然,你必须打开编译器选项里面的target选项卡里面的memory model XDATA 模式

评论

knk
不需要打开。  发表于 2018-6-21 17:05
 楼主| cn62765160 发表于 2018-6-20 16:04 | 显示全部楼层
谢谢了

评论

knk
谢什么呀,你被别人误导了。  发表于 2018-6-21 17:06
knk 发表于 2018-6-21 17:09 | 显示全部楼层
内存模型设置为:Small: variables in DATA 的时候应该这样定义
unsigned int xdata temp_16[256];
如果内存模型设置为:Large:variables in XDATA 的时候应该这样定义
unsigned int temp_16[256];
liangbaixin 发表于 2018-6-28 22:25 | 显示全部楼层
u8 code a_buf[256]  _at_ 0x3700;

u8  b_buf[256] _at_  0x100; //256

u8 i;
for(i =0;i<256;i++)
    b_buf[i]=a_buf[i];

指定位置,配置数据,应该是这样写的

座机呀 发表于 2018-7-4 16:28 | 显示全部楼层
keil内存模型设置的意思是变量默认的存储位置,你也可以在新建变量的时候指定存储位置例如使用data idata xdata const这些关键字.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

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