• 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: 直接定址需要切換bank嗎?
#10
版主
版主


查看用戶資訊
可以這麼說,但善用 Access Bank 會更好。

用 C18 寫更好....

發表於: 2005/4/10 15:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#9
資深會員
資深會員


查看用戶資訊
嗯嗯
就是指副程式的變數放到另一個bank裡
呼叫之後再切bank
執行完之後回到主程式再切回bank0
而主副程式間運算參數的傳遞
就用movff這個不必切bank的指令來做是吧~~

發表於: 2005/4/10 9:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#8
版主
版主


查看用戶資訊
我想 BANK 切換是程式架構的問題,以我寫 PIC 組合語言的經驗使用PIC18Fxxxx時,我會將中斷用到的變數及各個副程式彼此要傳遞的變數(參數) 等都放在 Access Bank, 其它副程式所使用的變數可以規劃到Bank裡。 例如 主副程式 1 & 主副程式 2 共同使用BANK1, 主副程式 2 & 主副程式 3 共同使用BANK2 ...,

大量資料存取就用 Index Address Mode (用FSR0-2), 使用 Index 模式是沒有 Bank 切換的問題。

發表於: 2005/4/9 20:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#7
資深會員
資深會員


查看用戶資訊
我剛剛翻了一下規格書
好像只有movff這個指令的定址方式是12位元
其他都是8位元
這麼說來幾乎所有的指令都必須要切換bank了?!

看來改天有空時把我的程式都全部修改算了
管他變數在哪一個位址
全部都切換bank
免得程式出錯在那邊除錯到死還不知道問題出在哪...

發表於: 2005/4/9 11:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#6
版主
版主


查看用戶資訊
PIC18Fxxxx 使用的變數超過 128 個 Access Bank的容量時就必須使用一般的 RAM 來儲存變數,這時候就有切 BANK 的要求,這是用 ASM 的限制;用C18寫就沒有BANK切換的問題。

從Data Sheet 抄下一段有關 BANK 的說明 :

BSR<3:0> holds the upper 4 bits of the 12-bit RAM
address. The BSR<7:4> bits will always read ’0’s, and
writes will have no effect.

A MOVLB instruction has been provided in the
instruction set to assist in selecting banks.


發表於: 2005/4/9 9:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#5
高級會員
高級會員


查看用戶資訊
定義變數時的位址 , 利用CBLOCK是OK的 , 並不會因為ACCESS BANK有問題 , 有問題的是BANKO , 當定義變數大於256時 , 會需要修改LKR的BANK區間定義 , ACCESS只是BANK0的一半 , 你的變數也沒超出256 , 試試看再加一個陣列讓它超過256 , 相信就有問題了 , 另外 , 在程式中使用的指令 , 利用MOVFF並不用切BANK , 但MOVWF就要動用到BSR來切換到變數所在的BANK

發表於: 2005/4/8 9:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#4
資深會員
資深會員


查看用戶資訊
我目前是沒有用FSR跟INDF來定址
上面那個程式只是拿來測試自動定址製表的

我目前使用 CBLOCK ENDC 來定變數位址
照FAE的說法是如果變數超過ACCESS RAM的位址
使用普通指令時就必須像PIC16那樣切換BANK
但我整個程式中完全沒去切換,也沒動到FSR
到目前為止執行起來就都沒問題
(我是用組合語言寫的)
所以我不確定到底需不需要切換BANK
也不知道變數再多一點會不會出問題
前一陣子怕會出問題還砍掉一堆變數
儘量都共用變數
但算一算也還有兩百個左右...

既然板主說沒問題
那就相信專業
繼續這樣寫下去吧

發表於: 2005/4/8 0:42
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#3
版主
版主


查看用戶資訊
其實,所謂的「切bank」 ,就是當一個指令中所含、代表address的位元不足以定址到所要的位址時,必須事先將額外需要的address位元,利用別的register,先設定好,再執行您真正要執行的指令。

如果使用FSR,配合INDF,就PIC18而言,FSR中所存放的address位元數,足以定址到全部RAM的位址,自然就不用「切bank」了。

如果您現在就可以存取到正確的位置,那就一直可以存取到正確位置。沒有什麼過一陣子就會不行了這類事情。

至於BSR的使用法,請參考右方W400的workshop教材,及PIC18 data sheet中的指令說明。


發表於: 2005/4/7 22:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 直接定址需要切換bank嗎?
#2
新會員
新會員


查看用戶資訊
我也在用18F系列来ACCESS RAM,我没有切换BANK,没有发现什么问题。如果你只需要用256位以下的地址,直接INCRESE FSR就可以了,但是如果要用到FSR0H的话,最好还是用POSTINCn,POSTDECn,PREINCn 和 PLUSWn。这样当FSR0L到0XFF的时候,FSR0H就会自动INCRESE了。

發表於: 2005/4/7 5:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


直接定址需要切換bank嗎?
#1
資深會員
資深會員


查看用戶資訊
使用PIC18F4320
剛剛寫個小程式測試直接定址存取暫存器
START
          MOVLW   06H                
;設定存取位址
          MOVWF   FSR1H              
;
          
MOVLW   00H                ;
          
MOVWF   FSR1L              ;
          
MOVLW   03FH               ;要存入的值放入虛擬暫存器
          MOVWF   INDF1              
;
          
BRA     START


如此一來我只要INCF FSR1L就可以連續寫入256個值製表

我想請問一下
由於這不是屬於直接存取暫存器ACCESS RAM
那我要讀寫這個表時需要改BSR來切換BANK嗎?
還是說只要改FSR1H跟FSR1L這兩個值就好?!

我程式裡的變數兩三百個
已經超過005FH
代理商的FAE跟我說18系列也是需要切BANK
但我直接使用沒有切換BANK也沒出問題..
上面那一段使用到0600H沒切換也沒出問題
所以想問問
18系列如果不切換BANK
程式執行久了以後會出問題嗎?

發表於: 2005/4/6 16:48
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... ]

教育訓練中心

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