日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]這一節(jié),介紹如何利用讀取RIS寄存器檢測引腳上的高低電平變化。新建一個工程,結(jié)構(gòu)如下圖所示:在main.c文件中,輸入以下代碼:#include “LPC11XX.H”#define LED1_ON LPC_GPIO1->DATA &= ~(1

這一節(jié),介紹如何利用讀取RIS寄存器檢測引腳上的高低電平變化。

新建一個工程,結(jié)構(gòu)如下圖所示:

在main.c文件中,輸入以下代碼:

#include “LPC11XX.H”

#define LED1_ON LPC_GPIO1->DATA &= ~(1<<0)

#define LED1_OFF LPC_GPIO1->DATA |= (1<<0)

#define LED2_ON LPC_GPIO1->DATA &= ~(1<<1)

#define LED2_OFF LPC_GPIO1->DATA |= (1<<1)

#define KEY1_DOWN (LPC_GPIO1->DATA&(1<<9))!=(1<<9)

#define KEY2_DOWN (LPC_GPIO1->DATA&(1<<10))!=(1<<10)

void led_init()

{

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON時鐘

LPC_IOCON->R_PIO1_0 &= ~0x07;

LPC_IOCON->R_PIO1_0 |= 0x01; //把P1.0腳設(shè)置為GPIO

LPC_IOCON->R_PIO1_1 &= ~0x07;

LPC_IOCON->R_PIO1_1 |= 0x01; //把P1.1腳設(shè)置為GPIO

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON時鐘

LPC_GPIO1->DIR |= (1<<0); // 把P1.0設(shè)置為輸出引腳

LPC_GPIO1->DATA |= (1<<0); // 把P1.0設(shè)置為高電平

LPC_GPIO1->DIR |= (1<<1); // 把P1.1設(shè)置為輸出引腳

LPC_GPIO1->DATA |= (1<<1); // 把P1.1設(shè)置為高電平

}

int main()

{

led_init();

while(1)

{

if((LPC_GPIO1->RIS&(1<<9))==(1<<9)) // 讀取RIS寄存器

{

LED1_ON;

while(KEY1_DOWN);

LED1_OFF;

LPC_GPIO1->IC = 0XFFF; // 清RIS狀態(tài)位

}

if((LPC_GPIO1->RIS&(1<<10))==(1<<10)) // 讀取RIS寄存器

{

LED2_ON;

while(KEY2_DOWN);

LED2_OFF;

LPC_GPIO1->IC = 0XFFF; // 清RIS狀態(tài)位

}

}

}

與上一節(jié)DATA的程序相比,重點在第26和33行,這里是讀取RIS寄存器,來判斷引腳上的電平高低。RIS寄存器是原始中斷狀態(tài)寄存器,只要有IS、IBE、IEV寄存器中設(shè)置的中斷方式產(chǎn)生,就會使得RIS位置1,由IS、IBE、IEV寄存器的默認(rèn)值可以看出,引腳為下降沿中斷,所以當(dāng)按鍵按下,產(chǎn)生低電平,RIS對應(yīng)位就會置1。還有一點需要注意的是,RIS寄存器需要軟件清0,如第31行和第38行。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