Re: [問題] 寫PIC的C問題
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
12/13 22:53, 1F
→
12/13 23:12, , 2F
12/13 23:12, 2F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章