[新手园地] 第六批-新手学习 第二贴 按键LED

[复制链接]
2130|0
 楼主| tony0708 发表于 2012-3-27 20:15 | 显示全部楼层 |阅读模式
LED, gp, IO, pi, GPIO
程序还是使用CUBE大哥提供的模板。这个程序,实现的是,读出板子上按键的值,当按其中一个按键时,LED流水灯往右边去滚动显示,当按下另一个按键时,LED流水灯往左边滚动显示。

  1. #include <stdio.h>
  2. #include "DrvGPIO.h"
  3. #include "DrvSYS.h"
  4. #include "NUC1xx.h"


  5. void delay(uint32_t i)
  6. {
  7.     uint32_t j;
  8.     while(i--)
  9.     {
  10.         for(j=0;j<1000;j++);
  11.     }   
  12. }



  13. int main ()
  14. {
  15.     uint32_t count=0;
  16.         uint8_t  flag =0;

  17.     UNLOCKREG();
  18.     SYSCLK->WRCON.XTL12M_EN=1;
  19.     LOCKREG();

  20.     DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT);               
  21.     DrvGPIO_Open(E_GPA,3, E_IO_OUTPUT);
  22.     DrvGPIO_Open(E_GPA,4, E_IO_OUTPUT);
  23.     DrvGPIO_Open(E_GPA,5, E_IO_OUTPUT);

  24.          DrvGPIO_Open(E_GPB,14,E_IO_INPUT );  
  25.            DrvGPIO_Open(E_GPB,15,E_IO_INPUT );

  26.     while(1)
  27.     {
  28.               if (DrvGPIO_GetBit(E_GPB,14) == 0)
  29.              {
  30.                      flag=0;
  31.                  }
  32.                    if (DrvGPIO_GetBit(E_GPB,15) == 0)
  33.              {
  34.                      flag=1;
  35.                  }

  36.                  
  37.                  if(flag==0)
  38.                  {
  39.                      count=(count+1)%8;
  40.              delay(200);
  41.              }
  42.                  else if(flag==1)
  43.                  {                           
  44.                          count=(count-1)%8;
  45.               delay(200);        
  46.                  }                  
  47.          
  48.          switch(count)
  49.          {
  50.               case 0: DrvGPIO_ClrBit(E_GPA,2); break;         
  51.               case 1: DrvGPIO_SetBit(E_GPA,2); break;
  52.               case 2: DrvGPIO_ClrBit(E_GPA,3); break;
  53.               case 3: DrvGPIO_SetBit(E_GPA,3); break;
  54.               case 4: DrvGPIO_ClrBit(E_GPA,4); break;
  55.               case 5: DrvGPIO_SetBit(E_GPA,4); break;
  56.               case 6: DrvGPIO_ClrBit(E_GPA,5); break;
  57.               case 7: DrvGPIO_SetBit(E_GPA,5); break;
  58.           default: break;
  59.           }
  60.      }
  61. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部