上一篇:">《学习ARM7从跑马灯和蜂鸣器开始(一)》
7.写代码实现跑马灯
下面是led实验工程代码main.c中的代码内容
#include "config.h" #include "delay.h"
上面两条语句用来包含config.h和delay.h两个头文件,因为下面要用到的uint32,IO0DIR等寄存器,还有delay()函数等内容都定义在这些头文件里面。
#define LED_1 1<<0 #define LED_2 1<<1 #define LED_3 1<<2
上面四条语句用来定义四个led等所在引脚的位置,便于程序使用。
#define LED1_TO_3 (LED_1|LED_2|LED_3)
上面这条语句把四个LED灯所在引脚或运算后定义到一个常量LED1_TO_3中,也是为了方便程序编写。
/****************************************************************************
* 名称:initSystem()
* 功能:初始化IO
****************************************************************************/
void initSystem(void)
{
PINSEL1 = PINSEL1 & (~(0xff<<12)); //led1~3设置为GPIO
IO0DIR=IO0DIR | LED1_TO_3; //led1~3设置为输出功能
IO0SET=IO0SET | LED1_TO_3; //led1~3同时输出高
}
上面的initSystem函数是为了初始化cpu的各个IO脚的状态,及设置四个LED灯所在IO脚的状态,并初始化它们。
/****************************************************************************
* 名称:Led_On(uint32 num)
* 功能:点亮LED
****************************************************************************/
void Led_On(uint32 num)
{
IO0SET=IO0SET | LED1_TO_3; //所有的led灭
IO0CLR=IO0CLR | num; //点亮num
}
上面的这个函数是为了点亮所给led号,其中参数num就是传进来的参数,代表哪个LED。
/****************************************************************************
* 名称:main()
* 功能:初始化led,并实现3个led灯轮流闪烁的效果。
****************************************************************************/
int main(void)
{
initSystem();
while(1)
{
Led_On(LED_1);
delay(10);
Led_On(LED_2);
delay(10);
Led_On(LED_3);
delay(10);
}
return 0;
}
Ads的安装使用方法见附录一。
四、独立写第一个程序:蜂鸣器
如果,跑马灯完全搞懂了,蜂鸣器程序是可以独立完成的。
用户1406868 2013-9-13 05:17
用户1555751 2010-8-26 15:34
用户1416972 2010-8-22 14:34
用户1416972 2010-8-22 13:18
用户1321756 2010-8-21 14:20
用户1560892 2010-8-21 10:36
用户1277994 2010-8-20 09:52