Pfad: Home => AVR-Überblick => Programmiertechniken => Ports => Details

Programmiertechnik für Anfänger in AVR Assemblersprache

Die Tabelle der wichtigsten Ports in den ATMELAVR-Typen AT90S2313, 2323 und 8515. Byteweise ansprechbare Ports oder Doppelregister sind nicht im Detail dargestellt. Keine Gewähr für Richtigkeit der Angaben!

Status-Register, Akkumulatorflags

PortFunktionPort-AdresseRAM-Adresse
SREGStatus Register Akkumulator0x3F0x5F
7654 3210
ITHSVNZC
BitNameBedeutungMöglichkeitenBefehl
7IGlobales Interrupt Flag 0: Interrupts ausgeschaltetCLI
1: Interrupts erlaubt/eingeschaltetSEI
6TBitspeicher 0: Gespeichertes Bit ist 0CLT
1: Gespeichertes Bit ist 1SET
5HHalbübertrags-Flag 0: Kein Halbübertrag aufgetretenCLH
1: Halbübertrag aufgetretenSEH
4SVorzeichen-Flag 0: Vorzeichen positivCLS
1: Vorzeichen negativSES
3VZweierkomplement-Übertrags-Flag 0: Kein Übertrag aufgetretenCLV
1: Übertrag aufgetretenSEV
2NNegativ-Flag 0: Ergebnis war nicht negativ/kleinerCLN
1: Ergebnis war negativ/kleinerSEN
1ZNull-Flag 0: Ergebnis war nicht Null/ungleichCLZ
1: Ergebnis war Null/gleichSEZ
0CÜbertrags-Flag 0: Kein Übertrag aufgetretenCLC
1: Übertrag aufgetretenSEC


Zum Seitenanfang

Stackpointer

PortFunktionPort-AdresseRAM-Adresse
SPL/SPHStackpointer003D/0x3E0x5D/0x5E
NameBedeutungVerfügbarkeit
SPLLow-Byte des StackpointersAb AT90S2313 aufwärts, nicht bei 1200
SPHHigh-Byte des StackpointersAb AT90S8515 aufwärts, nur bei Devices mit >256 Byte internem SRAM


Zum Seitenanfang

SRAM und External Interrupt Steuerung

PortFunktionPort-AdresseRAM-Adresse
MCUCRMCU General Control Register0x350x55
7654 3210
SRESRWSESMISC11ISC10ISC01ISC00
BitNameBedeutungMöglichkeiten
7SREExt.SRAM Enable 0=Kein externes SRAM angeschlossen
1=Externes SRAM ansprechen
6SRWExt.SRAM Wait States 0=Kein extra Wait Zyklus bei externem SRAM
1=Zusätzlicher Wait State bei externem SRAM
5SESleep Enable 0=Ignoriere SLEEP Befehl
1=SLEEP-Befehle befolgen
4SMSleep Mode 0=Idle Mode (Halbschlaf)
1=Power Down Mode (Tiefschlaf)
3ISC11Interruptsteuerung Pin INT1
(Verknüpft mit GIMSK)
00: Low-Pegel löst Interrupt aus
01: Undefiniert
2ISC1010: Fallende Flanke löst Interrupt aus
11: Ansteigende Flanke löst Interrupt aus
1ISC01Interruptsteuerung Pin INT0
(Verknüpft mit GIMSK)
00: Low-Pegel löst Interrupt aus
01: Undefiniert
0ISC0010: Fallende Flanke löst Interrupt aus
11: Ansteigende Flanke löst Interrupt aus


Zum Seitenanfang

Externe Interrupt-Steuerung

PortFunktionPort-AdresseRAM-Adresse
GIMSKGeneral Interrupt Maskenregister0x3B0x5B
7654 3210
INT1INT0------
BitNameBedeutungMöglichkeiten
7INT1Interrupt durch externen Pin INT1
(Verknüpft mit Modus in MCUCR)
0: Externer INT1 ausgeschaltet
1: Externer INT1 eingeschaltet
6INT0Interrupt durch externen Pin INT0
(Verknüpft mit Modus in MCUCR)
0: Externer INT0 ausgeschaltet
1: Externer INT0 eingeschaltet
0...5(Nicht benutzt)


PortFunktionPort-AdresseRAM-Adresse
GIFRGeneral Interrupt Flag Register0x3A0x5A
7654 3210
INTF1INTF0------
BitNameBedeutungMöglichkeiten
7INTF1Interrupt durch externen Pin INT1 aufgetreten Automatisch Rücksetzen durch Bearbeitung der Int-Routine oder
Rücksetzen per Befehl
6INTF0Interrupt durch externen Pin INT0 aufgetreten
0...5(Nicht benutzt)


Zum Seitenanfang

Timer Interrupt-Steuerung

PortFunktionPort-AdresseRAM-Adresse
TIMSKTimer Interrupt Maskenregister0x390x59
7654 3210
TOIE1OCIE1AOCIE1B-TICIE1-TOIE0-
BitNameBedeutungMöglichkeiten
7TOIE1Timer/Counter 1 Überlauf-Interrupt0: Kein Int bei Überlauf
1: Int bei Überlauf
6OCIE1ATimer/Counter 1 Vergleichszahl A Interrupt0: Kein Int bei Erreichen Stand A
1: Int bei Erreichen Stand in A
5OCIE1BTimer/Counter 1 Vergleichszahl B Interrupt0: Kein Int bei Erreichen Stand B
1: Int bei Erreichen Stand in B
4(Nicht benutzt)
3TICIE1Timer/Counter 1 Capture-Ereignis Interrupt0: Kein Int bei Capture
1: Int bei Capture
2(Nicht benutzt)
1TOIE0Timer/Counter 0 Überlauf-Interrupt0: Kein Int bei Überlauf
1: Int bei Überlauf
0(Nicht benutzt)


PortFunktionPort-AdresseRAM-Adresse
TIFRTimer Interrupt Flag Register0x380x58
7654 3210
TOV1OCF1AOCF1B-ICF1-TOV0-
BitNameBedeutungMöglichkeiten
7TOV1Timer/Counter 1 Überlauf erreicht Interrupt-Modus:
Automatisches Rücksetzen
bei Bearbeitung der
zugehörigen Int-Routine

ODER

Polling-Modus:
Rücksetzen per
Befehl
6OCF1ATimer/Counter 1 Vergleichszahl A erreicht
5OCF1BTimer/Counter 1 Vergleichszahl B erreicht
4(Nicht benutzt)
3ICF1Timer/Counter 1 Capture-Ereignis eingetreten
2(Nicht benutzt)
1TOV0Timer/Counter 0 Überlauf aufgetreten
0(Nicht benutzt)


Zum Seitenanfang

Timer/Counter 0

PortFunktionPort-AdresseRAM-Adresse
TCCR0Timer/Counter 0 Control Register0x330x53
7654 3210
-----CS02CS01CS00
BitNameBedeutungMöglichkeiten
2..0CS02..CS00Timer Takt 000: Timer anhalten
001: Clock = Taktfrequenz
010: Clock = Taktfrequenz / 8
011: Clock = Taktfrequenz / 64
100: Clock = Taktfrequenz / 256
101: Clock = Taktfrequenz / 1024
110: Clock = abfallende Flanke externer Pin T0
111: Clock = ansteigende Flanke externer Pin T0
3..7(nicht benutzt)


PortFunktionPort-AdresseRAM-Adresse
TCNT0Timer/Counter 0 Zählregister0x320x52


Zum Seitenanfang

Timer/Counter 1

PortFunktionPort-AdresseRAM-Adresse
TCCR1ATimer/Counter 1 Control Register A0x2F0x4F
7654 3210
COM1A1COM1A0COM1B1COM1B0--PWM11PWM10
BitNameBedeutungMöglichkeiten
7COM1A1Compare Ausgang A 00: OC1A/B nicht verbunden
01: OC1A/B wechselt Polarität
10: OC1A/B auf Null setzen
11: OC1A/B auf Eins setzen
6COM1A0
5COM1B1Compare Ausgang A
4COM1B0
3(nicht benutzt)
2
1..0PWM11
PWM10
Pulsweitengenerator 00: PWM aus
01: 8-Bit PWM
10: 9-Bit PWM
11: 10-Bit PWM


PortFunktionPort-AdresseRAM-Adresse
TCCR1BTimer/Counter 1 Control Register B0x2E0x4E
7654 3210
ICNC1ICES1--CTC1CS12CS11CS10
BitNameBedeutungMöglichkeiten
7ICNC1Noise Canceler
am ICP-Pin
0: ausgeschaltet, erste Flanke löst Sampling aus
1: eingeschaltet, Mindestdauer vier Taktzyklen
6ICES1Flankenauswahl
bei Capture
0: fallende Flanke löst Capture aus
1: steigende Flanke löst Capture aus
5..4(nicht benutzt)
3CTC1Rücksetzen bei
Compare Match A
1: Zähler wird bei Gleichheit auf Null gesetzt
2..0CS12..CS10Taktauswahl000: Zähler anhalten
001: Clock
010: Clock / 8
011: Clock / 64
100: Clock / 256
101: Clock / 1024
110: fallende Flanke externer Pin T1
111: steigende Flanke externer Pin T1


PortFunktionPort-AdresseRAM-Adresse
TCNT1L/HTimer/Counter 1 Zählregister0x2C/0x2D0x4C/0x4D


PortFunktionPort-AdresseRAM-Adresse
OCR1AL/HTimer/Counter 1 Output Vergleichsregister A0x2A/0x2B0x4A/0x4B hex


PortFunktionPort-AdresseRAM-Adresse
OCR1BL/HTimer/Counter 1 Output Vergleichsregister B0x28/0x290x48/0x49


PortFunktionPort-AdresseRAM-Adresse
ICR1L/HTimer/Counter 1 Input Capture Register0x24/0x250x44/0x45


Zum Seitenanfang

Watchdog-Timer

PortFunktionPort-AdresseRAM-Adresse
WDTCRWatchdog Timer Control Register0x210x41
7654 3210
---WDTOEWDEWDP2WDP1WDP0
BitNameBedeutungWDT-Zyklus bei 5,0Volt
7..5(Nicht benutzt)
4WDTOEWatchdog Turnoff EnableVorausgehendes Setzen zum
Abschalten von WDE erforderlich
3WDEWatchdog Enable1: Watchdog aktiv
2..0WDP2..WDP0Watchdog Timer Prescaler000: 15 ms
001: 30 ms
010: 60 ms
011: 120 ms
100: 240 ms
101: 490 ms
110: 970 ms
111: 1,9 s


Zum Seitenanfang

EEPROM

PortFunktionPort-AdresseRAM-Adresse
EEARL/HEEPROM Adress Register0x1E/0x1F0x3E/0x3F
EEARH nur bei Typen mit mehr als 256 Bytes EEPROM (ab AT90S8515 aufwärts)

PortFunktionPort-AdresseRAM-Adresse
EEDREEPROM Data Register0x1D0x3D


PortFunktionPort-AdresseRAM-Adresse
EECREEPROM Control Register0x1C0x3C
7654 3210
-----EEMWEEEWEEERE
BitNameBedeutungFunktion
7..3(Nicht benutzt)
2EEMWEEEPROM Master Write EnableVorausgehendes Setzen ermöglicht Schreiben
1EEWEEEPROM Write EnableSetzen löst Schreiben aus
0EEREEEPROM Read EnableSetzen löst Auslesen aus


Zum Seitenanfang

Serial Peripheral Interface SPI

PortFunktionPort-AdresseRAM-Adresse
SPCRSPI Control Register0x0D0x2D
7654 3210
SPIESPEDORDMSTRCPOLCPHASPR1SPR0
BitNameBedeutungFunktion
7SPIESPI Interrupt Enable 0: Interrupts disabled
1: Interrupts enabled
6SPESPI Enable 0: SPI abgeschaltet
1: SPI eingeschaltet
5DORDData Order 0: MSB zuerst
1: LSB zuerst
4MSTRMaster/Slave Select 0: Slave
1: Master
3CPOLClock Polarity 0: Positive Clock Phase
1: Negative Clock Phase
2CPHAClock Phase 0: Sampling zu Beginn der Clock Phase
1: Sampling am Ende der Clock Phase
1SPR1SCK Taktfrequenz 00: Clock / 4
01: Clock / 16
0SPR010: Clock / 64
11: Clock / 128


PortFunktionPort-AdresseRAM-Adresse
SPSRSPI Status Register0x0E0x2E
7654 3210
SPIFWCOL------
BitNameBedeutungFunktion
7SPIFSPI Interrupt FlagInterruptanforderung
6WCOLWrite Collision Flag Schreibkollision aufgetreten
5..0(Nicht benutzt)


PortFunktionPort-AdresseRAM-Adresse
SPDRSPI Data Register0x0F0x2F


Zum Seitenanfang

UART

PortFunktionPort-AdresseRAM-Adresse
UDRUART I/O Data Register0x0C0x2C


PortFunktionPort-AdresseRAM-Adresse
USRUART Status Register0x0B0x2B
7654 3210
RXCTXCUDREFEOR---
BitNameBedeutungFunktion
7RXCUART Receive Complete1: Zeichen empfangen
6TXCUART Transmit Complete1: Schieberegister leer
5UDREUART Data Register Empty1: Senderegister frei
4FEFraming Error1: Ungültiges Stop-Bit
3OROverrun1: Zeichenverlust
2..0(Nicht benutzt)


PortFunktionPort-AdresseRAM-Adresse
UCRUART Control Register0x0A0x2A
7654 3210
RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8
BitNameBedeutungFunktion
7RXCIERX Complete Interrupt Enable1: Interrupt bei empfangenem Zeichen
6TXCIETX Complete Interrupt Enable1: Interrupt bei leerem Senderschieberegister
5UDRIEData Register Empty Interrupt Enable1: Interrupt bei leerem Senderegister
4RXENReceiver Enabled1: Empfänger eingeschaltet
3TXENTransmitter Enable1: Sender eingeschaltet
2CHR99-bit Characters1: Zeichen mit 9 Bit Länge
1RXB8Receive Data Bit 89.Datenbit beim Empfang
0TXB8Transmit Data Bit 89.Datenbit beim Senden


PortFunktionPort-AdresseRAM-Adresse
UBRRUART Baud Rate Register0x090x29


Zum Seitenanfang

Analog Comparator

PortFunktionPort-AdresseRAM-Adresse
ACSRAnalog Comparator Control and Status Register0x080x28
7654 3210
ACD-ACOACIACIEACICACIS1ACIS0
BitNameBedeutungFunktion
7ACDDisableAbschaltung des Comparators
6(Nicht benutzt)
5ACOComparator OutputLesen: Ausgang des Comparators
4ACIInterrupt Flag1: Interruptanforderung
3ACIEInterrupt Enable1: Interrupts enabled
2ACICInput Capture Enable1: Verbindung zu Timer 1 Capture
1ACIS1Input Capture Enable 00: Interrupt bei Pegelwechsel
01: Nicht benutzt)
0ACIS010: Interrupt bei fallender Flanke
11: Interrupt bei steigender Flanke


Zum Seitenanfang

I/O Ports

PortRegisterFunktionPort-AdresseRAM-Adresse
APORTAData Register0x1B0x3B
DDRAData Direction Register0x1A0x3A
PINAInput Pins Address0x190x39
BPORTBData Register0x180x38
DDRBData Direction Register0x170x37
PINBInput Pins Address0x160x36
CPORTCData Register0x150x35
DDRCData Direction Register0x140x34
PINCInput Pins Address0x130x33
DPORTDData Register0x120x32
DDRDData Direction Register0x110x31
PINDInput Pins Address0x100x30


Zum Seitenanfang

©2002 by http://www.avr-asm-tutorial.net