VI. Register

General Purpose Register (GPR)

Dieses Registerfile mit 32 8-Bit-Arbeitsregistern ist direkt mit der ALU verbunden, so dass ein direkter Zugriff auf zwei unabhängige Register innerhalb eines einzigen Maschinenzyklus erfolgt.

Die Register können direkt oder über den Adressraum des Datenspeichers angesprochen werden.

Alle Befehle, die im Operanden ein Register und einen unmittelbaren Wert haben (immediate), müssen über die (oberen) Register R16 bis R31 ausgeführt werden:

Besondere Bedeutung besitzen die Register R26 bis R31. Das Register mit der tieferen Adresse bildet das Low-Byte, das mit der höheren Adresse das High-Byte.

- Registerpaar R26/R27        X-Pointer (16 Bit)

- Registerpaar R28/R29        Y-Pointer (16 Bit)

- Registerpaar R30/R31        Z-Pointer (16 Bit)

Beim ATS901200 ist nur der Z-Pointer (8 Bit) vorhanden. Er befindet sich im Register R30.

 

STATUS-Register

Das Statusregister (SREG) enthält die nach einer ausgeführten Operation existenten CPU-Zustände. Das SREG befindet sich im I/O-Register an der Adresse $3F und demgemäss im Datenspeicher-Adressraum an der Adresse $5F.

Die Bits 0 bis 7 werden durch Flags mit spezieller Bedeutung verkörpert.

7 6 5 4 3 2 1 0
I T H S V N Z C

C

Carry-Flag

Z

Zero-Flag

N

Negative-Flag

V

Zweierkomplement-Überlauf-Flag

S

Sign-Flag, S = N .XOR. V für vorzeichenbehaftete Vergleiche

H

Half-Carry-Flag

T

Bit-Copy-Storage

I

Globale-Interrupt-Enable

 

I/O-Register

Sämtliche Ports und Peripheriemodule sind im I/O-Adressraum von $00 bis $3F abgelegt (= 64 I/O-Register). Zwischen den I/O- Re- gistern und den Arbeitsregistern (GPR) können Daten direkt mit den Befehlen IN und OUT ausgetauscht werden. 
Werden die I/O- Register über den Adressraum des Datenspeichers angesprochen, muss zur jeweiligen I/O-Register-Adresse der Wert $20 addiert werden.
Bei allen I/O-Registern mit der Adresse $00 bis $1F können einzelne Bits über die Befehle SBI und CBI gesetzt bzw. gelöscht werden.

Aufgrund der unterschiedlichen Hardwaretiefe der einzelnen AVR-Mikrocontroller sind nicht an allen 64 I/O-Adressen auch wirklich physikalische Register implementiert (hervorgehobene Zellen für den at90s1200).

 

$00

reserviert

 

PINF Input Pins Port F

$01

reserviert

 

PINE Input Pins Port E

$02

reserviert

 

DDRE Data Direction Register Port E

$03

reserviert

 

Port E Data Register Port E

$04

ADCL

ADC Data Register Low

 

$05

ADCH

ADC Data Register High

 

$06

ADCSR

ADC Control and Status Register

 

$07

ADMUX

ADC Multiplexer Select Register

 

$08

ACSR

Analog Comparator Control and Status

 
   

Register

 

$09

UBRR

UART Baude Rate Register

 
           $0A UCR UART Control Register  
           $0B USR UART Status Register  
           $0C UDR UART I/O Data Register  
           $0D SPCR SPI Control Register  
           $0E SPSR SPI Status Register  
           $0F SPDR SPI I/O Data Register  
           $10 PIND Input Pins Port D  
           $11 DDRD Data Direction Register Port D  
           $12 PORTD Data Register Port D  
           $13 PINC Input Pins Port C  
           $14 DDRC Data Direction Register Port C  
           $15 PORTC Data Register Port C  
           $16 PINB Input Pins Port B  
           $17 DDRB Data Direction Register Port B  
           $18 PORTB Data Register Port B  
           $19 PINA Input Pind Port A  
           $1A DDRA Data Direction Register Port A  
           $1B PORTA Data Register Port A  
           $1C EECR EEPROM Control Register  
           $1D EEDR EEPROM Data Register  
           $1E EEARL EEPROM Adress Register Low Byte  
           $1F EEARH EEPROM Adress Register High Byte  
           $20 reserviert    
           $21 WDTCR Watchdog Timer Control register  
           $22 reserviert    
           $23 reserviert   OCR2 Timer/Counter 2
      Output Compare register
           $24 ICR1L T/C 1 Input Capture Register Low Byte TCNT2 Timer/Counter 2 (8-Bit)
           $25 ICR1H T/C 1 Input Capture Register High Byte TCCR2 Timer/Counter2
      Control Register
           $26 reserviert ICR1L  
           $27 reserviert ICR1H  
           $28 OCR1BL Timer/Counter1 Output Compare  
    Register B Low Byte  
           $29 OCR1BH Timer/Counter1 Output Compare  
    Register B High Byte  
           $2A OCR1AL Timer/Counter1 Output Compare  
    Register A Low Byte  
           $2B OCR1AH Timer/Counter1 Output Compare  
    Register A High Byte  
           $2C TCNT1L Timer/Counter1 Low Byte  
           $2D TCNT1H Timer/Counter1 High Byte  
           $2E TCCR1B Timer/Counter1 Control Register B  
           $2F TCCR1A Timer/Counter1 Control Register A  
           $30 reserviert ASSR Asynchronous Mode Status Register  
           $31 reserviert OCR0 Timer/Counter0  
    Output Compare Register  
           $32 TCNT0 Timer/Counter 0 (Bit)  
           $33 TCCR0 Timer/Counter 0 Control Register  
           $34 reserviert MCUSR MCU Status Register  
           $35 MCUCR MCU General Control Register  
           $36 reserviert TIFR  
           $37 reserviert TIMSK  
           $38 TIFR Timer/Counter Interrupt Flag Register  
           $39 TIMSK Timer/Counter Interrupt Mask Register  
           $3A GIFR General Interrupt Flag Register  
    EICR External Interrupt Control Register  
           $3B GIMSK General Interrupt Mask Register  
    RAMPZ RAM Page Z Select Register  
           $3C reserviert XDIV XTAL Divide Control Register  
           $3D SPL Stack Pointer Low  
           $3E SPH Stack Pointer High  
           $3F SREG Status Register