Re: [問題] 寫PIC的C問題

看板ASM (組合語言)作者 (小D(滴))時間16年前 (2008/12/13 22:34), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
1.就如你所說,LATD和PORTD輸出都是相同。 但我控制輸出和判別輸入,都是用PORTD... 因為當是輸入時,只有能從PORTD判別...LATD沒辦法做判別。 2. 以下為例 extern volatile near unsigned char PORTD; extern volatile near union { struct { unsigned RD0:1; unsigned RD1:1; unsigned RD2:1; unsigned RD3:1; unsigned RD4:1; unsigned RD5:1; unsigned RD6:1; unsigned RD7:1; }; 所以可以用PORTDbits.RD0 = 0; 做單獨bit控制。 也如你程式這段 LATDbits.LATD0 = 1; ※ 引述《theend1109 (工作真難找)》之銘言: : ※ [本文轉錄自 C_and_CPP 看板] : 作者: theend1109 (工作真難找) 看板: C_and_CPP : 標題: [問題] 寫PIC的C問題 : 時間: Sat Dec 13 15:34:44 2008 : 如果這問還是不適合PO在這,那我還是會自D的! : #include <p18f4455.h> : void main (void) { : LATD = 0x00; : TRISD = 0xFF; : LATDbits.LATD0 = 1; : while (1) ; : } : 這是書裡面寫的範例程式 : 動作就是讓PORTD的第一顆LED亮 : 而程式裡並沒有PORTD這變數,因為讓LED亮的是LATD這個變數 : 而這就是我看不懂的地方,書上說PORTD跟LATD是用相同特殊暫存器 : 所以LATD輸出就是等於PORTD輸出 : 書上是說在標頭檔,利用UNION跟STRUCT來完成這樣的動作 : 但我怎麼看都看不懂 : 有沒有人能幫我解釋一下 : 標頭檔在連結裡 : http://www.wretch.cc/blog/theend1109/20708116 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.80.6

12/13 22:53, , 1F
可以解釋一下,為何LATD會跟PORTD同個暫存器嘛?
12/13 22:53, 1F

12/13 23:12, , 2F
書上不是有方塊圖??
12/13 23:12, 2F
文章代碼(AID): #19GyVyyJ (ASM)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19GyVyyJ (ASM)