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

📄 ir.h

📁 ESS 公司VCD软件关于IR的编程!
💻 H
字号:
/* Copyright 1996, ESS Technology, Inc. */
/* SCCSID @(#)ir.h	1.5 04/09/03 */

/*
 * For mvd board, play only code
 * This is modified from version 1.17 of ir.h
 */

#ifndef _IR_H_
#define _IR_H_

#ifdef IR

#define IR_SYSCODE              0x20df
#define ASSIGN_SYSCODE          sysIRcode = IR_SYSCODE

/* State for receiving IR signals */
#ifdef IR_PHILIPS
#define IR_IDLE                 0
#define IR_LEADER               1
#define IR_CUSTOM               2
#ifdef DANCER
#define DANCER_CUSTOM           3
#endif
#endif

#if (IR_NEC || IR_SANYO)
#define IR_IDLE 		0
#define IR_LEADER_LOW 		1
#define IR_LEADER_HIGH 		2
#define IR_CUSTOM 		3
#define IR_REPEAT               4
#ifdef DANCER
#define DANCER_CUSTOM           5
#endif
#endif

#ifdef DANCER
GBLDEF0(unsigned short sysDANCERcode); /* IR's system code.             */
#endif
/* 
 * States for trasmitting IR signals. Since we do table lookup later
 * on, don't change any state assignment here.
 */
#define	IR_XMIT_IDLE		0	/* Not trasmitting anything	*/
#define	IR_XMIT_LEADER_LOW	1	/* Leader low  (9.0ms)		*/
#define	IR_XMIT_LEADER_HIGH	2	/* Leader high (4.5ms)		*/
#define	IR_XMIT_DATA		3	/* Actual data			*/
#define	IR_XMIT_GAP		4	/* Gap         (0.56ms)		*/
/* Jiang Hai loader requires a trailer (a repeat!) */
#define	IR_XMIT_REP_HIGH1	5	/* Repeat high1 (40.1ms)	*/
#define	IR_XMIT_REP_LOW1	6	/* Repeat low1  (9.1 ms)	*/
#define	IR_XMIT_REP_HIGH2	7	/* Repeat high2 (2.2 ms)	*/
#define	IR_XMIT_REP_LOW2	8	/* Repeat low2  (0.6 ms)	*/



/* The following timer values were set based on 33.9MHZ CPU clock, *
 * to fit different CPU frequencies, I use CLK_FACTOR to adjust    */
#define CLK_FACTOR      CPUCLK
/*
 * Use 8.533 us (16.67ns * 512) clock to send IR. Assume IR has 100us
 * error tolerance, I'll trigger time 40us before it should. As a result,
 * even if an interrupt sneaks in while we are sending IR code, we should
 * still be OK.
 */
#define IRW_LEADER_LOW  ((596-5)*CLK_FACTOR/339) /* 9    ms = 596 * .0151 */
#define IRW_LEADER_HIGH ((298-5)*CLK_FACTOR/339) /* 4.5  ms = 298 * .0151 */
#define IRW_GAP_LOW     ((37 -5)*CLK_FACTOR/339) /*  .56 ms =  37 * .0151 */
#define IRW_DATA_ZERO   ((37 -5)*CLK_FACTOR/339) /*  .565ms =  37 * .0151 */
#define IRW_DATA_ONE    ((112-5)*CLK_FACTOR/339) /* 1.69 ms = 112 * .0151 */


/*
 * Use 8.533 us (16.67ns * 512) clock to send IR. Assume IR has 100us 
 * error tolerance, I'll trigger time 40us before it should. As a result, 
 * even if an interrupt sneaks in while we are sending IR code, we should 
 * still be OK.
 */
