作者ruemann (此人掛網中……)
看板ASM
標題Re: [問題] 初學PIC系列單晶片
時間Tue May 6 00:08:00 2008
※ 引述《icetofux (豆腐)》之銘言:
最近在閱讀PIC系列單晶片的DATA SHEET,有幾個小問題想不通,想請問:
1.以80C51來說,我們可以直接將常數值用立即定址的方式給輸出PORT,如:
MOV P1,
#10101010B
但是在PIC系列IC的標準指令集中,資料搬移指令細分為很多種,卻沒有一種可
以直接將常數丟往輸出PORT(根據使用手冊敘述,PORT似乎可以視為暫存器,但
仍然沒有一種資料搬移指令可以將常數丟往暫存器。),如果要達到上述功能,
僅能靠:
MOVLW B'10101010'
MOVWF PORTB
來實現,以執行所花費時間來看,的確不一定會比較久,但對於撰寫的過程中,
每次要操作輸出PORT(暫存器)都得經過W累加器感覺有點麻煩,想請問一下是不是
有更簡單或是更常用的方法呢?
-------------------------------------------------------------------------------
巨集的功用在於簡化敘述,會在編譯/組譯之前先將設定的巨集做文字代換後,再進行
編譯/組譯
巨集的缺點:
1. 容易造成混亂
2. 大部份的 ICE 不支援巨集斷點
通常一些簡單的流程,可以利用巨集來讓程式更具有可讀性
PIC 我沒用過,不過根據找到的資料可以這樣用:
MOVPORT MACRO ppx, cc1 ; MOVPORT 是名稱,可自定但關鍵字不得使用
movlw cc1 ; cc1, ppx 是參數,名稱不是關鍵字即可
movwf ppx ; MACRO 說明巨集開始
ENDM ; ENDM 則代表巨集結束
使用舉例:
movport PORTB, B'10101010' ; 這樣有沒有比較清爽?
大概就是這樣
--
我是宅灣人
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.29.197
1F:推 icetofux:簡單易懂範例,非常感謝你。 05/06 12:30
2F:→ icetofux:順帶提一下,於MPLAB IDE中,使用MACRO於BUILD後, 05/06 12:31
3F:→ icetofux:會以"WARNING"方式進行提示。 05/06 12:32
4F:→ ruemann:我覺得那個WARNING應該可以從IDE的選項中關掉 05/09 18:49