$NOMOD51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg51 erstellt $include(REG51.inc) ;die 8051-spezifischen Daten $list ;es wird ein Listing erstellt $title (P04_MCWS08.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ; Zeitschleife: mit dem Befehl djnz Rn,Sprung wird eine Zeitverzoegerung ; erzeugt. Nach jedem Durchlauf wird P3.2 invertiert. ; f_Core = 12MHz -> T_Core = 8,33e-8s = 0,0833µs ; djnz -> 2 cycle: 256 x 2cycle = 21,33µs ; t_Schleife = (2 * (R2 + 1) * R3 + 1 + nBefehle)* T_Core ; ;Erstellt am: Montag, 04. November 2008 16:26:02 ;Programmiert: Matthias Buerkle, buma0037aths-karlsruhe.de ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2, R3 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Montag, 04. November 2008 16:26:02 ; ; ;------------------------------------------------------------------------ ;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,#0FFh ; lade R2 mit 0xFF mov R3,#0FFh ; Dauer: 2 Cycle ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: djnz R2,ABFRAGE ; R2 wird um eins dekrementiert, bis R2 = 0, ansonsten Sprung zu ABFRAGE mov R2,#0FFh ; wenn R2 = 0 wird Programm fortgesetzt und R2 wieder mit FF geladen djnz R3,ABFRAGE ; immer wenn R2 um FF dekrementiert ist, wird R3 um eins dekrementiert mov R3,#0FFh ; nach R2 * R3 durchläufen wird R3 wieder geladen und Programm weiter ausgefuehrt cpl P3.2 ; Port 3.2 invertieren jmp ABFRAGE ; t_Schleife ~ 10,97ms end