红联Linux门户
Linux帮助

nimi2440裸机LED程序问题

发布时间:2012-06-07 11:53:13来源:红联作者:24432972
本人初学者,这是我写的代码,没有语法错误,只是逻辑错误,无法实现我想要的结果,求教!!

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

#define LED1_BCL (3<<(2*5))
#define LED2_BCL (3<<(2*6))
#define LED3_BCL (3<<(2*7))
#define LED4_BCL (3<<(2*8))

#define LED1_OUT (1<<(2*5))
#define LED2_OUT (1<<(2*6))
#define LED3_OUT (1<<(2*7))
#define LED4_OUT (1<<(2*8))


#define LED1_ON ~(1<<5)
#define LED2_ON ~(1<<6)
#define LED3_ON ~(1<<7)
#define LED4_ON ~(1<<8)

#define LED1_OFF (1<<5)
#define LED2_OFF (1<<6)
#define LED3_OFF (1<<7)
#define LED4_OFF (1<<8)

#define BEEP_OFF ~(1<<0)

void delay(unsigned long ms)
{
for(; ms > 0; ms--);
}

int main(void)
{
/*设置LED的GPCON为输出*/
GPBCON &= ~(LED1_BCL | LED2_BCL | LED3_BCL | LED4_BCL);
GPBCON |= (LED1_OUT | LED2_OUT | LED3_OUT | LED4_OUT);

/*点亮LED1,延迟一段时间,再熄灭LED1*/
GPBDAT = LED1_ON & BEEP_OFF; //顺便关闭蜂鸣器的声响,注明BEEP 1为开,0为关
delay(1000);
GPBDAT |= LED1_OFF;
/*
GPBDAT = LED2_ON & BEEP_OFF;
delay(10);
GPBDAT |= LED2_OFF;

GPBDAT = LED3_ON & BEEP_OFF;
delay(10);
GPBDAT |= LED3_OFF;

GPBDAT = LED4_ON & BEEP_OFF;
delay(10);
GPBDAT |= LED4_OFF;
*/
return 0;
}


我的问题是为什么LED1灯亮了以后,延迟后不再熄灭了??跟我写的程序不符结果不符吗??
文章评论

共有 1 条评论

  1. lin772662623 于 2012-06-12 10:00:53发表:

    不是不符。只是你灯熄灭的时间太短,你根本看不到而已。你熄灭后面也加个延时就看到效果了