$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 (SER_ZEICH.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung: ;Programmierung der seriellen Schnittstelle fuer ein ;EPROM. Ein grosses Zeichen vom Terminal gesendet ;wird in kleines Zeichen gewandelt und an das Terminal ;zurueckgeschickt. ;Demo im Simulator ;------------------------------------------------------------------------ ; ;Datum: 29.11.2004 ;Programmiert: J. Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ; ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h ljmp INIT ;Interruptadressen ueberspringen ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ org 23H ;Adresse vom Programmspeicher call SERINT ;Interrupt-Adresse serieller Interrupt ;Sprung zur Interrupt-Service Routine reti ;Ruecksprung aus Interrupt ;------------------------------------------------------------------------ ;Programmbeginn ;------------------------------------------------------------------------ org 100H ;Programmstart INIT: jb P1.1,INIT ;Start mit T1 clr RI ;Sendeinterrupt zuruecksetzen/freigeben clr TI ;Empfangsinterrupt zuruecksetzen/ freigeben mov PCON,#80H ;9600 Bit/s einstellen mov SCON,#50H ;8-Bit UART ;Empfaenger Bit Freigabe setb BD ;internen Baudratengenerator einschalten ;------------------------------------------------------------------------ ;Programmierung der Interrupteinheit ;------------------------------------------------------------------------ setb EAL ;allgemeine Interrupt Freigabe setb ES ;seriellen Interrupt freigeben clr P3.2 ;LED 1 zeigt an, dass die Initialisierung ab- ;geschlossen ist WARTE: jnb P1.3,ENDE ;Programmende jmp warte ;warten SERINT: cpl P3.3 mov A,SBUF ;empfangenes Zeichen in den Akkumulator add A,#20h ;in kleines Zeichen wandeln mov SBUF,A ;Zeichen senden serint1: jnb TI,serint1 ;warten bis serielle Daten gesendet clr TI ;Kennung fuer das Ende der Uebertragung loeschen clr RI ;Empfangs-Interrupt freigeben ret ENDE: ljmp 8000H ;Monitorruecksprung end