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

📄 io8515.h

📁 Example the project test UART for AVR161 on C for IAR
💻 H
字号:
/*            - iom161.h -

   This file #defines the internal register addresses for ATMEGA161.
   Used with ICCA90 and AA90.

   File version:   $Revision: 1.4 $

*/

#pragma language=extended

#if (((__TID__ >> 8) & 0x7F) != 90)
#error This file should only be compiled by icca90/aa90
#endif
#if (((__TID__ >> 4) & 0x0F) != 3)
#error This file should only be included if the processor option is -v3
#endif

/* Include the SFR part if this file has not been included before,
 * OR this file is included by the assembler (SFRs must be defined in
 * each assembler module). AA90 has __TID__ bit 15 = 0. */
#if !defined(__IOM161_INCLUDED) || ((__TID__ >> 15) == 0)

/*==========================*/
/* Predefined SFR Addresses */
/*==========================*/

/* UART1 Baud Rate Register */
sfrb UBRR1      = 0x00;
/* UART1 Control and Status Register */
sfrb UCSR1B      = 0x01; 
/* UART1 Control and Status Register */
sfrb UCSR1A      = 0x02; 
/* UART1 I/O Data Register */
sfrb UDR1      = 0x03;
/* Input Pins, Port E */
sfrb PINE      = 0x05;
/* Data Direction Register, Port E */
sfrb DDRE      = 0x06; 
/* Data Register, Port E */
sfrb PORTE      = 0x07; 
/* Analog Comparator Control and Status Register */
sfrb ACSR      = 0x08; 
/* UART0 Baud Rate Register */
sfrb UBRR0      = 0x09; 
/* UART0 Control and Status Register */
sfrb UCSR0B      = 0x0A; 
/* UART0 Control and Status Register */
sfrb UCSR0A      = 0x0B; 
/* UART0 I/O Data Register */
sfrb UDR0      = 0x0C; 
/* SPI Control Register */
sfrb SPCR      = 0x0D; 
/* SPI Status Register */
sfrb SPSR      = 0x0E; 
/* SPI I/O Data Register */
sfrb SPDR      = 0x0F; 
/* Input Pins, Port D */
sfrb PIND      = 0x10; 
/* Data Direction Register, Port D */
sfrb DDRD      = 0x11; 
/* Data Register, Port D */
sfrb PORTD      = 0x12; 
/* Input Pins, Port C */
sfrb PINC      = 0x13; 
/* Data Direction Register, Port C */
sfrb DDRC      = 0x14; 
/* Data Register, Port C */
sfrb PORTC      = 0x15; 
/* Input Pins, Port B */
sfrb PINB      = 0x16; 
/* Data Direction Register, Port B */
sfrb DDRB      = 0x17; 
/* Data Register, Port B */
sfrb PORTB      = 0x18; 
/* Input Pins, Port A */
sfrb PINA      = 0x19; 
/* Data Direction Register, Port A */
sfrb DDRA      = 0x1A; 
/* Data Register, Port A */
sfrb PORTA      = 0x1B; 
/* EEPROM Control Register */
sfrb EECR      = 0x1C; 
/* EEPROM Data Register */
sfrb EEDR      = 0x1D; 
/* EEPROM Address Register */
sfrw EEAR      = 0x1E; 
sfrb EEARL     = 0x1E; 
sfrb EEARH     = 0x1F; 
/* UART Baud Register HIgh */
sfrb UBRRHI      = 0x20; 
/* Watchdog Timer Control Register */
sfrb WDTCR      = 0x21; 
/* Timer/Counter2 Output Compare Register */
sfrb OCR2      = 0x22; 
/* Timer/Counter2 (8-bit) */
sfrb TCNT2      = 0x23; 
/* Timer/Counter1 Input Capture Register */
sfrw ICR1      = 0x24; 
sfrb ICR1L     = 0x24; 
sfrb ICR1H     = 0x25; 
/* Asynchronous mode StatuS Register */
sfrb ASSR      = 0x26; 
/* Timer/Counter2 Control Register */
sfrb TCCR2      = 0x27; 
/* Timer/Counter1 Output Compare Register B */
sfrw OCR1B      = 0x28; 
sfrb OCR1BL     = 0x28; 
sfrb OCR1BH     = 0x29; 
/* Timer/Counter1 Output Compare Register A */
sfrw OCR1A      = 0x2A; 
sfrb OCR1AL     = 0x2A; 
sfrb OCR1AH     = 0x2B; 
/* Timer/Counter1 */
sfrw TCNT1      = 0x2C; 
sfrb TCNT1L     = 0x2C; 
sfrb TCNT1H     = 0x2D; 
/* Timer/Counter1 Control Register B */
sfrb TCCR1B      = 0x2E; 
/* Timer/Counter1 Control Register A */
sfrb TCCR1A      = 0x2F; 
/* Special Function IO Register */
sfrb SFIOR      = 0x30; 
/* Timer/Counter0 Output Compare Register */
sfrb OSCCAL      = 0x31;
/*sfrb OCR0      = 0x31; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
/* Timer/Counter0 (8-bit) */
sfrb TCNT0      = 0x32; 
/* Timer/Counter0 Control Register */
sfrb TCCR0      = 0x33; 
/* MCU general Status Register */
sfrb MCUSR      = 0x34; 
/* MCU general Control Register */
sfrb MCUCR      = 0x35; 
/* Extended MCU general Control Register */
sfrb EMCUCR      = 0x36; 
/* Store Program Memory Control Register */
sfrb SPMCR      = 0x37; 
/* Timer/Counter Interrupt Flag Register */
sfrb TIFR      = 0x38; 
/* Timer/Counter Interrupt MaSK Register */
sfrb TIMSK      = 0x39; 
/* General Interrupt Flag Register */
sfrb GIFR      = 0x3A; 
/* General Interrupt MaSK register */
sfrb GIMSK      = 0x3B; 
/* Stack Pointer */
sfrw SP      = 0x3D; 
sfrb SPL     = 0x3D; 
sfrb SPH     = 0x3E; 
/* Status REGister */
sfrb SREG      = 0x3F; 

