$nomod51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(reg535.pdf) ;die 80535-spezifischen Daten $list ;es wird ein Listing erstellt $title (AD_0B7I.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ;Interrupt A/D-Wandler ;T1 --> Wandlung von AN0 bis AN7 und auf externen Speicher schreiben ;ab 2000h ; ; ;Erstellt am: Montag, 30. April 2007 08:44:07 ;Programmiert: Juergen Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 Zaehlregister für AN0 bis AN7 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Montag, 30. April 2007 08:44:07 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp ABFRAGE ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ORG 43H call ISR_AD ;Aufruf Interrupt Service Routine A/D-Wandler reti ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: jnb P1.1,INIT ; Abfrage T1 --> WANDLUNG jmp ABFRAGE INIT: setb EAL ;Allgemeine Freigabe setb EADC ;spezielle Interrupt-Freigabe clr ADM ;A/D-Wandler initialisieren - ADCON clr MX0 ;Kanal AN0 einstellen clr MX1 clr MX2 mov R2,#8 ;R2 initialisieren mov DPTR,#2000h ;Adresse 2000h in Datenpointer mov DAPR,#0 ;Wandlung ausloesen setb P1.1 ;Port 1.1 setzen jmp ABFRAGE ISR_AD: clr IADC ;Interrupt bestaetigen mov A,ADDAT ;Wert von ADDAT in AKKU movx @DPTR,A ;Wert in externen Datenspeicher ab 2000h schreiben inc DPTR ;inc DPTR djnz R2,NICHT_FERTIG;dekr. R2, Springe nach... clr EAL ;alle Interrupts sperren ret NICHT_FERTIG: inc ADCON ;inc ADCON mov DAPR,#0 ;Neue Wandlung ausloesen ret end