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

標題: ARM9(S3C2440)的IO口--LED流水燈 [打印本頁]

作者: 51黑黑黑    時間: 2016-3-4 16:35
標題: ARM9(S3C2440)的IO口--LED流水燈
概述
    S3C2440A包含了130 個多功能輸入/輸出口引腳并且它們為如下顯示的八個端口:
– 端口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 位輸入/輸出端口
   每個端口都可以簡單的由軟件配置為各種系統配置和設計要求。你必須在開始主程序前定義使用的每個引腳的功能。如果沒有使用某個引腳的復用功能,這個引腳可以配置為I/O口。
IO口控制寄存器
端口配置寄存器(GPACON 至GPJCON)
    S3C2440A中,大多數端口為復用引腳。因此要決定每個引腳選擇哪項功能。PnCON(引腳控制寄存器)決
定了每個引腳使用哪項功能。
端口數據寄存器(GPADAT至GPJDAT)
   如果端口配置為輸出端口,可以寫入數據到PnDAT 的相應位。如果端口配置為輸入端口,可以從PnDAT 的相
應位讀取數據。
端口上拉寄存器(GPBUP 至GPJUP)
   端口上拉寄存器控制每個端口組的使能/禁止上拉電阻。當相應位為0 時使能引腳的上拉電阻。當為1時禁止上拉電阻。如果使能了上拉電阻,那么上拉電阻與引腳的功能設置無關(輸入、輸出、DATAn、EINTn 等等)
雜項控制寄存器
   此寄存器控制睡眠模式,USB 引腳和CLKOUT 選擇的數據端口上拉電阻。
外部中斷控制寄存器
    24個外部中斷由各種信號方式觸發。EXTINT寄存器為外部中斷請求配置信號觸發方式為低電平觸發、高電平觸發、下降沿觸發、上升沿觸發或雙邊沿觸發。
   由于每個外部中斷引腳包含一個數字濾波器,中斷控制可以確認請求信號是否長于3 個時鐘。
   EINT[15:0]用于喚醒源

   此LED流水燈實驗使用PB口的GPB5-PGB8控制4個LED循環點亮。采用共陽極接法,即當端口位為低電平時LED亮,高電平時LED滅。

步驟:
1.IO口初始化,設置GPBCON,GPBUP寄存器。
在這里PB口的GPB5-PGB8作為通用IO口使用,實現輸出功能,所以GPBCON的GPB5-PGB8位應分別都為01,即GPBCON[17:10]為 01010101;GPBUP初始狀態全為0,即使能上拉電阻功能,可不用設置,此處進行了設置。
I/O口與外圍設備連接一般要通過光電隔離或其他隔離器件,直接相連一定要確認負載不能超過4個與非門。光電隔離一是可保護微處理器;二是可進行電平轉換;三是可對某些信號進行分配,所以在一般情況下都要加。
2.控制思路比較簡單,讓PB口的5-8位循環變為低電平(其他時間均為高電平),即可實現流水燈,在兩次電平變換中間加入延時。
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)); //對GPBCON[10:17]清零
rGPBCON|=((1<<10)|(1<<12)|(1<<14)|(1<<16)); //設置GPB5~8為輸出
rGPBUP&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));  //設置GPB5~8的上拉功能
rGPBDAT|=(1<<5)|(1<<6)|(1<<7)|(1<<8);   //關閉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.程序說明,程序中對寄存器的設置采用了#define LED1_ON (rGPBDAT&=~(1<<5))這種方法,相比直接賦值的方法,這種表示方法比較容易觀察出是寄存器的哪一位發生了變化,并且保證除了需要改變的位發生變化之外,其他位保持不變!






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品在线观看一区二区 | 国产精品一区二区av | 人干人操 | 国产精品高清一区二区三区 | 国产精品小视频在线观看 | 欧美日韩精品免费 | 亚洲欧美中文日韩在线v日本 | 五月婷婷激情 | 精品国产一二三区 | 国产精品久久久久久久久久久久冷 | 特级做a爰片毛片免费看108 | 亚洲欧美日韩在线 | 久草综合在线 | 国产午夜精品一区二区三区四区 | 国产高清精品网站 | av在线成人 | 91精品国产综合久久久密闭 | 亚洲激情综合 | 亚洲精品视频播放 | 一区二区三区在线观看视频 | 美女国产 | 色.com| 91久久精品视频 | 日日干日日射 | 亚洲国产成人av好男人在线观看 | 欧美区在线观看 | 亚洲精品国产成人 | 精品国产伦一区二区三区观看方式 | 欧美日韩国产在线观看 | 国产精品一区二区三区在线 | 九九精品在线 | 国产精品视频一区二区三区不卡 | 日本黄色片免费在线观看 | 日本又色又爽又黄的大片 | 国产精品久久久久久久久久久新郎 | 蜜桃官网 | 亚洲精品91| 欧美极品在线视频 | 精久久 | 日韩精品在线一区 | 亚洲免费毛片 |