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

📄 avr16reg.c

📁 AVR单片机控制实现播放CD音频数据
💻 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 + -