davincievm_led.c
来自「TI的DM6446的硬件平台搭建的相关例子」· C语言 代码 · 共 107 行
C
107 行
/*
* 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 + =
减小字号Ctrl + -
显示快捷键?