【正文】
。 6. 我們通過設(shè)置 P2MDOUT = 0xFF 和 P3MDOUT = 0xFF 將 EMIF 端口( PP3)的輸出方式配置為推挽方式。 在執(zhí)行對(duì)片外操作的 MOVX 指令期間,外部存儲(chǔ)器接口將驅(qū)動(dòng)端口 2 和端口 3(由圖 中的紅點(diǎn)表示)。 接下來是 /INT0,被分配到引腳 。又因?yàn)橥獠看鎯?chǔ)器接口被配置為復(fù)用方式,所以交叉開關(guān)也跳過 (ALE)。 接下來是 UART1,所以 被分配給 TX1。 UART0 有最高優(yōu)先權(quán),所以 被分配給 TX0, 被分配給 RX0。 3. 將作為模擬輸入的端口 1 引腳配置為模擬輸入方式:設(shè)置 P1MDIN 為 0xE3( 、 和 為模擬輸入,所以它們的對(duì)應(yīng) P1MDIN 被設(shè)置為邏輯‘ 0’)。配置步驟如下: 1. 按 UART0EN = UART1E = SMB0EN = INT0E = INT1E = 1 和EMIFLE =1設(shè)置 XBR0、 XBR1 和 XBR2,則有: XBR0 = 0x05, XBR1 = 0x14,XBR2 = 0x06。另外,我們將外部存儲(chǔ)器接口配置為復(fù)用方式并使用低端口。端口引腳的輸出配置不受 EMIF 操作的影響,但讀操作將禁止數(shù)據(jù)總線上的輸出驅(qū)動(dòng)器。 如果外部存儲(chǔ)器接口( EMIF)被設(shè)置在低端口(端口 03), EMIFLE( )位應(yīng)被設(shè)置為邏輯‘ 1’,以使交叉開關(guān)不將 (/WR)、 (/RD)和 (/ALE)(如果外部存儲(chǔ)器接口使用復(fù)用方式)分配給外設(shè)。 2. 禁止引腳的弱上拉部件。這可以防止在引腳上的電壓接近 VDD / 2 時(shí)消耗額外的電源電流。缺省情況下端口引腳為數(shù)字輸入方式。 端口 1 的引腳可以用作 ADC1 模擬多路開關(guān)的模擬輸入。當(dāng)任何引腳被驅(qū)動(dòng)為邏輯‘ 0’時(shí),弱上拉自動(dòng)取消;即輸出引腳不能與其自身的上拉部件沖突。 每個(gè)端口引腳都有一個(gè)內(nèi)部弱上拉部件,在引腳與 VDD 之間提供阻性連接(約 100 kΩ ),在缺省情況下該上拉器件被使能。當(dāng)檢測(cè)到 沿發(fā) 生時(shí), P3IF寄存器(見圖 )中對(duì)應(yīng)的外部中斷標(biāo)志( IE6或 IE7)將被置‘ 1’。 如果一個(gè)端口引腳被交叉開關(guān)分配給某個(gè)數(shù)字外設(shè),并且該引腳的功能為輸入(例如 UART0 的接收引腳 RX0),則該引腳的輸出驅(qū)動(dòng)器被自動(dòng)禁止。 通過設(shè)置輸出方式為“漏極開路”并向端口數(shù)據(jù)寄存器中的相應(yīng)位寫‘ 1’將端口引腳配置 為數(shù)字輸入。 不管交叉開關(guān)是否將端口引腳分配給某個(gè)數(shù)字外設(shè),端口引腳的輸出方式都受 PnMDOUT寄存器控制。例如 為邏輯 ‘ 1’時(shí)將 配置為推挽方式; ‘ 0’時(shí)將 配置為漏極開路方式。當(dāng)系統(tǒng)中不同器件的端口引腳有共享連接,即多個(gè)輸出連接到同一個(gè)物理線時(shí)(例如 SMBus 連接中的 SDA 信號(hào)),使用漏極開路方式可以防止不同器件之間的爭(zhēng)用。在推挽方式,向端口數(shù)據(jù)寄存器中的相應(yīng)位寫邏輯‘ 0’將使端口引腳被驅(qū)動(dòng)到 GND,寫邏輯‘ 1’將使端口引腳被驅(qū)動(dòng)到 VDD。 在 XBARE( )被設(shè)置為邏輯‘ 1’之前,端口 03 的輸出驅(qū)動(dòng)器保持禁止?fàn)顟B(tài)。在 XBARE 被設(shè)置為邏輯‘ 1’之前,端口 03 的輸出驅(qū)動(dòng)器應(yīng)被明確禁止,以防止對(duì)交叉開關(guān)寄存器和其它寄存器寫入時(shí)在端口引腳上產(chǎn)生爭(zhēng)用。一旦配置完畢,將不再對(duì)其重新編程。在讀 修改 寫指令的讀周期,所讀的值是端口數(shù)據(jù)寄存器的內(nèi)容,而不是端口引腳本身的狀態(tài)。 不管交叉開關(guān)是否將引腳分配給外設(shè),讀一個(gè)端口數(shù)據(jù)寄存器(或端口位)將總是返回引腳本身的邏輯狀態(tài)。被交叉開關(guān)分配的那些端口引腳的輸出狀態(tài)受使用這些引腳的數(shù)字外設(shè)的控制。被使能的外設(shè)的每種組合導(dǎo)致唯一的器件引腳分配。注意:當(dāng)選擇了串行通信外設(shè)(即 SMBus、 SPI 或 UART)時(shí),交叉開關(guān)將為所有相關(guān)功能分配引腳。因?yàn)?UART0有最高優(yōu)先權(quán),所以當(dāng) UART0EN 位被設(shè)置為邏輯‘ 1’時(shí)其引腳將總是被分配到 和 。 當(dāng)交叉 開關(guān)配置寄存器 XBR0、 XBR1 和 XBR2 中外設(shè)的對(duì)應(yīng)使能位被設(shè)置為邏輯‘ 1’時(shí),交叉開關(guān)將端口引腳分配給外設(shè),如圖 、圖 和圖 所示。端口引腳的分配順序是從 開始,可以一直分配到 。端口 1 的引腳可以用做 ADC1 的模擬輸入。這種資源分配的靈活性是通過使 用優(yōu)先權(quán)交叉開關(guān)譯碼器實(shí)現(xiàn)的。 P0、 P P2 和 P3 中的每個(gè)引腳既可定義為通用的端口 I/O( GPIO)引腳,又可以分配給一個(gè)數(shù)字外設(shè)或功能(例如: UART0 或 /INT1)。所有引腳都耐 5V 電壓,都可以被配置為漏極開路或推挽輸出方式和弱上拉。低端口( P0、 P P2 和 P3)既可以按位尋址也可以按字節(jié)尋址。 these interrupts are configurable as falling or risingedge sensitive using the IE6CF () and IE7CF () bits. When an active edge is detected on or , a corresponding External Interrupt flag (IE6 or IE7) will be set to a logic 1 in the P3IF register (See Figure ). If the associated interrupt is enabled, an interrupt will be generated and the CPU will vector to the associated interrupt vector location. See Section “. Interrupt Handler” on page 116 for more information about interrupts. By default, each Port pin has an internal weak pullup device enabled which provides a resistive connection (about 100 k兦 ) between the pin and VDD. The weak pullup devices can be globally disabled by writing a logic 1 to the Weak Pullup Disable bit, (WEAKPUD,). The weak pullup is automatically deactivated on any pin that is driving a logic 0。 the default state is OpenDrain. In the PushPull configuration, writing a logic 0 to the associated bit in the Port Data register will cause the Port pin to be driven to GND, and writing a logic 1 will cause the Port pin to be driven to VDD. In the OpenDrain configuration, writing a logic 0 to t