打印
[技术问答]

关于N76E003中定义长数组问题

[复制链接]
1612|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 | 只看该作者
#include <stdio.h>
#include "N76E003.h"
#include "Function_define.h"

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


/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/
void main (void)
{

        Set_All_GPIO_Quasi_Mode;
               
#pragma asm
                        MOV DPH,0
                        MOV DPL,0
                       
                        ;Write XRAM
L1:
                        MOV A,DPL
                        MOVX @DPTR,A
                        INC DPTR
                        MOV A,DPH
                        CJNE A,#03H,L1


                        ;read check
                        MOV DPL,#0
                        MOV DPH,#0
L2:
                        MOV A,DPL
                        MOV 11H,A
                        MOVX A,@DPTR
                        CJNE A,11H,L3
                        INC DPTR
                        MOV A,DPH
                        CJNE A,#03H,L2
                        MOV P1,#69
                        sjmp $
                        ;read check end       


                        ;error alart
L3:
                        MOV R0,#05h
                        MOV A,#55H
                        MOVX @R0,A
                        MOV P1,A
                        sjmp $
                       
#pragma endasm
            

}

使用特权

评论回复
地板
734774645| | 2018-6-20 13:57 | 只看该作者
这里用的汇编,我也不清楚怎么用C做。

使用特权

评论回复
5
tianxj01| | 2018-6-20 15:08 | 只看该作者
unsigned int xdata tmp_16[256];
这样就可以了,当然,你必须打开编译器选项里面的target选项卡里面的memory model XDATA 模式

使用特权

评论回复
评论
knk 2018-6-21 17:05 回复TA
不需要打开。 
6
cn62765160|  楼主 | 2018-6-20 16:04 | 只看该作者
谢谢了

使用特权

评论回复
评论
knk 2018-6-21 17:06 回复TA
谢什么呀,你被别人误导了。 
7
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];

使用特权

评论回复
8
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];

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

使用特权

评论回复
9
座机呀| | 2018-7-4 16:28 | 只看该作者
keil内存模型设置的意思是变量默认的存储位置,你也可以在新建变量的时候指定存储位置例如使用data idata xdata const这些关键字.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