久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

ARM9(S3C2440)的IO口--LED流水燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-3-4 16:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
概述
    S3C2440A包含了130 個(gè)多功能輸入/輸出口引腳并且它們?yōu)槿缦嘛@示的八個(gè)端口:
– 端口A(GPA):25 位輸出端口
– 端口B(GPB):11 位輸入/輸出端口
– 端口C(GPC):16 位輸入/輸出端口
– 端口D(GPD):16 位輸入/輸出端口
– 端口E(GPE):16 位輸入/輸出端口
– 端口F(GPF):8 位輸入/輸出端口
– 端口G(GPG):16 位輸入/輸出端口
– 端口H(GPH):9 位輸入/輸出端口
– 端口J(GPJ):13 位輸入/輸出端口
   每個(gè)端口都可以簡(jiǎn)單的由軟件配置為各種系統(tǒng)配置和設(shè)計(jì)要求。你必須在開始主程序前定義使用的每個(gè)引腳的功能。如果沒有使用某個(gè)引腳的復(fù)用功能,這個(gè)引腳可以配置為I/O口。
IO口控制寄存器
端口配置寄存器(GPACON 至GPJCON)
    S3C2440A中,大多數(shù)端口為復(fù)用引腳。因此要決定每個(gè)引腳選擇哪項(xiàng)功能。PnCON(引腳控制寄存器)決
定了每個(gè)引腳使用哪項(xiàng)功能。
端口數(shù)據(jù)寄存器(GPADAT至GPJDAT)
   如果端口配置為輸出端口,可以寫入數(shù)據(jù)到PnDAT 的相應(yīng)位。如果端口配置為輸入端口,可以從PnDAT 的相
應(yīng)位讀取數(shù)據(jù)。
端口上拉寄存器(GPBUP 至GPJUP)
   端口上拉寄存器控制每個(gè)端口組的使能/禁止上拉電阻。當(dāng)相應(yīng)位為0 時(shí)使能引腳的上拉電阻。當(dāng)為1時(shí)禁止上拉電阻。如果使能了上拉電阻,那么上拉電阻與引腳的功能設(shè)置無關(guān)(輸入、輸出、DATAn、EINTn 等等)
雜項(xiàng)控制寄存器
   此寄存器控制睡眠模式,USB 引腳和CLKOUT 選擇的數(shù)據(jù)端口上拉電阻。
外部中斷控制寄存器
    24個(gè)外部中斷由各種信號(hào)方式觸發(fā)。EXTINT寄存器為外部中斷請(qǐng)求配置信號(hào)觸發(fā)方式為低電平觸發(fā)、高電平觸發(fā)、下降沿觸發(fā)、上升沿觸發(fā)或雙邊沿觸發(fā)。
   由于每個(gè)外部中斷引腳包含一個(gè)數(shù)字濾波器,中斷控制可以確認(rèn)請(qǐng)求信號(hào)是否長于3 個(gè)時(shí)鐘。
   EINT[15:0]用于喚醒源

   此LED流水燈實(shí)驗(yàn)使用PB口的GPB5-PGB8控制4個(gè)LED循環(huán)點(diǎn)亮。采用共陽極接法,即當(dāng)端口位為低電平時(shí)LED亮,高電平時(shí)LED滅。

步驟:
1.IO口初始化,設(shè)置GPBCON,GPBUP寄存器。
在這里PB口的GPB5-PGB8作為通用IO口使用,實(shí)現(xiàn)輸出功能,所以GPBCON的GPB5-PGB8位應(yīng)分別都為01,即GPBCON[17:10]為 01010101;GPBUP初始狀態(tài)全為0,即使能上拉電阻功能,可不用設(shè)置,此處進(jìn)行了設(shè)置。
I/O口與外圍設(shè)備連接一般要通過光電隔離或其他隔離器件,直接相連一定要確認(rèn)負(fù)載不能超過4個(gè)與非門。光電隔離一是可保護(hù)微處理器;二是可進(jìn)行電平轉(zhuǎn)換;三是可對(duì)某些信號(hào)進(jìn)行分配,所以在一般情況下都要加。
2.控制思路比較簡(jiǎn)單,讓PB口的5-8位循環(huán)變?yōu)榈碗娖剑ㄆ渌麜r(shí)間均為高電平),即可實(shí)現(xiàn)流水燈,在兩次電平變換中間加入延時(shí)。
3.程序
#definerGPBCON   (*(volatile unsigned *)0x56000010) //Port Bcontrol
#definerGPBDAT   (*(volatile unsigned *)0x56000014) //Port Bdata
#definerGPBUP    (*(volatile unsigned *)0x56000018) //Pull-upcontrol B

#define  LED1_ON (rGPBDAT&=~(1<<5))  //GPB5位清0
#define  LED1_OFF (rGPBDAT|=(1<<5) )  //GPB5位置1
#define  LED2_ON (rGPBDAT&=~(1<<6))
#define  LED2_OFF (rGPBDAT|=(1<<6))
#define  LED3_ON (rGPBDAT&=~(1<<7))
#define  LED3_OFF (rGPBDAT|=(1<<7))
#define  LED4_ON (rGPBDAT&=~(1<<8))
#define  LED4_OFF (rGPBDAT|=(1<<8))

void Delay(void)
{
int i;
for(i=0;i<1000000;i++);
}
int Main()
{
rGPBCON&=~((3<<10)|(3<<12)|(3<<14)|(3<<16)); //對(duì)GPBCON[10:17]清零
rGPBCON|=((1<<10)|(1<<12)|(1<<14)|(1<<16)); //設(shè)置GPB5~8為輸出
rGPBUP&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));  //設(shè)置GPB5~8的上拉功能
rGPBDAT|=(1<<5)|(1<<6)|(1<<7)|(1<<8);   //關(guān)閉LED

while(1)
{
  LED1_ON;Delay();LED1_OFF;
  LED2_ON;Delay();LED2_OFF;
  LED3_ON;Delay();LED3_OFF;
  LED4_ON;Delay();LED4_OFF;
}
return 0;
}
4.程序說明,程序中對(duì)寄存器的設(shè)置采用了#define LED1_ON (rGPBDAT&=~(1<<5))這種方法,相比直接賦值的方法,這種表示方法比較容易觀察出是寄存器的哪一位發(fā)生了變化,并且保證除了需要改變的位發(fā)生變化之外,其他位保持不變!

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看视频一区 | 欧美久久一区二区三区 | 久久久久亚洲视频 | 在线中文字幕日韩 | 91视频88av| 亚洲欧美综合精品久久成人 | 午夜噜噜噜 | 欧美精品一区二区蜜桃 | 一区二区日韩 | 黄色免费三级 | 国产aaaaav久久久一区二区 | 免费观看黄色片视频 | 操亚洲 | 99久久免费观看 | 国产精品久久久久久久久久三级 | 日韩精品欧美精品 | 中文字幕一区在线观看视频 | 婷婷久久精品一区二区 | 91精品一区二区三区久久久久 | 亚洲日日 | 精品福利在线视频 | 6080yy精品一区二区三区 | 亚洲国产高清高潮精品美女 | 久久久精品一区二区三区 | 久久精品国产99国产精品 | 久久成人精品视频 | 午夜精品久久久 | 国产精品黄色 | 精品天堂| 午夜影院网站 | 欧美不卡在线 | 国产成人免费视频 | 国产日韩91| 91视频一区二区三区 | 羞羞在线视频 | 91在线免费观看网站 | 国产成人精品免费视频大全最热 | 久久天堂| 99爱国产 | 日韩欧美专区 | 2019精品手机国产品在线 |