• 沒有找到結果。

IOB 輸入資料暫存器:P_IOB_GPIO_INPUT(0x88200070) 讀該暫存器可以得到 IOB0~IOB5 的輸入資料。

在文檔中 嵌入式微處理器 (頁 165-168)

表 4-11 P_IOB_GPIO_INPUT(0x88200070)

b31~b14 b13~b8 b7~b0

讀/寫 - R/W -

預設值 - 0 -

名稱 - IOB_INPUT -

IOB_INPUT b13~b8 IOB5~IOB0 的輸入資料

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 165 V1.1 - Agu 29, 2007

4.1.5 基本操作

設置 IOA0、IOA1 為輸入埠,讀取 IOA0、IOA1 的輸入資料,參考程式段如下:

unsigned int a; // 定義一個變數

*P_IOA_GPIO_SETUP = 0x03030000; // 設置 IOA0、IOA1 為輸入埠 a = *P_IOA_GPIO_INPUT; // 讀取 IOA0、IOA1 的埠值 a &= 0x00000003; // 得到 IOA0、IOA1 的值

設置 IOA0、IOA1 為輸出使能,輸出高電平,參考程式段如下:

*P_IOA_GPIO_SETUP = 0x00000300; // IOA0、IOA1 輸出使能

*P_IOA_GPIO_SETUP |= 0x00000003; // IOA0、IOA1 輸出高電平

設置 IOA1 為上升沿外部中斷,查詢該中斷發生,參考程式段如下:

*P_INT_MASK_CTRL2 &= ~C_INT_GPIO_DIS; // 使能 IRQ 中斷

*P_IOA_GPIO_INT = C_IOA1_INTRISE_EN // 使能 IOA1 上升沿外部中斷 | C_IOA1_INTRISE_FLAG;

while(1) {

if(*P_IOA_GPIO_INT & C_IOA1_INTRISE_FLAG) // 判斷中斷是否發生 {

*P_IOA_GPIO_INT |= C_IOA1_INTRISE_FLAG; // 清除中斷旗標位元 }

}

4.2 計時器——TIMER

4.2.1 概述

SPCE3200 內嵌 6 個 16 位 CCP(Compare、Capture、PWM,比較、擷取、PWM 輸出)

計時器:Timer0、Timer1、Timer2、Timer3、Timer4 和 Timer5。6 個計時器的功能結構完 全相同,2 個時鐘源可供選擇 27MHz/(M+1)或 32768Hz 即時時鐘。

4.2.2 特性

Timer0~Timer5 這 6 個計時器均可以編程設置工作方式及時鐘源。可以編程設置為 normal 模式,即定時計數模式;CMP 模式,即比較模式;CAP 模式,即擷取模式;PWM 模式。每 個計時器也可以單獨設置時鐘源,選擇時鐘源 27MHz/(M+1)或 32768Hz 即時時鐘。

4.2.3 插腳描述

當計時器工作在比較輸出模式、擷取輸入模式和 PWM 輸出模式時,均需要透過晶片管腳輸

入、輸出資料,表 4-12列出了這些管腳:

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 166 V1.1 - Agu 29, 2007

表 4-12 計時器 CCP 管腳描述

插腳名稱 插腳號 插腳屬性 插腳功能

USBDET 156 I/O 作為 Timer_CCP0 的輸入輸出 UART_RX 40 I/O 作為Timer_CCP1 的輸入輸出 UART_TX 39 I/O 作為Timer_CCP2 的輸入輸出 JTAG_TRSTN 153 I/O 作為Timer_CCP3 的輸入輸出 IOA0 41 I/O 作為Timer_CCP4 的輸入輸出 IOA1 42 I/O 作為Timer_CCP5 的輸入輸出

4.2.4 結構

計時器 Timer 的結構如圖 4-3所示:由於 6 個計時器的結構完全相同,以 Timer0 介紹計時器 的結構。時鐘源可以透過編程選擇其一,16 位計數器在選擇的頻率下從計數初值計數,控制 邏輯控制計時器 Timer 的使能、中斷使能等,當工作在 CCP 模式下,CCP 暫存器單元作為 計算 PWM 占空比、比較輸出或擷取輸入的存儲單元。

32768Hz

比較邏輯

16位計數器

邊沿邏輯 計數初值

PWM控制邏輯 CCP寄存器單元 PLLV/(M+1)

CCP IO IRQ

IRQ

控制邏輯 IRQ

圖 4-3 Timer 的結構

4.2.5 暫存器描述

由於 6 個計時器的結構、使用方法完全相同,這裏以 Timer0 為例介紹。共有 9 個暫存器單 元與計時器 Timer0 有關,參考表 4-13:

表 4-13 Timer0 相關的暫存器

暫存器中文名稱 暫存器英文名稱 位址

TIMER 時鐘選擇暫存器 P_TIMER_CLK_SEL 0x882100E4 TIMER 介面選擇暫存器 P_TIMER_INTERFACE_SEL 0x88200010

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 167 V1.1 - Agu 29, 2007

暫存器中文名稱 暫存器英文名稱 位址

TIMER0 時鐘配置暫存器 P_TIMER0_CLK_CONF 0x8821006C TIMER0 控制暫存器 P_TIMER0_MODE_CTRL 0x88160000 TIMER0 CCP 控制暫存器 P_TIMER0_CCP_CTRL 0x88160004 TIMER0 計數初值資料暫存器 P_TIMER0_PRELOAD_DATA 0x88160008 TIMER0 計數暫存器 P_TIMER0_COUNT_DATA 0x88160010 TIMER0 CCP 計數初值資料暫存器 P_TIMER0_CCP_DATA 0x8816000C

其中 P_TIMER_CLK_SEL、P_TIMER_INTERFACE_SEL 為 Timer0~Timer5 共用。下麵分

別介紹:

在文檔中 嵌入式微處理器 (頁 165-168)