Re: 大数据(>256字节)+伪指令
|
||||
---|---|---|---|---|
新會員
|
难道没有人用过伪指令定义大数据吗?
發表於: 2008/7/17 14:00
|
|||
|
Re: 大数据(>256字节)+伪指令
|
||||
---|---|---|---|---|
版主
|
聯合體(union)大資料(>256位元組)的問題,我採用了“虛擬指令+指標+分配新區域”的方法,但出現新的問題,就是每次重新上電後和這個聯合體有關的資料全部丟失,資料都變成655。在程式內部我是把這個聯合體的內容寫入一個固定位址的,每次上電後首先做的事就是從該位址讀出來賦給聯合體,所以應該(希望)是掉電前的資料啊。
我在程式是這樣寫的: 聯合體的定義 typedef union { struct { 。。。//具體定義內容省略 } dataList; unsigned char dataArray[94]; }systemData; 首先定義一個總體變數 #pragma udata sys_data systemData sysData_ptr; #pragma udata systemData * sysData; 然後在程式開始部分 void main() { sysData = &sysData_ptr; ....//讀固定位址的資料值賦給聯合體 ... } 在程式中,凡是用要對聯合體物件元素進行操作時,我使用 “sysData[0].元素” 的形式。 同時對.lkr檔進行修改 //DATABANK NAME=gpr2 START=0x200 END=0x2FF //DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=big START=0x200 END=0x37F PROTECTED //不加PROTECTED也試了 DATABANK NAME=gpr3 START=0x380 END=0x3FF SECTION NAME=sys_data RAM=big 哪里不合適導致每次上電都不是以前的值?
發表於: 2008/7/17 13:10
|
|||
|
大数据(>256字节)+伪指令
|
||||
---|---|---|---|---|
新會員
|
联合体(union)大数据(>256字节)的问题,我采用了“伪指令+指针+分配新区域”的方法,但出现新的问题,就是每次重新上电后和这个联合体有关的数据全部丢失,数据都变成655。在程序内部我是把这个联合体的内容写入一个固定地址的,每次上电后首先做的事就是从该地址读出来赋给联合体,所以应该(希望)是掉电前的数据啊。
我在程序是这样写的: 联合体的定义 typedef union { struct { 。。。//具体定义内容省略 } dataList; unsigned char dataArray[94]; }systemData; 首先定义一个全局变量 #pragma udata sys_data systemData sysData_ptr; #pragma udata systemData * sysData; 然后在程序开始部分 void main() { sysData = &sysData_ptr; ....//读固定地址的数据值赋给联合体 ... } 在程序中,凡是用要对联合体对象元素进行操作时,我使用 “sysData[0].元素” 的形式。 同时对.lkr文件进行修改 //DATABANK NAME=gpr2 START=0x200 END=0x2FF //DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=big START=0x200 END=0x37F PROTECTED //不加PROTECTED也试了 DATABANK NAME=gpr3 START=0x380 END=0x3FF SECTION NAME=sys_data RAM=big 哪里不合适导致每次上电都不是以前的值?
發表於: 2008/7/17 9:14
|
|||
|