#ifndef __IOM161_INCLUDED
#define __IOM161_INCLUDED

/* SFRs are local in assembler modules (so this file may need to be */
/* included in more than one module in the same source file), */
/* but #defines must only be made once per source file. */

/*==============================*/
/* Interrupt Vector Definitions */
/*==============================*/

/* NB! vectors are specified as byte addresses */

#define RESET_vect        (0x00)
#define INT0_vect         (0x04)
#define INT1_vect         (0x08)
#define INT2_vect         (0x0C)
#define TIMER2_COMP_vect  (0x10)
#define TIMER2_OVF_vect   (0x14)
#define TIMER1_CAPT_vect  (0x18)
#define TIMER1_COMPA_vect (0x1C)
#define TIMER1_COMPB_vect (0x20)
#define TIMER1_OVF_vect   (0x24)
#define TIMER0_COMP_vect  (0x28)
#define TIMER0_OVF_vect   (0x2C)
#define SPI_STC_vect      (0x30)
#define UART0_RX_vect     (0x34)
#define UART1_RX_vect     (0x38)
#define UART0_UDRE_vect   (0x3C)
#define UART1_UDRE_vect   (0x40)
#define UART0_TX_vect     (0x44)
#define UART1_TX_vect     (0x48)
#define EE_RDY_vect       (0x4C)
#define ANA_COMP_vect     (0x50)

#ifdef __IAR_SYSTEMS_ASM__   
#ifndef ENABLE_BIT_DEFININTIONS
#define  ENABLE_BIT_DEFININTIONS
#endif /* ENABLE_BIT_DEFININTIONS */
#endif /* __IAR_SYSTEMS_ASM__ */

#ifdef ENABLE_BIT_DEFININTIONS


/* Bit definitions for use with the IAR Assembler   
   The Register Bit names are represented by their bit number (0-7).
*/                                                

/* MCU Status Register */ 
#define WDRF      3
#define BORF      2
#define EXTRF     1
#define PORF      0

/* General Interrupt MaSK register */
#define INT1      7
#define INT0      6
#define INT2      5

/* General Interrupt Flag Register */
#define INTF1     7
#define INTF0     6
#define INTF2     5

/* Timer/Counter Interrupt MaSK register */ 
#define TOIE1     7
#define OCIE1A    6
#define OCIE1B    5
#define TOIE2     4
#define TICIE1    3
#define OCIE2     2
#define TOIE0     1
#define OCIE0     0
 
/* Timer/Counter Interrupt Flag Register */
#define TOV1        7
#define OCF1A       6
#define OCF1B       5
#define TOV2        4
#define ICF1        3
#define OCF2        2
#define TOV0        1      
#define OCF0        0
 
/* MCU general Control Register */
#define SRE         7
#define SRW10       6
#define SE          5
#define SM1         4
#define ISC11       3
#define ISC10       2
#define ISC01       1
#define ISC00       0

/* Extended MCU general Control Register */
#define SM0         7
#define SRL2        6
#define SRL1        5
#define SRL0        4
#define SRW01       3
#define SRW00       2
#define SRW11       1
#define ISC2        0

/* Special Function IO Register */
#define PSR2        1
#define PSR10       0

/* Timer/Counter0 Control Register */
#define FOC0        7
#define PWM0        6
#define COM01       5
#define COM00       4
#define CTC0        3
#define CS02        2
#define CS01        1
#define CS00        0

/* Timer/Counter2 Control Register */
#define FOC2        7
#define PWM2        6
#define COM21       5
#define COM20       4
#define CTC2        3
#define CS22        2
#define CS21        1
#define CS20        0

/* Asyncronous Status Register */
#define AS2         3
#define TCN2UB      2
#define OCR2UB      1
#define TCR2UB      0

/* Timer/Counter 0 Control Register A */ 
#define COM1A1      7
#define COM1A0      6
#define COM1B1      5
#define COM1B0      4
#define FOC1A       3
#define FOC1B       2
#define PWM11       1
#define PWM10       0

/* Timer/Counter 0 Control Register B */ 
#define ICNC1       7
#define ICES1       6
#define CTC1        3
#define CS12        2
#define CS11        1
#define CS10        0

