$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 (GRHIE.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;Wenn Taster T1 gedrückt --> externen Datenspeicher von der Adresse 2000h bis 20FFh mit FFh beschreiben ;Wenn Taster T2 gedrückt --> externen Datenspeicher von der Adresse 2000h bis 20FFh mit 00h beschreiben ;innere Schleife (256 Werte), ;äußere Schleife muss 8 mal die innere Schleife aufrufen und durchlaufen lassen ;------------------------------------------------------------------------ ;Programm: GRHIE ; ;Erstellt am: Dienstag, 3. April 2007 12:41:58 ;Programmiert: Markus Rueß ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2: Zaehlregister innere Schleife ;R3: Zaehlregister aeussere Schleife ;Kommentar: ; ;Aenderungen: ;Geaendert am: Dienstag, 3. April 2007 12:41:58 ; ; ;------------------------------------------------------------------------ ;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 R2, #256d ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: jnb P1.1, TASTER1 ;wenn Taster 1 gedrückt, springe nach TASTER1 jnb P1.2, TASTER2 ;wenn Taster 2 gedrückt, springe nach TASTER2 jmp ABFRAGE ;springe nach ABFRAGE TASTER1: mov A,#0FFh ;Wert FFhex in Akkumulator schreiben mov R2,#0d ;Anzahl der zu beschreibenden Adressen von 2000h bis 20FFh (=256 Adressen) mov DPTR,#2000h ;Startadresse angeben mov R3,#08D ;Wert 8 in R3 reinschreiben jmp SCHLEIFE_8 ;springe nach SCHLEIFE_8 TASTER2: mov A,#00h ;Wert FFhex in Akkumulator schreiben mov R2,#255d ;Anzahl der zu beschreibenden Adressen von 2000h bis 20FFh (=256 Adressen) mov DPTR,#2000h ;Startadresse angeben mov R3,#08D ;Wert 8 in R3 reinschreiben jmp SCHLEIFE_8 ;springe nach SCHLEIFE_8 SCHLEIFE_8: SCHLEIFE: movx @DPTR,A ;Inhalt von A in DPTR schreiben inc DPTR ;DPTR inkrementieren (um 1 erhöhen) djnz R2,SCHLEIFE ;springe nach SCHLEIFE, wenn R2 ungleich 0 ist djnz R3,SCHLEIFE_8 ;springt in SCHLEIFE_8 wenn R3 ungleich 0 ist setb P1.1 ;Setzt Bit P1.1 (nur Simulator) setb P1.2 ;Setzt Bit P1.2 (nur Simulator) jmp ABFRAGE ;springe nach ABFRAGE END ;Programmende