[合泰杯HT32讨论区]

HT66F0185RAM

[复制链接]
766|4
手机看帖
扫描二维码
随时随地手机跟帖
hhhh0294|  楼主 | 2022-12-23 16:12 | 显示全部楼层 |阅读模式
RAM0区放不下了,有一个数组准备放到RAM1区,不知道怎么操作

使用特权

评论回复
hifern| | 2022-12-26 10:36 | 显示全部楼层
C语言:
static unsigned char Monitor0[16] __attribute__ ((at(0x0180))) ;
static unsigned char Monitor1[16] __attribute__ ((at(0x0190))) ;
static unsigned char var0 __attribute__ ((at(0x01c0))) ;
static unsigned char var1 __attribute__ ((at(0x01c1))) ;
//程序可以直接读写操作, 如: var0 = 0;  if(var1 >5){...};
//-----------------------------------------------------------------------------------------

汇编:
;RAMBANK 0 和RAMBANK 1 分开定义
RAMBANK 0 ds0
ds0        .section        'data'
temp0        db        ?
temp1        db        ?

;存放在RAM Bank1中的变量
RAMBANK 1 ds1
ds1        .section        'data'
b1_data0        db        ?
b1_data1        db        ?
; 程序中需要用间接寻址代码访问
        mov     a,1
        mov     MP1H,A
        mov     a,offset b1_data0
        mov     MP1L,A
        mov     a,3
        mov     IAR1,A
               
        mov     a,offset b1_data1
        mov     MP1L,a
        mov     a,56H
        mov     IAR1,A


使用特权

评论回复
Zhengzhaojie| | 2022-12-26 10:59 | 显示全部楼层
本帖最后由 Zhengzhaojie 于 2022-12-26 11:01 编辑

数组定义方式如图框选所示,具体可以参考附件pdf文件;
例:HT66F0185,将unsigned char类型数组arr[10]定义在RAM1中,首地址为80H
code如下:
static volatile unsigned char arr[10] __attribute__ ((at(0x180)));

圖片1.jpg




Holtek C Compiler V3 Users Guide(950).pdf

2.18 MB

使用特权

评论回复
nickspace| | 2022-12-26 11:31 | 显示全部楼层
HT66F0185 不是扩展指令集MCU,定义在非RAM bank0的变量,都需要用 attribute 指定地址 来定义,static volatile unsigned char arr[10] __attribute__ ((at(0x180))); 0x1xx,代表放在 RAM bank1;0x2xx,代表放在 RAM bank2;xx代表在这个RAM bank的地址;
HT66F3185 属于扩展指令集MCU,V3C语言应用 会自动编排放在各个RAM bank,不用在attribute 绝对地址定义。

使用特权

评论回复
Stahan| | 2023-1-3 14:42 | 显示全部楼层
不用在attribute 绝对地址定义

使用特权

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

本版积分规则