Re: [問題] 初學PIC系列單晶片

看板ASM (組合語言)作者 (此人掛網中……)時間16年前 (2008/05/06 00:08), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

05/06 12:30, , 1F
簡單易懂範例,非常感謝你。
05/06 12:30, 1F

05/06 12:31, , 2F
順帶提一下,於MPLAB IDE中,使用MACRO於BUILD後,
05/06 12:31, 2F

05/06 12:32, , 3F
會以"WARNING"方式進行提示。
05/06 12:32, 3F

05/09 18:49, , 4F
我覺得那個WARNING應該可以從IDE的選項中關掉
05/09 18:49, 4F
文章代碼(AID): #187p3YZd (ASM)
文章代碼(AID): #187p3YZd (ASM)