找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3996|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

2440裸機(jī)編程之三 通用I/O口

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68618 發(fā)表于 2014-11-12 14:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
S3C2440A 具有130 個(gè)多功能輸入/輸出腳,分別包含在如下9 組端口中。
●1 個(gè)25 位輸出端口(端口A)。
●1 個(gè)11 位輸出端口(端口B)。
●4 個(gè)16 位輸入/輸出端口(端口C、D、E、G)。
●1 個(gè)8 位輸入/輸出端口(端口F)。
●1 個(gè)9 位輸入/輸出端口(端口H)。
●1 個(gè)13 位輸入/輸出端口(端口J)。

基本上,每個(gè)端口有三個(gè)寄存器:
GPnCON:端口配置寄存器,多數(shù)端口有多種功能,所以需要這個(gè)寄存器來(lái)使某個(gè)端口確定某一功能。
GPnDAT:端口數(shù)據(jù)寄存器,當(dāng)端口為輸出功能時(shí):寫這個(gè)寄存器就是使端口引腳輸出相應(yīng)電平;當(dāng)端口為輸入功能時(shí):讀這個(gè)寄存器就是讀端口引腳上的相應(yīng)電平;
GPnUP:端口上拉寄存器,決定端口是否具有內(nèi)部上拉功能。

下面做個(gè)程序,使GPF4引腳上的LED燈閃爍。
GPF4的設(shè)置
GPFCON[9:8] 00 = Input   01 = Output
            10 = EINT[4] 11 = Reserved
GPF4的設(shè)置
GPFDAT的相應(yīng)位分別對(duì)應(yīng)每個(gè)引腳
//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

LED();
while(1);
}
void  LED(void)
{
int i;
Uart_Printf("\nIO LED 實(shí)驗(yàn)\n");
Uart_Printf("GPF4----LED1閃爍\n");
rGPFCON = rGPFCON & ~(3<<8) | 1<<8 ;//設(shè)置GPF4為輸出功能
while(1)
{ for(i=0; i<10000000; i++);  //延時(shí)
  rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4電平反轉(zhuǎn)
}
}
//*******************************************************************
結(jié)果如下圖:



Very good,我們又學(xué)會(huì)了用一種新的處理器點(diǎn)亮LED。

下面實(shí)驗(yàn)一個(gè)四個(gè)燈的流水燈實(shí)驗(yàn),這四個(gè)燈接GPF4-GPF7
//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

LED();
while(1);
}
void  LED(void)
{
int i;
Uart_Printf("\nIO 流水燈 實(shí)驗(yàn)\n");
rGPFCON = rGPFCON & ~(0xff<<8) | 1<<8 | 1<<10 | 1<<12 | 1<<14 ;//設(shè)置GPF4、5、6、7為輸出功能
rGPFDAT &= ~ ( 1<<4 | 1<<5 | 1<<6 | 1<<7 ) ;//GPF4電平反轉(zhuǎn)
while(1)
{ for(i=0; i<20000000; i++);  //延時(shí)
  rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4電平反轉(zhuǎn)
  
  for(i=0; i<20000000; i++);  //延時(shí)
  rGPFDAT = rGPFDAT ^ 1<<5 ;//GPF5電平反轉(zhuǎn)
  
  for(i=0; i<20000000; i++);  //延時(shí)
  rGPFDAT = rGPFDAT ^ 1<<6 ;//GPF6電平反轉(zhuǎn)
  
  for(i=0; i<20000000; i++);  //延時(shí)
  rGPFDAT = rGPFDAT ^ 1<<7 ;//GPF7電平反轉(zhuǎn)
}
}
//*******************************************************************
運(yùn)行:四個(gè)燈輪流亮

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:45457 發(fā)表于 2015-9-11 19:11 | 只看該作者
2440裸機(jī)編程之三 通用I/O口
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表