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


Browsing this Thread:   1 Anonymous Users






Re: CCS problem
#4
資深會員
資深會員


查看用戶資訊
pic16 的 ram 定址空間(包括暫存器)是以每 128 byte (0-7FH) 為一個 bank 的方式運作的,如果該型號有超過 128 byte 的定址需要,則應切換 bank , 詳見 datasheet 。

TRISA 的位置是在 bank 1 的 05 位址,其使用方式是先切換到 bank1 ,再存取 05 位址。 為了人的方便,bank 1 的 05h 位址稱為 85h 。
(如果已在 bank1,可免切換,當然,雖已在 bank 1 再重複切成 bank 1 ,除了多一條指令之外,也沒壞處 )

由組合語言組譯成機器碼時,bit 7 以上全部不處理,只處理 bit 6-0,也就是說:
movwf 05 與 movwf 85 乃至105,185,205,...所組譯出來的都是一樣的 movwf 05 ,至於之前的切 bank ,程式設計者自己必須留意。

單純由機器碼反組譯時,永遠是 movwf 05 ,到底存取哪個 bank ,你必須看程式之前切到哪個 bank。(pic 16 的程式機器碼是 14 bit,如何反組譯可看 datasheet)

由組合語言組譯時附帶產生的 lst 等檔案,程式文字則照程式設計者所寫為準。

※ 注意: 切換過 bank 之後,就一直停留在那個 bank,直到再度切換為止。

※ movwf 05 的機器碼 0085h=00 0000 1000 0101 其中 [00 0000 1 = movwf 的 OPCODE] [000 0101 = 位址 05]
(00 0000 1 也符合 00 0000 是 OPCODE, 1 代表目的是 file register)

發表於: 2006/10/26 8:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: CCS problem
#3
資深會員
資深會員


查看用戶資訊
參照:

goodwin 寫到:
我用ccs 4.0.12 在ccs中compile 一個很簡單的c-code. 設定io-port.

set_tris_a(0x38) 在.lst中可以發現被轉成
0037: MOVLW 38
0038: MOVWF 05

真的很怪,
有沒有人可以教一下如何把c-code轉成asm code. 再看一次由asm 去port可能會比較安全一點.


1. 請先說明你用的 CPU, 是 16F 的嗎?

若是 16F, 則 MOVWF 05 應寫入 0x85 (PORTA) 而非 0x05

0007: BSF 03.5 <= 注意這行
0008: BSF 1F.0
0009: BSF 1F.1
000A: BSF 1F.2
000B: BCF 1F.3
.................... set_tris_a(0x38);
000C: MOVLW 38
000D: MOVWF 05

設定 option => file format => symbolic 則 LST 檔出現

0007: BSF STATUS.5 <= 注意這行
0008: BSF ADCON1.0
0009: BSF ADCON1.1
000A: BSF ADCON1.2
000B: BCF ADCON1.3
.................... set_tris_a(0x38);
000C: MOVLW 38
000D: MOVWF TRISA


2. CCS 4.012 尚未穩定,若你是要開發產品,則建議退回 3.249 版,若僅是學習或玩耍,也建議與 3.249 比較一下

詳見 CCS 討論區 http://www.ccsinfo.com/forum

http://www.ccsinfo.com/forum/viewtopi ... c7d483d4af1a6935f6eecdbe3

發表於: 2006/10/25 12:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: CCS problem
#2
版主
版主


查看用戶資訊
用C寫了基本上就不要去理會它所轉成的組合語言,經 C 轉過的組合語言很不好了解,只要 C 所執行的程式功能正常就可以了。除非你遇到了不可理解的問題須詳細看組合語言的動作這時C所翻成的組合語言才有看的必要。

發表於: 2006/10/25 9:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


CCS problem
#1
初級會員
初級會員


查看用戶資訊
我用ccs 4.0.12 在ccs中compile 一個很簡單的c-code. 設定io-port.

set_tris_a(0x38) 在.lst中可以發現被轉成
0037: MOVLW 38
0038: MOVWF 05

真的很怪,
有沒有人可以教一下如何把c-code轉成asm code. 再看一次由asm 去port可能會比較安全一點.

發表於: 2006/10/24 19:06
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... ]

教育訓練中心

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