ARM 學(xué)習(xí)筆記之二 LED點(diǎn)亮程序設(shè)計(jì)
第一步,先聊聊單片機(jī) LED 點(diǎn)亮:
單片機(jī)可操作單個(gè)位:sbit led1 = P1 ^ 2;
通過(guò)控制 變量 led1 來(lái)控制燈 的 亮 與 滅;
#include
sbit led1 = P1 ^ 2;
void delay(unsigned int xx)//延時(shí)
{
int i = 0;
while(xx--)
{
for(i = 0; i < 400; i++);
}
}
int main()
{
while(1)
{
led1 = 1//滅
delay(100);
led1 = 0;//亮
delay(100);
}
}
這是單片機(jī)的點(diǎn)燈實(shí)驗(yàn),下面我們將它引入到 ARM 上:
ARM 中不能像單片機(jī)那樣進(jìn)行單個(gè)的位操作,必須是整體,但也很簡(jiǎn)單...
有這么幾個(gè)步驟:
(1)分析電路(需要操作哪個(gè)燈,這是你要做的)
(2)分析驅(qū)動(dòng)方式(查詢寄存器的工作方式: 輸入 / 輸出 / ...)
(3)控制對(duì)應(yīng)引腳(查詢哪個(gè)引腳和該引腳是否拉高拉低)
不說(shuō)了,直接上代碼
#include
#define LED_A_ON(i) GPADAT &= ~(0x1 << i) //A口i燈亮
#define LED_B_ON(i) GPBDAT &= ~(0x1 << i) //B口i燈亮
#define LED_A_OFF(i) GPADAT |= (0x1 << i) //A口i燈亮
#define LED_B_OFF(i) GPBDAT |= (0x1 << i) //B口i燈亮
void LED_INIT(void);//初始化控制燈
void delay(unsigned int xx);//延時(shí)
int main()
{
LED_INIT();
while(1)//流水燈實(shí)驗(yàn)
{
LED_B_ON(5);
LED_B_OFF(6);
LED_A_OFF(25);
LED_A_OFF(26);
delay(100);
LED_B_ON(6);
LED_B_OFF(5);
LED_A_OFF(25);
LED_A_OFF(26);
delay(100);
LED_A_ON(25);
LED_B_OFF(5);
LED_B_OFF(6);
LED_A_OFF(26);
delay(100);
LED_A_ON(26);
LED_B_OFF(5);
LED_B_OFF(6);
LED_A_OFF(25);
delay(100);
}
}
void LED_INIT()//初始化控制燈
{
GPBCON &= ~(0x03 << 10);//GPB5清零
GPBCON |= (0x01 << 10); //置1
GPACON &= ~(0x3 << 25);
GPADAT |= (0x3 << 25);
GPBDAT |= (0x3 << 5);
delay(10000);
}
自己比較吧,是不是也不太難呢。