S3C2440A 具有130 個多功能輸入/輸出腳,分別包含在如下9 組端口中。
●1 個25 位輸出端口(端口A)。
●1 個11 位輸出端口(端口B)。
●4 個16 位輸入/輸出端口(端口C、D、E、G)。
●1 個8 位輸入/輸出端口(端口F)。
●1 個9 位輸入/輸出端口(端口H)。
●1 個13 位輸入/輸出端口(端口J)。
基本上,每個端口有三個寄存器:
GPnCON:端口配置寄存器,多數端口有多種功能,所以需要這個寄存器來使某個端口確定某一功能。
GPnDAT:端口數據寄存器,當端口為輸出功能時:寫這個寄存器就是使端口引腳輸出相應電平;當端口為輸入功能時:讀這個寄存器就是讀端口引腳上的相應電平; GPnUP:端口上拉寄存器,決定端口是否具有內部上拉功能。
下面做個程序,使GPF4引腳上的LED燈閃爍。 GPF4的設置
GPFCON[9:8] 00 = Input 01 = Output
10 = EINT[4] 11 = Reserved GPF4的設置
GPFDAT的相應位分別對應每個引腳 //********************************************************************
void Main(void)
{
int i;
……硬件初始化……
LED();
while(1); } void LED(void)
{
int i;
Uart_Printf("\nIO LED 實驗\n");
Uart_Printf("GPF4----LED1閃爍\n");
rGPFCON = rGPFCON & ~(3<<8) | 1<<8 ;//設置GPF4為輸出功能
while(1)
{ for(i=0; i<10000000; i++); //延時
rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4電平反轉
}
}
//******************************************************************* 結果如下圖:

Very good,我們又學會了用一種新的處理器點亮LED。
下面實驗一個四個燈的流水燈實驗,這四個燈接GPF4-GPF7 //********************************************************************
void Main(void)
{
int i;
……硬件初始化……
LED();
while(1); } void LED(void)
{
int i;
Uart_Printf("\nIO 流水燈 實驗\n");
rGPFCON = rGPFCON & ~(0xff<<8) | 1<<8 | 1<<10 | 1<<12 | 1<<14 ;//設置GPF4、5、6、7為輸出功能
rGPFDAT &= ~ ( 1<<4 | 1<<5 | 1<<6 | 1<<7 ) ;//GPF4電平反轉
while(1)
{ for(i=0; i<20000000; i++); //延時
rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4電平反轉
for(i=0; i<20000000; i++); //延時
rGPFDAT = rGPFDAT ^ 1<<5 ;//GPF5電平反轉
for(i=0; i<20000000; i++); //延時
rGPFDAT = rGPFDAT ^ 1<<6 ;//GPF6電平反轉
for(i=0; i<20000000; i++); //延時
rGPFDAT = rGPFDAT ^ 1<<7 ;//GPF7電平反轉
}
} //******************************************************************* 運行:四個燈輪流亮

|