[讨论] 水剑学ARM

shuijian   2008-10-29 21:52 楼主
第一课:点亮LED

采用ARM(LPC21XX)的一个I/O口接LED,通过给它送0和1来设置LED的亮和灭。
仿真原理图:

代码如下:
/******************************************************************************/
/*                                                                            */
/*               led.c:  用ARM点亮一个led并闪烁,有点浪费……                    */
/*                                                                            */
/******************************************************************************/
#include                         
/*******************************************************************************
**函数名: delay()
**描述: 软件延时
********************************************************************************/
void delay (void)  {                        
  unsigned volatile long i,j;
  for(i=0;i<60000;i++)
  for(j=0;j<5;j++)
  ;
}
int main(void) {
  PINSEL0 = 0;                            /*设置引脚为GPIO */
  IO0DIR = 0x000001;                        /*将P0.0设置为输出 */
  IO0SET = 0x000001;                        /*将P0.0置1,也就是让led灭 */
  while (1)  {
      IO0CLR = 0x000001;                                  /*将P0.0置0,也就是让led点亮 */
    delay();
      IO0SET = 0x000001;
    delay();
  }
}

[ 本帖最后由 shuijian 于 2008-10-29 22:17 编辑 ]
欢迎访问我的博客:水剑

回复评论 (6)

嗬嗬,看起来很好玩。
加油!在电子行业默默贡献自己的力量!:)
点赞  2008-10-29 23:25
不错!努力!
处处留心皆学问!
点赞  2008-10-30 12:41

【水剑学ARM】<二>按键控制LED闪烁

通过按键改变端口的电平,读取端口电平,通过高低不同判断是否按键,同时根据按键决定灯的
亮和灭(Keil for ARM编译)。

代码如下:
/******************************************************************************/
/*                                                                            */
/*               led.c:  用ARM读取按键状态点亮或熄灭一个led,还是有点浪费…… */
/*                                                                            */
/******************************************************************************/
#include                         
/*******************************************************************************
**函数名: delay()
**描述: 软件延时
********************************************************************************/

void delay(void);

int main(void) {
  int P01State = 0;
  PINSEL0 = 0;                            /*设置引脚为GPIO */
  IO0DIR |= 0x000001;                        /*将P0.0设置为输出 */
  IO0DIR &= ~0x000002;                      /*设置P0.1输入*/               
  IO0SET = 0x000001;                        /*将P0.0置1,也就是让led灭 */
  while (1)  {
        P01State = IO0PIN&0x000002;           /*读取P0.1的状态*/
      if(P01State == 0)                    /*按键则点灯*/
      {
          IO0CLR = 0x000001;                     /*将P0.0置0,也就是让led点亮 */
          delay();
        }
      else{
            IO0SET = 0x000001;  
              delay();
            }
  }
  return 0;
}

void delay (void)  {                        
  unsigned volatile long i,j;
  for(i=0;i<60000;i++)
      for(j=0;j<5;j++);
}


电路图如下:
欢迎访问我的博客:水剑
点赞  2008-10-31 11:16
天天都在进步,太好了!
处处留心皆学问!
点赞  2008-10-31 11:50

在其他论坛写完了,接下来有时间搞搞操作系统

大家有兴趣可以看看,交流交流
水剑学ARM
欢迎访问我的博客:水剑
点赞  2008-11-25 15:36

Re:【水剑学ARM】

支持shuijian~  学习了 希望今后多传点实验的帖子
点赞  2009-5-15 09:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复