• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: 大数据(>256字节)+伪指令
#4
版主
版主


查看用戶資訊
看起來你應該是使用 ROM data 的方式建立查表資料才對,怎會用到udata 的宣告去建立 uninitialize RAM Data,udata 的資料須經程式去設定所以每次上電後資料一定會被清除。
如要要儲存掉電前的資料且可以被修改,一般都會選用 Internal EEPROM 來儲存的。放在 RAM 裡關機後準定遺失資料。如果資料事固定的那就宣告放在 Flash Memory 裡。

看起来你应该是使用 ROM data 的方式建立查表数据才对,怎会用到udata 的宣告去建立 uninitialize RAM Data,udata 的数据须经程序去设定所以每次上电后数据一定会被清除。
如要要储存掉电前的数据且可以被修改,一般都会选用 Internal EEPROM 来储存的。放在 RAM 里关机后准定遗失数据。如果数据事固定的那就宣告放在 Flash Memory 里。

發表於: 2008/7/17 14:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 大数据(>256字节)+伪指令
#3
新會員
新會員


查看用戶資訊
难道没有人用过伪指令定义大数据吗?

發表於: 2008/7/17 14:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 大数据(>256字节)+伪指令
#2
版主
版主


查看用戶資訊
聯合體(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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


大数据(>256字节)+伪指令
#1
新會員
新會員


查看用戶資訊
联合体(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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------