/* Watchdog Timer Control Register */ 
#define WDTOE       4
#define WDE         3
#define WDP2        2
#define WDP1        1
#define WDP0        0
  
/* EEPROM Control Register */
#define EERIE       3
#define EEMWE       2
#define EEWE        1
#define EERE        0

/* SPI Control Register */
#define SPIE        7
#define SPE         6
#define DORD        5
#define MSTR        4
#define CPOL        3
#define CPHA        2
#define SPR1        1
#define SPR0        0

/* SPI Status Register */
#define SPIF        7
#define WCOL        6
#define SPI2X       0

/* UART0 Control and Status Register A */
#define RXC0        7
#define TXC0        6
#define UDRE0       5
#define FE0         4
#define OVR0        3
#define U2X0        1
#define MPCM0       0

/* UART0 Control and Status Register B */
#define RXCIE0      7
#define TXCIE0      6
#define UDRIE0      5
#define RXEN0       4
#define TXEN0       3
#define CHR90       2
#define RXB80       1
#define TXB80       0

/* UART1 Control and Status Register A */
#define RXC1        7
#define TXC1        6
#define UDRE1       5
#define FE1         4
#define OVR1        3
#define U2X1        1
#define MPCM1       0

/* UART1 Control and Status Register B */
#define RXCIE1      7
#define TXCIE1      6
#define UDRIE1      5
#define RXEN1       4
#define TXEN1       3
#define CHR91       2
#define RXB81       1
#define TXB81       0

/* Analog Comparator Control And Status Register */
#define ACD         7
#define AINBG       6
#define ACO         5
#define ACI         4
#define ACIE        3
#define ACIC        2
#define ACIS1       1
#define ACIS0       0

/* SPM Control Register */
#define BLBSET      3
#define PGWRT       2
#define PGERS       1
#define SPMEN       0

/* Data Register, Port A */
#define    PA7          7
#define    PA6          6
#define    PA5          5
#define    PA4          4
#define    PA3          3
#define    PA2          2
#define    PA1          1
#define    PA0          0
 
/* Data Direction Register, Port A */ 
#define    DDA7         7
#define    DDA6         6
#define    DDA5         5
#define    DDA4         4
#define    DDA3         3
#define    DDA2         2
#define    DDA1         1
#define    DDA0         0
   
/* Input Pins, Port A */ 
#define    PINA7        7
#define    PINA6        6
#define    PINA5        5
#define    PINA4        4
#define    PINA3        3
#define    PINA2        2
#define    PINA1        1
#define    PINA0        0
 
/* Data Register, Port B */ 
#define    PB7          7
#define    PB6          6
#define    PB5          5
#define    PB4          4
#define    PB3          3
#define    PB2          2
#define    PB1          1
#define    PB0          0
 
/* Data Direction Register, Port B */
#define    DDB7         7
#define    DDB6         6
#define    DDB5         5
#define    DDB4         4
#define    DDB3         3
#define    DDB2         2
#define    DDB1         1
#define    DDB0         0
                      
/* Input Pins, Port B */
#define    PINB7        7
#define    PINB6        6
#define    PINB5        5
#define    PINB4        4
#define    PINB3        3
#define    PINB2        2
#define    PINB1        1
#define    PINB0        0
 
/* Data Register, Port C */
#define    PC7          7
#define    PC6          6
#define    PC5          5
#define    PC4          4
#define    PC3          3
#define    PC2          2
#define    PC1          1
#define    PC0          0
 
/* Data Register, Port D */
#define    PD7          7
#define    PD6          6
#define    PD5          5
#define    PD4          4
#define    PD3          3
#define    PD2          2
#define    PD1          1
#define    PD0          0
                                          
/* Data Direction Register, Port D */
#define    DDD7         7
#define    DDD6         6
#define    DDD5         5
#define    DDD4         4
#define    DDD3         3
#define    DDD2         2
#define    DDD1         1
#define    DDD0         0
 
/* Input Pins, Port D */
#define    PIND7        7
#define    PIND6        6
#define    PIND5        5
#define    PIND4        4
#define    PIND3        3
#define    PIND2        2
#define    PIND1        1
#define    PIND0        0
 
/* Data Register, Port E */
#define    PE2          2
#define    PE1          1
#define    PE0          0
 
/* Data Direction Register, Port E */
#define    DDE2         2
#define    DDE1         1
#define    DDE0         0
 
/* Input Pins, Port E */
#define    PINE2        2
#define    PINE1        1
#define    PINE0        0
 
/* Pointer definition */
#define    XL       r26
#define    XH       r27
#define    YL       r28
#define    YH       r29
#define    ZL       r30
#define    ZH       r31

/* Constants */
#define    RAMEND   0x045F    /* Last On-Chip SRAM Location */
#define    XRAMEND  0xFFFF
#define    E2END    0x01FF
#define    FLASHEND 0x3FFF
 
#endif /* ENABLE_BIT_DEFININTIONS */
#endif /* __IOM161_INCLUDED (define part) */

#pragma language=default

#endif /* __IOM161_INCLUDED (SFR part) */

⌨️ 快捷键说明

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