📄 avr16reg.c
字号:
/******************************
diction : Mega16
producer : YLZ
startdate : March.16
enddate : nothing
*******************************/
#ifndef __AVR16REG_H__
#define __AVR16REG_H__
// CodeVisionAVR C Compiler
// I/O registers definitions for the ATmega16
#pragma used+
sfrb TWBR=0;
sfrb TWSR=1;
sfrb TWAR=2;
sfrb TWDR=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4; // 16 bit access
sfrb ADCSRA=6;
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRRL=9;
sfrb UCSRB=0xa;
sfrb UCSRA=0xb;
sfrb UDR=0xc;
sfrb SPCR=0xd;
sfrb SPSR=0xe;
sfrb SPDR=0xf;
sfrb PIND=0x10;
sfrb DDRD=0x11;
sfrb PORTD=0x12;
sfrb PINC=0x13;
sfrb DDRC=0x14;
sfrb PORTC=0x15;
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
sfrb EECR=0x1c;
sfrb EEDR=0x1d;
sfrb EEARL=0x1e;
sfrb EEARH=0x1f;
sfrw EEAR=0x1e; // 16 bit access
sfrb UBRRH=0x20;
sfrb UCSRC=0X20;
sfrb WDTCR=0x21;
sfrb ASSR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
sfrb OCR1BL=0x28;
sfrb OCR1BH=0x29;
sfrw OCR1B=0x28; // 16 bit access
sfrb OCR1AL=0x2a;
sfrb OCR1AH=0x2b;
sfrw OCR1A=0x2a; // 16 bit access
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c; // 16 bit access
sfrb TCCR1B=0x2e;
sfrb TCCR1A=0x2f;
sfrb SFIOR=0x30;
sfrb OSCCAL=0x31;
sfrb OCDR=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TWCR=0x36;
sfrb SPMCR=0x37;
sfrb TIFR=0x38;
sfrb TIMSK=0x39;
sfrb GIFR=0x3a;
sfrb GICR=0x3b;
sfrb OCR0=0X3c;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-
// Interrupt vectors definitions
#define EXT_INT0 2
#define EXT_INT1 3
#define TIM2_COMP 4
#define TIM2_OVF 5
#define TIM1_CAPT 6
#define TIM1_COMPA 7
#define TIM1_COMPB 8
#define TIM1_OVF 9
#define TIM0_OVF 10
#define SPI_STC 11
#define USART_RXC 12
#define USART_DRE 13
#define USART_TXC 14
#define ADC_INT 15
#define EE_RDY 16
#define ANA_COMP 17
#define TWI 18
#define EXT_INT2 19
#define TIM0_COMP 20
#define SPM_READY 21
/*ADC ADCSRA Addr:6 */
#define ADPS0 0x01
#define ADPS1 0x02
#define ADPS2 0X04
#define ADIE 0X08 //ADC_Int_EN
#define ADIF 0X10 //Int_Flag
#define ADATE 0X20 //AUTO Conversion
#define ADSC 0X40 //ADC STSRT
#define ADEN 0X80 //ADC EN
/*ADC division */
#define DIV_2 0x00 //ADPS0ADPS1ADPS2=000
#define DIV_2 0x01 //ADPS0ADPS1ADPS2=001
#define DIV_4 0X02 //ADPS0ADPS1ADPS2=010
#define DIV_8 0X03 //ADPS0ADPS1ADPS2=011
#define DIV_16 0X04 //ADPS0ADPS1ADPS2=100
#define DIV_32 0X05 //ADPS0ADPS1ADPS2=101
#define DIV_64 0X06 //ADPS0ADPS1ADPS2=110
#define DIV_128 0X07 //ADPS0ADPS1ADPS2=111
/*ADC ADMUX Addr:7 */
#define MUX0 0x01
#define MUX1 0x02
#define MUX2 0X04
#define MUX3 0X08
#define MUX4 0X10
#define ADLAR 0X20 //Left_1 AND Right_0
#define REFS0 0X40
#define REFS1 0X80
/*choose Vref REFS1REFS0*/
#define AREF_EXTEN 0X00 //OPEN exten AREF REFS1&0=00
#define AREF_AVCC 0X40 //Avcc REFS1&0=01 note:(REFS1&0=11 save)
#define AREF_ONCHIP 0XC0 //on-chip Aref REFS1&0=11
/*channle ADC0-ADC6 */
#define ADC0 0x00 //ADC channle 0 MUX0MUX1MUX2MUX3=0000
#define ADC1 0x01
#define ADC2 0X02
#define ADC3 0X03
#define ADC4 0X04
#define ADC5 0X05
#define ADC6 0X06
#define ADC7 0X07 //ADC channel 7 MUX0MUX1MUX2MUX3=0110
/* WDTCR Addr:0x21 */
#define WDP0 0x01 //interrupt vector Move EN
#define WDP1 0x02 //interrupt vector Choose
#define WDP2 0X04
#define WDP3 0X08
#define WDE 0X04 //WatchDog change flag
#define WDTOE 0X10 //WatchDog Use
/*Wdtchdog frequency division */
#define WAT_16K 0X00 //3v-17.1ms 5v-16.3mS
#define WAT_32K 0X01 //3v-68.5ms 5v-32.5ms
#define WAT_64K 0X02 //3v-0.14s 5v-0.13ms
#define WAT_128K 0X03 //3v-0.12s 5v-0.11s
#define WAT_256K 0X04 //3v-0.27s 5v-0.26s
#define WAT_512K 0X05 //3v-0.55s 5v-0.52s
#define WAT_1024K 0X06 //3v-1.1s 5v-1.0s
#define WAT_2048K 0X07 //3v-2.2s 5v-2.1s
/*16-bit TCCR1B Addr:0x2e*/
#define CS10 0x01
#define CS11 0x02
#define CS12 0X04
#define WGM12 0X08
#define WGM13 0X10 //engender wave MODE
//#define XX 0X20
#define ICES1 0X40
#define ICNC1 0X80
/*16-bit Timer0/Counter0 MODE*/ //CS10 CS11 CS12
#define CLK_STOP 0X00 //un_Work
#define CLK_IO_1 0X01 //Come form system
#define CLK_IO_8 0X02 //Come form divider
#define CLK_IO_64 0X03 //Come form divider
#define CLK_IO_256 0X04 //Come form divider
#define CLK_IO_1024 0X05 //Come form divider
#define TO_PIN_HTOL 0X06 //EXTER PIN Frequence
#define TO_PIN_LTOH 0X07 //EXTER PIN Frequence
/*16-bit TCCR1A Addr:0x2f*/
#define WGM10 0x01
#define WGM11 0x02
#define COM1C0 0X04
#define COM1C1 0X08
#define COM1B0 0X10
#define COM1B1 0X20
#define COM1A0 0X40
#define COM1A1 0X80
/*8-bit TCCR0 Addr:0X33 */
#define CS00 0X01
#define CS01 0X02
#define CS02 0X04 //TO work mode
#define WGM01 0X08
#define COM00 0X10
#define COM01 0X20 //compare out mode
#define WGM00 0X40 //engender wave
#define FOC0 0X80 //compel out compare
/*8-bit Timer0/Counter0 MODE //CS00 CS01 CS02
ditto 16-bit Timer1/Counter1*/
/*MCUCSR Addr:0x34 */
#define PORF 0x01 //Power rest flag
#define EXTRF 0x02 //Exten rest flag
#define BORF 0X04 //BOD rest flag
#define WDRF 0X08 //Wdt rest flag
#define JTRF 0X10 //JTAG rest flag
//#define XX 0X20
#define ISC2 0X40 //INT2 Mode
#define JTD 0X80 //Disable JTAG
/*MCUCR Addr:0x35 */
#define ISC00 0x01 //ISC00 ISC01 00 low
#define ISC01 0x02 //int0 mode
#define ISC10 0X04 //ISC11 ISC10 00 low
#define ISC11 0X08 //int1 mode
#define SM0 0X10
#define SM1 0X20
#define SE 0X40 //Sleep EN
#define SM2 0X80
/*sleep mode */
#define IDLE 0X00 //000 SM2SM1SMO
#define ADCNR 0X10 //001
#define POWERD 0X20 //010
#define POWERS 0X30 //011
#define RESERVED 0X40 //100 101
#define STANDBY 0XA0 //110
#define EXTSTAN 0XB0 //111
/*TIFR Addr:0x38 */
#define TOV0 0x01 //TO overflow Flag
#define OCF0 0x02 //TO compare Flag
#define TOV1 0X04 //T1 overflow Flag
#define OCF1B 0X08 //T1 compare B Flag
#define OCF1A 0X10 //T1 compare A Flag
#define ICF1 0X20 //T1 Catch Flag
#define TOV2 0X40 //T2 overflow Flag
#define OCF2 0X80 //T2 compare Flag
/*TIMSK Addr:0x39 */
#define TOIE0 0x01 //T0 overflow EN
#define OCI0 0x02 //TO compare EN
#define TOIE1 0X04 //T1 overflow EN
#define OCIE1B 0X08 //T1 compare B EN
#define OCIE1A 0X10 //T1 compare A EN
#define TICE1 0X20 //T1 Catch EN
#define TOIE2 0X40 //T2 overflow EN
#define OCIE2 0X80 //TO compare EN
/*GIFR Addr:0X3a */
//#define XX 0x01
//#define XX 0x02
//#define XX 0X04
//#define XX 0X08
//#define XXF 0X10
#define INTF2 0X20 //INT2 FLAG
#define INTF0 0X40 //INT0 FLAG
#define INTF1 0X80 //INT1 FLAG
/*GICR Addr:0X3b */
#define IVCE 0x01 //interrupt vector Move EN
#define IVSEL 0x02 //interrupt vector Choose
//#define XX 0X04
//#define XX 0X08
//#define XX 0X10
#define INT2 0X20 //INT2 EN
#define INT0 0X40 //INT0 EN
#define INT1 0X80 //INT1 EN
/******** unused ********/
/*UCSRA Addr:0X0A*/
#define TCR0UB 0x01
#define OCR0UB 0x02
#define TCN0UB 0X04
#define AS0 0X08
/*Timer0/Counter0 ASSR*/
#define TCR0UB 0x01
#define OCR0UB 0x02
#define TCN0UB 0X04
#define AS0 0X08
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -