📄 irda.c
字号:
/****************************************************************************
Shanghai Pallas Digital Tech. Ltd, (C) 2002 , All rights are reserved
File : IrDA.c
实现了实时时钟功能
****************************************************************************/
#include <vxworks.h>
#include <ioLib.h>
#include "base.h"
#if ( HARDWARE_VERSION == 2 )
#include "ads852.h"
#include "m852reg.h"
#include "m852mask.h"
#else
#include "ads8260.h"
#include "m8260reg.h"
#include "m8260mask.h"
#endif
#include "IrDA.h"
//#define OLD_IRDA
/********************************************************************
* init irda
*/
void init_irda( void )
{
#if ( HARDWARE_VERSION == 2 )
#else
U32 base = vxImmrGet();
U32 data , tep ;
#ifdef OLD_IRDA
int fd ;
//old type irda config
base = vxImmrGet();
//config clk pin
*M8260_PDODR( base ) &= ~( PD17 ) ;
*M8260_PDPAR( base ) |= PD17 ;
*M8260_PDDIR( base ) |= PD17 ;
*M8260_PDSO( base ) &= ~PD17 ;
fd = open( "/tyCo/1" , O_RDONLY , 0 ) ;
ioctl (fd , FIOBAUDRATE , 588 ) ;
close( fd ) ;
#else
//config clk pin
*M8260_PDODR( base ) &= ~IRDA_CLK_PIN ;
*M8260_PDPAR( base ) |= IRDA_CLK_PIN ;
*M8260_PDDIR( base ) |= IRDA_CLK_PIN ;
*M8260_PDSO ( base ) |= IRDA_CLK_PIN ;
//config the BRG5 CLK frequency
data = 4118400 / IRDA_BAUD_RATE + 1 ;
if( IRDA_BAUD_RATE <= 600 )
{
data = data / 16 ;
tep = 0x00010001 | ( data << 1 ) ;
}else{
tep = 0x00010000 | ( data << 1 ) ;
}
*M8260_BRGC5( base ) = tep ;
#endif
#endif
}
/*********************************************************************
* scan remoter input
*/
int scan_remoter_key( void )
{
U8 key ;
key = *IRDA_INPUT_DATA ;
/*check whether new irda data available*/
if( key & IRDA_READY )
{
*IRDA_INPUT_DATA = 0 ;
key = key & 0x3F ; /*get low 6 bit data*/
if( key == 0x3F ) /*filter the bad data*/
return -1 ;
return key ;
}
return -1 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -