Re: [問題] 初學PIC系列單晶片
※ 引述《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
05/06 12:31, 2F
→
05/06 12:32, , 3F
05/06 12:32, 3F
→
05/09 18:49, , 4F
05/09 18:49, 4F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
1
3
ASM 近期熱門文章
PTT數位生活區 即時熱門文章