基于fl2440开发板的闪烁灯编程(采用c语言)

本文介绍了一段使用C语言实现的延时函数,用于控制LED的闪烁。通过修改延时时间,可以调整LED闪烁的速度,实现简单的交互效果。

源代码:


#include"header.h"
#include"led.h"

#define GPBCON  (*(volatile unsigned *)0x56000010)
#define GPBDAT  (*(volatile unsigned *)0x56000014)
#define GPBUP   (*(volatile unsigned *)0x56000018)


/*
*****************************************************
*函数名称: Delay()
*函数功能: 延时
*参    数: int  x
*返 回 值: void
*****************************************************
*/
void Delay(int x) 
{
  int k, j;
  while(x)
  {
   for (k=0;k<=0xff;k++)
    for(j=0;j<=0xff;j++);
    
   x--;
  }
}

void led_main1()
{


 GPBCON = 0x1dd7fc; // GPB5,GPB6,GPB8,GPB10设置为输出
 GPBDAT = ((1<<5)|(1<<6)|(1<<8)|(1<<10)); //使LED全灭
 GPBDAT&=0xffe;  //关闭蜂鸣器
 GPBUP = 0x00;
 
 while (1)   // 死循环
 {
  
  GPBDAT = ~(1<<5); //LED0亮
  Delay(500);
  GPBDAT = ~(1<<6); //LED1亮
  Delay(500);
  GPBDAT = ~(1<<8); //LED2亮
  Delay(500);
  GPBDAT = ~(1<<10); //LED3亮
  Delay(500);
 }
 
}

书写的时候格式规范一定要写好。

 对多位进行置位  GPBDAT = ((1<<5)|(1<<6)|(1<<8)|(1<<10)); //使LED全灭

c语言的取反的知识补充:

printf("%x,%d\n",~7,~7);//输出:fffffff8,-8

源码编译环境vs.net2005、32位机

7(10)//.NETCLR规定整型变量默认为int类型,也就是说此处的7在内存中占有4个字节。

00000000 00000000 00000000 00000111(2)

按位取反运算
11111111 11111111 11111111 11111000
printf("%x\n",~7)//十六进制输出:fffffff8
printf("%d\n",~7)//十进制输出 :-8
需要注意的是计算机存储的是补码,然后取反是对每一位都取反,那么上面的GPBDAT = ~(1<<5); //LED0亮,这样除了2^5这一位取反之后为0,其他的都是1,所以只会有一个灯亮。


 

-----------------------------------------------------------坚持不懈,追求卓越----------------------------------------------------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值