#define	IRW_LEADER_LOW	((596-5)*CLK_FACTOR/339) /* 9    ms = 596 * .0151 */
#define	IRW_LEADER_HIGH	((298-5)*CLK_FACTOR/339) /* 4.5  ms = 298 * .0151 */
#define	IRW_GAP_LOW	((37 -5)*CLK_FACTOR/339) /*  .56 ms =  37 * .0151 */
#define	IRW_DATA_ZERO	((37 -5)*CLK_FACTOR/339) /*  .565ms =  37 * .0151 */
#define	IRW_DATA_ONE	((112-5)*CLK_FACTOR/339) /* 1.69 ms = 112 * .0151 */

/*
 * For JiangHai loader, there is always a "trailer" signal. If this
 * trail is missing, then the loader will not properly receive the
 * signal!
 */
#define	IRW_REP_HIGH1 ((2656)*CLK_FACTOR/339)	/* 40.1  ms =2656 * .0151 */
#define	IRW_REP_LOW1  ((603) *CLK_FACTOR/339)	/*  9.1  ms = 603 * .0151 */
#define	IRW_REP_HIGH2 ((146) *CLK_FACTOR/339)	/*  2.2  ms = 146 * .0151 */
#define	IRW_REP_LOW2  ((40)  *CLK_FACTOR/339)	/*  0.6  ms =  40 * .0151 */

#ifdef IRXMT
#ifdef	P1O
/*
 * Internal XOR gate will be used in the future
 * #define	SET_IRXOR			SET_AUX3
 * #define	CLEAR_IRXOR			CLEAR_AUX3
 * #define	IS_IRXOR_HIGH			AUX3_HIGH
 */
#define	OUTIR_LOW			CLEAR_AUX4
#define	OUTIR_HIGH			SET_AUX4
#define	TRISTATE_IR			TRISTATE_AUX4
#else
#ifdef	P2O
/*
 * Internal XOR gate will be used in the future
 * #define	SET_IRXOR			SET_AUX3
 * #define	CLEAR_IRXOR			CLEAR_AUX3
 * #define	IS_IRXOR_HIGH			AUX3_HIGH
 */
#define	OUTIR_LOW			CLEAR_AUX4
#define	OUTIR_HIGH			SET_AUX4
#define	TRISTATE_IR			TRISTATE_AUX4
#else
#ifdef	P3O
/*
 * Internal XOR gate will be used in the future
 * #define	SET_IRXOR			SET_AUX5
 * #define	CLEAR_IRXOR			CLEAR_AUX5
 * #define	IS_IRXOR_HIGH			AUX5_HIGH
 */
#define	OUTIR_LOW			CLEAR_AUX2
#define	OUTIR_HIGH			SET_AUX2
#define	TRISTATE_IR			TRISTATE_AUX2
#else
#ifdef	P4O
#define	OUTIR_LOW			CLEAR_AUX7
#define	OUTIR_HIGH			SET_AUX7
#define	TRISTATE_IR			TRISTATE_AUX7
#endif	/* P4O */
#endif	/* P3O  */
#endif	/* P2O */
#endif	/* P1O */
#endif	/* IRXMT */

EXPORT	char			tblKillIR[];
EXPORT	unsigned int		resend_delay;


#ifdef IRXMT
GBLDEF(char connect_inout, 0);	/* IR input and output are two		*
				 * different signals (i.e. 3208 is	*
				 * responsible for output the IR signal)*/
#endif
GBLDEF(unsigned short sysIRcode, 0); /* IR's system code.		*/

/************************************************************
 * global functions to be exported
 ************************************************************/
EXPORT	void			IR_init();
EXPORT	void			IR_send_FB();
EXPORT	void			IR_send_FF();
EXPORT	void			IR_send_Next();
EXPORT	void			IR_send_Pause();
EXPORT	void			IR_send_Play();
EXPORT	void			IR_send_data(unsigned char, int);
EXPORT	void			processKeycode();
EXPORT	void			IR_xmit_interrupt_service(void);
EXPORT  void                    IR_recv_interrupt_service(unsigned int);

#endif	/* IR */
/* in master and slave, we need codeIR */
GBLDEF(unsigned short codeIR, 0); /* Final IR code (OR with 0x100)	*/
#endif	/* _IR_H_	*/

⌨️ 快捷键说明

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