⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led_api.c

📁 arm汇编语言程序和一些实验代码
💻 C
字号:
/*
 *	led_api.c   -   led api ( user-level )
 *	
 *	Author: 	li ming <admin@lumit.org>
 *	Date:		2005-6-3
 *	Copyleft:	http://www.lumit.org
 */
 
#include "led_driver.h"

#define LED_LIGHT_VALUE	1

#define LED_DARK_VALUE	0

#define LED_BLINK_DELAY	100	// about 1 second = 100

/* set led related gpio */
int led_init( void )
{
	led_open();
	return 0;
}

/* get 4 leds status to low-4-bits of hex value */
int led_get_value( void )
{
	char buf[LED_NUM];
	int value = 0x0;
	int i = 0;
	
	// read the led status from led driver
	led_read( buf, LED_NUM );
	
	for( i = 0; i < LED_NUM; i++ )
		value = value | (buf[i] << i);
		
	// return the led status in low-bits of value
	return value;
}

/* set hex value of low-4-bits to 4 leds */
int led_set_value( int value )
{
	char buf[LED_NUM];
	int i = 0;

	// set the i bit value to buf[i]
	for( i = 0; i < LED_NUM; i++ )
		buf[i] = (value & (1 << i)) ? 1 : 0 ;
	
	// write buf value back
	led_write( buf, LED_NUM );
	
	return 0;
}

int led_all_light( void )
{
	char buf[LED_NUM];
	int i;
		
	for( i = 0; i < LED_NUM; i++ )
		buf[i] = LED_LIGHT_VALUE;
	
	led_write( buf, LED_NUM );
	
	return 0;
}

int led_all_dark( void )
{	
	char buf[LED_NUM];
	int i;	
	
	for( i = 0; i < LED_NUM; i++ )
		buf[i] = LED_DARK_VALUE;
	
	led_write( buf, LED_NUM );
	
	return 0;
}

/* delay for about one second */
static void led_delay( int time )	
{
	int i, j;

	for( i=0; i<time; i++ )
		for ( j=0; j<65536; j++ )
			;
}

int led_all_blink( void )
{
	led_all_dark();
	led_delay( LED_BLINK_DELAY );
	led_all_light();
	led_delay( LED_BLINK_DELAY );
	led_all_dark();	
	return 0;
}

int led_one_light( int position )
{	
	int led_value;
	
	// get current hex value from led driver
	led_value = led_get_value();
	
	// set the position bit to 1
	led_value |= (1 << position);
	
	// set current hex value to led driver
	led_set_value( led_value );
	
	return 0;
}

int led_one_dark( int position )
{
	int led_value;
	
	// get current hex value from led driver
	led_value = led_get_value();
	
	// set the position bit to 0
	led_value &= ~(1 << position);
	
	// set current hex value to led driver
	led_set_value( led_value );
	
	return 0;	
}

int led_one_blink( int position )
{
	led_one_dark( position );
	led_delay( LED_BLINK_DELAY );
	led_one_light( position );
	led_delay( LED_BLINK_DELAY );
	led_one_dark( position );	
	
	return 0;			
}

int led_test( void )
{	
	led_init();
	
	led_all_light();
	led_delay( 100 );
	
	led_all_dark();	
	led_delay( 100 );
	
	led_one_light( 0 );
	led_delay( 100 );
	
	led_one_light( 1 );
	led_delay( 100 );
	
	led_one_light( 2 );
	led_delay( 100 );
	
	led_one_light( 3 );
	led_delay( 100 );
	
	led_one_dark( 0 );
	led_delay( 100 );
	
	led_one_dark( 1 );
	led_delay( 100 );
	
	led_one_dark( 2 );
	led_delay( 100 );
	
	led_one_dark( 3 );
	led_delay( 100 );

	led_all_blink();
	
	led_one_blink( 0 );
	led_one_blink( 1 );
	led_one_blink( 2 );
	led_one_blink( 3 );
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -