save listing off ; kein Listing über diesen File ;**************************************************************************** ;* * ;* AS 1.41 - Datei REGAVR.INC * ;* * ;* Sinn : enthält SFR- und Bitdefinitionen für die AVR-Prozessoren * ;* * ;* letzte Änderungen : 6. 7.1996 * ;* letzte Änderungen : 8. 6.1997 Anpassung an die endgültigen Versionen * ;* * ;**************************************************************************** ifndef regavrinc ; verhindert Mehrfacheinbindung regavrinc equ 1 if (MOMCPUNAME<>"AT90S1200")&&(MOMCPUNAME<>"AT90S2313")&&(MOMCPUNAME<>"AT90S4414")&&(MOMCPUNAME<>"AT90S8515") fatal "Falscher Prozessortyp eingestellt: nur AT90S1200, AT90S2313, AT90S4414 oder AT90S8515 erlaubt!" endif if MOMPASS=1 message "Atmel-AVR-SFR-Definitionen (C) 1996 Alfred Arnold" endif ;---------------------------------------------------------------------------- ; Prozessorkern sreg port $3f ; Statusregister: c equ 0 ; Carry z equ 1 ; Ergebnis Null n equ 2 ; Ergebnis negativ v equ 3 ; Zweierkomplement-Überlauf s equ 4 ; Vorzeichen h equ 5 ; Halfcarry t equ 6 ; Bitspeicher i equ 7 ; globale Interruptsperre if MOMCPU>=$902313 spl equ $3d ; Stapelzeiger (MSB) if MOMCPU>=$904414 sph equ $3e ; (LSB) endif endif ;---------------------------------------------------------------------------- ; Chip-Konfiguration mcucr port $35 ; CPU-Steuerung: isc00 equ 0 ; Flankenwahl INT0 isc01 equ 1 ; Flanken/Pegeltriggerung INT0 if MOMCPU>=$902313 isc10 equ 2 ; Flankenwahl INT1 isc11 equ 3 ; Flanken/Pegeltriggerung INT1 endif sm equ 4 ; Idle/Powerdown-Modus wählen se equ 5 ; Sleep-Modus freigeben if MOMCPU>=$904414 srw equ 6 ; Wait-State-Wahl externes SRAM sre equ 7 ; Freigabe externes SRAM endif ;---------------------------------------------------------------------------- ; Interrupt-Steuerung gimsk port $3b ; generelle Interrupt-Maske: int0 equ 6 ; externer Interrupt 0 if MOMCPU>=$902313 int1 equ 7 ; externer Interrupt 1 endif if MOMCPU>=$902313 gifr port $3a ; generelle Interrupt-Flags: intf0 equ 6 ; externer Interrupt 0 intf1 equ 7 ; externer Interrupt 1 endif timsk port $39 ; Timer-Interrupt-Maske: toie0 equ 1 ; Überlauf Timer 0 if MOMCPU>=$902313 if MOMCPU>=$904414 ocie1b equ 5 ; Vergleich B Timer 1 endif ocie1a equ 6 ; Vergleich Timer 1 toie1 equ 7 ; Überlauf Timer 1 ticie1 equ 3 ; Fang Timer 1 endif tifr port $38 ; Timer-Interrupt-Flags: tov0 equ 1 ; Überlauf Timer 0 if MOMCPU>=$902313 if MOMCPU>=$904414 ocf1b equ 5 ; Vergleich B Timer 1 endif ocf1a equ 6 ; Vergleich A Timer 1 tov1 equ 7 ; Überlauf Timer 1 icf1 equ 3 ; Fang Timer 1 endif ;---------------------------------------------------------------------------- ; parallele Ports if MOMCPU>=$904414 porta port $1b ; Datenregister Port A ddra port $1a ; Datenrichtungsregister Port A pina port $19 ; Leseregister Port A endif portb port $18 ; Datenregister Port B ddrb port $17 ; Datenrichtungsregister Port B pinb port $16 ; Leseregister Port B if MOMCPU>=$904414 portc port $15 ; Datenregister Port C ddrc port $14 ; Datenrichtungsregister Port C pinc port $13 ; Leseregister Port C endif portd port $12 ; Datenregister Port D ddrd port $11 ; Datenrichtungsregister Port D pind port $10 ; Leseregister Port D ;---------------------------------------------------------------------------- ; Timer tccr0 port $33 ; Steuerregister Timer 0: cs00 equ 0 ; Vorteilereinstellung cs01 equ 1 cs02 equ 2 tcnt0 port $32 ; Zählregister Timer 0 if MOMCPU>=$902313 tccr1a port $2f ; Steuerregister A Timer 1: pwm10 equ 0 ; Modus Pulsweitenmodulator pwm11 equ 1 com1a0 equ 6 ; Vergleichsmodus A com1a1 equ 7 if MOMCPU>=$904414 com1b0 equ 4 ; Vergleichsmodus B com1b1 equ 5 endif tccr1b port $2e ; Steuerregister B Timer 1: cs10 equ 0 ; Vorteilereinstellung cs11 equ 1 cs12 equ 2 ctc1 equ 3 ; nach Gleichheit zurücksetzen ? ices1 equ 6 ; Flankenwahl Fang icnc1 equ 7 ; Rauschfilter für Fangfunktion tcnt1l port $2c ; Zählregister Timer 1 (LSB) tcnt1h port $2d ; (MSB) if MOMCPU>=$904414 ocr1al port $2a ; Vergleichsregister A Timer 1 (LSB) ocr1ah port $2b ; (MSB) ocr1bl port $28 ; Vergleichsregister B Timer 1 (LSB) ocr1bh port $29 ; (MSB) elseif ocr1l port $2a ; Vergleichsregister Timer 1 (LSB) ocr1h port $2b ; (MSB) endif icr1l port $24 ; Fangwert Timer 1 (LSB) icr1h port $25 ; (MSB) endif ;---------------------------------------------------------------------------- ; Watchdog wdtcr port $21 ; Watchdog-Steuerregister: wdp0 equ 0 ; Vorteiler wdp1 equ 1 wdp2 equ 2 wde equ 3 ; Freigabe if MomCPU>=$902313 wdttoe equ 4 ; zur Sperre gebraucht endif ;---------------------------------------------------------------------------- ; serielle Ports if MOMCPU>=$902312 udr port $0c ; Datenregister UART usr port $0b ; Statusregister UART: or equ 3 ; Empfängerüberlauf fe equ 4 ; Framing-Fehler udre equ 5 ; Datenregister wieder frei txc equ 6 ; Sendung komplett rxc equ 7 ; Empfang komplett ucr port $0a ; Steuerregister UART: txb8 equ 0 ; Sendebit 8 rxb8 equ 1 ; Empfangsbit 8 chr9 equ 2 ; auf 9-Bit-Datenwerte umschalten txen equ 3 ; Sender freigeben rxen equ 4 ; Empfänger freigeben udrie equ 5 ; Interrupts bei freiem Datenregister freigeben txcie equ 6 ; Interrupts nach Versand freigeben rxcie equ 7 ; Interrupts nach Empfang freigeben ubrr port $09 ; Baudratengenerator endif if MOMCPU>=$904414 spcr port $0d ; SPI Steuerregister: spr0 equ 0 ; Wahl Taktfrequenz spr1 equ 1 cpha equ 2 ; Taktphase cpol equ 3 ; Taktpolarität mstr equ 4 ; Master/Slave-Wahl dord equ 5 ; Bitreihenfolge spe equ 6 ; SPI freigeben spie equ 7 ; Interruptfreigabe SPI spsr port $0e ; SPI Statusregister: wcol equ 6 ; Schreibkollision ? spif equ 7 ; SPI-Interrupt aufgetreten ? spdr port $0f ; SPI Datenregister endif ;---------------------------------------------------------------------------- ; Analogkomparator acsr port $08 ; Komparator-Steuer/Statusregister: acis0 equ 0 ; Interrupt-Modus acis1 equ 1 if MomCPU>=$902313 acic equ 2 ; Komparator als Fangsignal für Timer 1 benutzen endif acie equ 3 ; Interrupt freigeben aci equ 4 ; Interrupt aufgetreten ? aco equ 5 ; Komparatorausgang acd equ 7 ; Strom abschalten ;---------------------------------------------------------------------------- ; EEPROM if MomCPU>=$908515 eearl port $1e ; Adreßregister eearh port $1f elseif eear port $1e endif eedr port $1d ; Datenregister eecr port $1c ; Steuerregister: eere equ 0 ; Lesefreigabe eewe equ 1 ; Schreibfreigabe if MomCPU>=$902313 eemwe equ 2 endif ;---------------------------------------------------------------------------- ; Vektoren ; Leider verschieben sich Vektoren bei den höheren Prozessoren. ; Warum nur, Atmel, warum ? vec_reset label 0 ; Reset-Einsprung vec_int0 label 1 ; Einsprung ext. Interrupt 0 switch MOMCPUNAME case "AT90S1200" vec_tm0ovf label 2 ; Einsprung Überlauf Timer 0 vec_anacomp label 3 ; Einsprung Analog-Komparator case "AT90S2313" vec_int1 label 2 ; Einsprung ext. Interrupt 2 vec_tm1capt label 3 ; Einsprung Fang Timer 1 vec_tm1comp label 4 ; Einsprung Vergleich Timer 1 vec_tm1ovf label 5 ; Einsprung Überlauf Timer 1 vec_tm0ovf label 6 ; Einsprung Überlauf Timer 0 vec_uartrx label 7 ; Einsprung UART Empfang komplett vec_uartudre label 8 ; Einsprung UART Datenregister leer vec_uarttx label 9 ; Einsprung UART Sendung komplett vec_anacomp label 10 ; Einsprung Analog-Komparator case "AT90S4414","AT90S8515" vec_int1 label 2 ; Einsprung ext. Interrupt 2 vec_tm1capt label 3 ; Einsprung Fang Timer 1 vec_tm1compa label 4 ; Einsprung Vergleich A Timer 1 vec_tm1compb label 5 ; Einsprung Vergleich A Timer 1 vec_tm1ovf label 6 ; Einsprung Überlauf Timer 1 vec_tm0ovf label 7 ; Einsprung Überlauf Timer 0 vec_spi label 8 ; Einsprung SPI-Interrupt vec_uartrx label 9 ; Einsprung UART Empfang komplett vec_uartudre label 10 ; Einsprung UART Datenregister leer vec_uarttx label 11 ; Einsprung UART Sendung komplett vec_anacomp label 12 ; Einsprung Analog-Komparator endcase ;---------------------------------------------------------------------------- ; Speicheradressen eestart equ 0 ; Startadresse internes EEPROM iram equ 96,data ; Startadresse internes SRAM ; (hinter gemapptem I/O) irom label 0 ; Startadresse internes EPROM switch MOMCPUNAME case "AT90S1200" eeend equ 63 ; Endadresse EEPROM iramend equ 95,data ; Endadresse SRAM iromend label 1023 ; Endadresse EPROM case "AT90S2313" eeend equ 127 iramend equ $df,data iromend label 2047 case "AT90S4414" eeend equ 255 iramend equ $15f,data iromend label 4095 case "AT90S8515" eeend equ 511 iramend equ $25f,data iromend label 8191 endcase ;---------------------------------------------------------------------------- endif restore ; wieder erlauben