📄 davincievm_led.c
字号:
/*
* Copyright 2005 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*
* Not for distribution.
*/
/*
* LED implementation
*
*/
#include "davincievm_led.h"
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_init( ) *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_init( )
{
return DAVINCIEVM_LED_setall( 0xFF );
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_getall( pattern ) *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_getall( Uint16 *pattern )
{
return DAVINCIEVM_I2C_read( LED_I2C_ADDR, ( Uint8* )pattern, 1 );
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_setall( pattern ) *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_setall( Uint16 pattern )
{
return DAVINCIEVM_I2C_write( LED_I2C_ADDR, ( Uint8* )&pattern, 1 );
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_on( number ) *
* *
* number <- LED# [0:7] *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_on( Uint16 number )
{
Int16 retcode = 0;
Uint16 pattern;
Uint16 ledbit = ( 1 << ( 7 - number ) ); // Match number w/ LED labels
retcode |= DAVINCIEVM_LED_getall( &pattern ); // Get LED pattern
pattern &= ~ledbit; // Set LED #
retcode |= DAVINCIEVM_LED_setall( pattern ); // Set LED pattern
return retcode;
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_off( number ) *
* *
* number <- LED# [0:7] *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_off( Uint16 number )
{
Int16 retcode = 0;
Uint16 pattern;
Uint16 ledbit = ( 1 << ( 7 - number ) ); // Match number w/ LED labels
retcode |= DAVINCIEVM_LED_getall( &pattern ); // Get LED pattern
pattern |= ledbit; // Set LED #
retcode |= DAVINCIEVM_LED_setall( pattern ); // Set LED pattern
return retcode;
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_LED_toggle( number ) *
* *
* number <- LED# [0:7] *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_LED_toggle( Uint16 number )
{
Int16 retcode = 0;
Uint16 pattern;
Uint16 ledbit = ( 1 << ( 7 - number ) ); // Match number w/ LED labels
retcode |= DAVINCIEVM_LED_getall( &pattern ); // Get LED pattern
if ( ( pattern & ledbit ) == 0 )
retcode |= DAVINCIEVM_LED_off( number ); // Toggle LED OFF
else
retcode |= DAVINCIEVM_LED_on( number ); // Toggle LED ON
return retcode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -