$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 (WS07_FT_P09.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ; Einlesen von zwei analogen Werten (AIN0 und AIN1) und ; Mittelwert bilden. ; ; ;Erstellt am: Montag, 29. Oktober 2007 07:09:53 ;Programmiert: Benjamin Käuper ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Montag, 29. Oktober 2007 07:09:53 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ;ORG ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: mov ADCON,#10000000B ;Kanal AN0 angewaehlt, Stop nach der Wandlung ; Bit7=1 Bitrate 9600[bit/s] ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ WERT1: clr MX0 ;Kanal AN0 angewaehlt, Stop nach der Wandlung mov DAPR,#0 ;Messbereich von 0V bis 5V festgelegt, Start A/D jb BSY,$ ;erst weiterspringen wenn Wandlung abgeschlossen mov R1,ADDAT ;Wert in R1 aus Ergebnisregister WERT2: setb MX0 ;Kanal AN1 angewaehlt mov DAPR,#0 ;Messbereich festgelegt, Start A/D jb BSY,$ ;erst weiterspringen wenn Wandlung abgeschlossen mov A,ADDAT ;Wert in ACCU BERECHNE_MW: clr C ;Carryflag löschen add A,r1 ;Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und dem Inhalt von Register R1 rrc A ;Verschiebe den Inhalt des Akkumulators um 1 Stelle nach links über das Carry jmp WERT1 ;springe nach WERT1 end