/************************************************************************
*
* 文件名:avr.h
*
* 文件描述:AVR开发自定义头文件
*
* 创建人: Crazy_huaer(Neo), 2010年5月6日
*
* 版本号:1.1
*
* 修改记录: 增加了对数码管的操作
*
************************************************************************/
#include <avr/io.h>
#include <avr/interrupt.h>
//Define Register Operate
#define clearPA0() (PORTA&=~(1<<PA0))
#define clearPA1() (PORTA&=~(1<<PA1))
#define clearPA2() (PORTA&=~(1<<PA2))
#define clearPA3() (PORTA&=~(1<<PA3))
#define clearPA4() (PORTA&=~(1<<PA4))
#define clearPA5() (PORTA&=~(1<<PA5))
#define clearPA6() (PORTA&=~(1<<PA6))
#define clearPA7() (PORTA&=~(1<<PA7))
#define clearPB0() (PORTB&=~(1<<PB0))
#define clearPB1() (PORTB&=~(1<<PB1))
#define clearPB2() (PORTB&=~(1<<PB2))
#define clearPB3() (PORTB&=~(1<<PB3))
#define clearPB4() (PORTB&=~(1<<PB4))
#define clearPB5() (PORTB&=~(1<<PB5))
#define clearPB6() (PORTB&=~(1<<PB6))
#define clearPB7() (PORTB&=~(1<<PB7))
#define clearPC0() (PORTC&=~(1<<PC0))
#define clearPC1() (PORTC&=~(1<<PC1))
#define clearPC2() (PORTC&=~(1<<PC2))
#define clearPC3() (PORTC&=~(1<<PC3))
#define clearPC4() (PORTC&=~(1<<PC4))
#define clearPC5() (PORTC&=~(1<<PC5))
#define clearPC6() (PORTC&=~(1<<PC6))
#define clearPC7() (PORTC&=~(1<<PC7))
#define clearPD0() (PORTD&=~(1<<PD0))
#define clearPD1() (PORTD&=~(1<<PD1))
#define clearPD2() (PORTD&=~(1<<PD2))
#define clearPD3() (PORTD&=~(1<<PD3))
#define clearPD4() (PORTD&=~(1<<PD4))
#define clearPD5() (PORTD&=~(1<<PD5))
#define clearPD6() (PORTD&=~(1<<PD6))
#define clearPD7() (PORTD&=~(1<<PD7))
#define setPA0() (PORTA|=(1<<PA0))
#define setPA1() (PORTA|=(1<<PA1))
#define setPA2() (PORTA|=(1<<PA2))
#define setPA3() (PORTA|=(1<<PA3))
#define setPA4() (PORTA|=(1<<PA4))
#define setPA5() (PORTA|=(1<<PA5))
#define setPA6() (PORTA|=(1<<PA6))
#define setPA7() (PORTA|=(1<<PA7))
#define setPB0() (PORTB|=(1<<PB0))
#define setPB1() (PORTB|=(1<<PB1))
#define setPB2() (PORTB|=(1<<PB2))
#define setPB3() (PORTB|=(1<<PB3))
#define setPB4() (PORTB|=(1<<PB4))
#define setPB5() (PORTB|=(1<<PB5))
#define setPB6() (PORTB|=(1<<PB6))
#define setPB7() (PORTB|=(1<<PB7))
#define setPC0() (PORTC|=(1<<PC0))
#define setPC1() (PORTC|=(1<<PC1))
#define setPC2() (PORTC|=(1<<PC2))
#define setPC3() (PORTC|=(1<<PC3))
#define setPC4() (PORTC|=(1<<PC4))
#define setPC5() (PORTC|=(1<<PC5))
#define setPC6() (PORTC|=(1<<PC6))
#define setPC7() (PORTC|=(1<<PC7))
#define setPD0() (PORTD|=(1<<PD0))
#define setPD1() (PORTD|=(1<<PD1))
#define setPD2() (PORTD|=(1<<PD2))
#define setPD3() (PORTD|=(1<<PD3))
#define setPD4() (PORTD|=(1<<PD4))
#define setPD5() (PORTD|=(1<<PD5))
#define setPD6() (PORTD|=(1<<PD6))
#define setPD7() (PORTD|=(1<<PD7))
#define opposePA0() (PORTA^=(1<<PA0))
#define opposePA1() (PORTA^=(1<<PA1))
#define opposePA2() (PORTA^=(1<<PA2))
#define opposePA3() (PORTA^=(1<<PA3))
#define opposePA4() (PORTA^=(1<<PA4))
#define opposePA5() (PORTA^=(1<<PA5))
#define opposePA6() (PORTA^=(1<<PA6))
#define opposePA7() (PORTA^=(1<<PA7))
#define opposePB0() (PORTB^=(1<<PB0))
#define opposePB1() (PORTB^=(1<<PB1))
#define opposePB2() (PORTB^=(1<<PB2))
#define opposePB3() (PORTB^=(1<<PB3))
#define opposePB4() (PORTB^=(1<<PB4))
#define opposePB5() (PORTB^=(1<<PB5))
#define opposePB6() (PORTB^=(1<<PB6))
#define opposePB7() (PORTB^=(1<<PB7))
#define opposePC0() (PORTC^=(1<<PC0))
#define opposePC1() (PORTC^=(1<<PC1))
#define opposePC2() (PORTC^=(1<<PC2))
#define opposePC3() (PORTC^=(1<<PC3))
#define opposePC4() (PORTC^=(1<<PC4))
#define opposePC5() (PORTC^=(1<<PC5))
#define opposePC6() (PORTC^=(1<<PC6))
#define opposePC7() (PORTC^=(1<<PC7))
#define opposePD0() (PORTD^=(1<<PD0))
#define opposePD1() (PORTD^=(1<<PD1))
#define opposePD2() (PORTD^=(1<<PD2))
#define opposePD3() (PORTD^=(1<<PD3))
#define opposePD4() (PORTD^=(1<<PD4))
#define opposePD5() (PORTD^=(1<<PD5))
#define opposePD6() (PORTD^=(1<<PD6))
#define opposePD7() (PORTD^=(1<<PD7))
#define clearDA0() (DDRA&=~(1<<PA0))
#define clearDA1() (DDRA&=~(1<<PA1))
#define clearDA2() (DDRA&=~(1<<PA2))
#define clearDA3() (DDRA&=~(1<<PA3))
#define clearDA4() (DDRA&=~(1<<PA4))
#define clearDA5() (DDRA&=~(1<<PA5))
#define clearDA6() (DDRA&=~(1<<PA6))
#define clearDA7() (DDRA&=~(1<<PA7))
#define clearDB0() (DDRB&=~(1<<PB0))
#define clearDB1() (DDRB&=~(1<<PB1))
#define clearDB2() (DDRB&=~(1<<PB2))
#define clearDB3() (DDRB&=~(1<<PB3))
#define clearDB4() (DDRB&=~(1<<PB4))
#define clearDB5() (DDRB&=~(1<<PB5))
#define clearDB6() (DDRB&=~(1<<PB6))
#define clearDB7() (DDRB&=~(1<<PB7))
#define clearDC0() (DDRC&=~(1<<PC0))
#define clearDC1() (DDRC&=~(1<<PC1))
#define clearDC2() (DDRC&=~(1<<PC2))
#define clearDC3() (DDRC&=~(1<<PC3))
#define clearDC4() (DDRC&=~(1<<PC4))
#define clearDC5() (DDRC&=~(1<<PC5))
#define clearDC6() (DDRC&=~(1<<PC6))
#define clearDC7() (DDRC&=~(1<<PC7))
#define clearDD0() (DDRD&=~(1<<PD0))
#define clearDD1() (DDRD&=~(1<<PD1))
#define clearDD2() (DDRD&=~(1<<PD2))
#define clearDD3() (DDRD&=~(1<<PD3))
#define clearDD4() (DDRD&=~(1<<PD4))
#define clearDD5() (DDRD&=~(1<<PD5))
#define clearDD6() (DDRD&=~(1<<PD6))
#define clearDD7() (DDRD&=~(1<<PD7))
#define setDA0() (DDRA|=(1<<PA0))
#define setDA1() (DDRA|=(1<<PA1))
#define setDA2() (DDRA|=(1<<PA2))
#define setDA3() (DDRA|=(1<<PA3))
#define setDA4() (DDRA|=(1<<PA4))
#define setDA5() (DDRA|=(1<<PA5))
#define setDA6() (DDRA|=(1<<PA6))
#define setDA7() (DDRA|=(1<<PA7))
#define setDB0() (DDRB|=(1<<PB0))
#define setDB1() (DDRB|=(1<<PB1))
#define setDB2() (DDRB|=(1<<PB2))
#define setDB3() (DDRB|=(1<<PB3))
#define setDB4() (DDRB|=(1<<PB4))
#define setDB5() (DDRB|=(1<<PB5))
#define setDB6() (DDRB|=(1<<PB6))
#define setDB7() (DDRB|=(1<<PB7))
#define setDC0() (DDRC|=(1<<PC0))
#define setDC1() (DDRC|=(1<<PC1))
#define setDC2() (DDRC|=(1<<PC2))
#define setDC3() (DDRC|=(1<<PC3))
#define setDC4() (DDRC|=(1<<PC4))
#define setDC5() (DDRC|=(1<<PC5))
#define setDC6() (DDRC|=(1<<PC6))
#define setDC7() (DDRC|=(1<<PC7))
#define setDD0() (DDRD|=(1<<PD0))
#define setDD1() (DDRD|=(1<<PD1))
#define setDD2() (DDRD|=(1<<PD2))
#define setDD3() (DDRD|=(1<<PD3))
#define setDD4() (DDRD|=(1<<PD4))
#define setDD5() (DDRD|=(1<<PD5))
#define setDD6() (DDRD|=(1<<PD6))
#define setDD7() (DDRD|=(1<<PD7))
#define getPA0() (PINA&(1<<PA0))
#define getPA1() (PINA&(1<<PA1))
#define getPA2() (PINA&(1<<PA2))
#define getPA3() (PINA&(1<<PA3))
#define getPA4() (PINA&(1<<PA4))
#define getPA5() (PINA&(1<<PA5))
#define getPA6() (PINA&(1<<PA6))
#define getPA7() (PINA&(1<<PA7))
#define getPB0() (PINB&(1<<PB0))
#define getPB1() (PINB&(1<<PB1))
#define getPB2() (PINB&(1<<PB2))
#define getPB3() (PINB&(1<<PB3))
#define getPB4() (PINB&(1<<PB4))
#define getPB5() (PINB&(1<<PB5))
#define getPB6() (PINB&(1<<PB6))
#define getPB7() (PINB&(1<<PB7))
#define getPC0() (PINC&(1<<PC0))
#define getPC1() (PINC&(1<<PC1))
#define getPC2() (PINC&(1<<PC2))
#define getPC3() (PINC&(1<<PC3))
#define getPC4() (PINC&(1<<PC4))
#define getPC5() (PINC&(1<<PC5))
#define getPC6() (PINC&(1<<PC6))
#define getPC7() (PINC&(1<<PC7))
#define getPD0() (PIND&(1<<PD0))
#define getPD1() (PIND&(1<<PD1))
#define getPD2() (PIND&(1<<PD2))
#define getPD3() (PIND&(1<<PD3))
#define getPD4() (PIND&(1<<PD4))
#define getPD5() (PIND&(1<<PD5))
#define getPD6() (PIND&(1<<PD6))
#define getPD7() (PIND&(1<<PD7))
#define setInterrupt() (SREG|=0x80)
#define clearInterrupt() (SREG&=~0x80)
//Define Type
#define uint unsigned int
#define uchar unsigned char
#define ufloat unsigned float
#define udouble unsigned double
/************************************************************************
*
* 文件名: delay.h
*
* 文件描述: 延时函数
*
* 创建人: Crazy_huaer(Neo), 2010年5月9日
*
* 版本号:1.0
*
* 修改记录: 无
*
*****************