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

📄 lighttalk2.h

📁 LED的逆向应用:触摸感应-11.9M.zip
💻 H
字号:
#ifndef	_LIGHT_TALK_2_H_
#define	_LIGHT_TALK_2_H_
#include 	<avr/io.h>

/*******LEDs Ports*************************************/
# define LEDS0
# define LEDS1

#define	LED_EVEN	PORTB
#define	LED_ODD		PORTD
#define	LEDS0VAL	LED_EVEN
#define	LEDS1VAL	LED_ODD

#define	LEDS0DDR	DDRB
#define	LEDS1DDR	DDRD

//# define	LEDS0ADDR	0x36
//# define	LEDS1ADDR	0x30
enum addrPIN {LEDS1ADDR = 0x30,LEDS0ADDR = 0x36};
#define	LEDS0PIN	PINB
#define	LEDS1PIN	PIND

/* iom8.h PIND -> 0x16,PIND -> 0x 10 */
#define	_onLeds(x)	x=0x00;
#define	_offLeds(x)	x=0xff;
/*******Control Ports********************************/

#define	CTRLPORT	PORTC
#define	CTRLDDR		DDRC
#define	CTRLPIN		PINC

#define	LEDS1CTRL		PC5
#define	LEDS0CTRL		PC4
#define	LOOPCTRL	PC3
//# define SUART_TXD 	PC1
#define	STARTKEY	PC2



#define	_select(x)	CTRLPORT |= ( 1 << x ## CTRL )
#define	_ledCtrl(x)	CTRLPORT &= ~( 1 << x ## CTRL  )
#define	_rdKey(x)	(CTRLPIN & (1 << x))

#define	_ledsCathode_OutEN(x)				x ## DDR = 0xff;
#define _ledsCathode_InEN(x)				x ## DDR = 0x00;
#define	_ledsCathode_Pulled(x) 				x ## VAL = 0xff;

#define	_ledsCathode_High(x)				x ## VAL = 0xff;
#define	_ledsCathode_Low(x)  				x ## VAL = 0x00;
#define	_ledsCathode_ReadIO_Hi_Z(x)		x ## DDR = 0x00;x ## VAL = 0x00;
#define	_ledsCathode_ChangeToOutputLow(x)	x ## VAL = 0x00;x ## DDR = 0xff;
#define	_ledsCathode_ChangeToOutputHig(x)	x ## VAL = 0xff;x ## DDR = 0xff;
#define	_ledsCathode_Read(x) 	(x ## PIN);
#define	_ledsCathode_Pin(x)	_SFR_IO8(x);
/* 保证输入输出切换时不输出错误电平,详见手册 */

#define	_ledsAnode_High(x)	CTRLPORT &= ~( 1 << x ## CTRL )
#define	_ledsAnode_Low(x)	CTRLPORT |= ( 1 << x ## CTRL )


#define	_leftShift(x,y)	(x << y)
#define	_ledC


/******Timer 0 ***********************************/
#define	_runTimer0_TimeUS(x)	do{									\
									TCNT0 = (256-x);/* 计时初始值  */\
									TIMSK &= ~_BV(TOIE0);\
									/* CS2:0=010 八分频,TCNT0 = 1 -> 1us*/\
									/* 并开始计时 */\
									TCCR0 |= _BV(CS01);\
								}while(0)
#define _waitTimer0OV()	do{loop_until_bit_is_set(TIFR,TOV0);\
						/*写入逻辑1 清零TOV0 位*/\
						TIFR|=_BV(TOV0);\
						}while(0)
#define _whileTimer0OV(x)  	while( bit_is_clear(TIFR,TOV0));	\
							TIFR |= (1 << TOV0)

#define	_breakTimer0OV()	{								\
								if( bit_is_set(TIFR,TOV0) )	\
								{	TIFR |= (1 << TOV0);	\
									break;					\
								}							\
							}	
							 
						
#define	_stopTimer0()	TCCR0 &= ~(_BV(CS02)|_BV(CS01)|_BV(CS00))

/*******Timer1******************************************/
/*	CS1(2:1)=011;64分频,TCNT基数125->1ms--->计时长度 524.228
*
*/
#define	_runTimer1CTC(x)	do{				\
					unsigned char sreg;			\
					/* 保存全局中断标志 */		\
					sreg = SREG;				\
					/* 禁用中断 */				\
					cli();						\
					/* 设置TCNT1,OCR1A; 64,125基,单位1ms*/\
					TCNT1 = 0;					\
					OCR1A = x;					\
					TCCR1A = 0;					\
					TCCR1B = _BV(WGM12);			\
					/* 恢复全局中断标志*/		\
					SREG = sreg;				\
					TIMSK = _BV(OCIE1A);		\
					TCCR1B |= _BV(CS11)|_BV(CS10);\
						}while(0)

#define _rdTCNT1to(x)	do{						\
					unsigned char sreg;			\
					/* 保存全局中断标志*/		\
					sreg = SREG;				\
					/* 禁用中断*/				\
					cli();						\
					/* 将TCNT1 读入i */			\
					x = TCNT1;					\
					/* 恢复全局中断标志*/		\
					SREG = sreg;				\
					}while(0)
#define	_unTimer1CTC()	TIMSK &= ~_BV(OCIE1A)

#define	_runTimer1_TimeMS(x)	do{				\
					unsigned char sreg;			\
					/* 保存全局中断标志 */		\
					sreg = SREG;				\
					/* 禁用中断 */				\
					cli();						\
					/* 设置TCNT1 到i 64,125基,单位1ms*/\
					TCNT1 = 65536-(unsigned int)x * 125;	\
					/* 恢复全局中断标志*/		\
					SREG = sreg;				\
					TIMSK &= ~_BV(TOIE1);		\
					TCCR1B |= _BV(CS11)|_BV(CS10);\
						}while(0)
#define	_waitTimer1OV()	do{									\
						loop_until_bit_is_set(TIFR,TOV1);	\
						/*写入逻辑1 清零TOV0 位*/			\
						TIFR|=_BV(TOV1);					\
						}while(0)
#define	_stopTimer1()	TCCR1B &= ~(_BV(CS12)|_BV(CS11)|_BV(CS10))
/*
***************************************************************
* 软件发送硬件计时方式实现
*
*/
#define	SUART_TXD 	PC1
#define	SUART_PORT	PORTC
/*
	1bit=1/9600s=104us
*/
#define SUART_DPS		104
#define _suartBit0()    (SUART_PORT &= ~(1<<SUART_TXD))	
#define _suartBit1()	(SUART_PORT |=  (1<<SUART_TXD))
/******fuctions***********************************/
typedef	struct{
	char	low;
	char	high;
}CHAR2INT;
typedef	union{
	unsigned char i8[2];
	unsigned int	i16;
}INT2CHAR;
void ledsTurnOn(INT2CHAR witch);
void iniLeds();
void ledsSelect(char sel);

INT2CHAR valUnPack(unsigned int val);
unsigned int valPack(INT2CHAR val);

void suart_Byte(unsigned char input);
#endif

⌨️ 快捷键说明

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