$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 (pwm_1) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm:Pulsweitenmodulation mit Timer 2, ; Ausgabe an Port 1.1 (VG1/C13). ; Mit der ADDA-Karte kann am Potentiometer die Pulsweite ein- ; gestellt werden und an P1.1 mit einem Oszillographen beobachtet ; werden. ; ;Grundlegende Funktion: ;* der Reloadwert im CRC legt die Periodendauer fest ;* der Wert im Register CC1 legt das Tastverhaeltnis fest ; ;Datum:15.10.1995 ;Programmiert: Jens Weber, Stephan Schrodt ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R0 Wertuebergabe des A/D Wertes ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ Load_low EQU 0 ;Reloadwert, legt die Periodendauer fest Load_high EQU 255 ;hier 0FF00H=256 Microsek. bei 1 MHz Takt Comp_low EQU 0 ;Compare Wert Comp_high EQU 255 ;Compare Wert CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ;------------------------------------------------------------------------ ;Initialisierungsteil für On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: ;Timer Intitialisierung MOV T2CON,#00010001B ;Timer2 Einstellung:Timer mit f=f(osz)/12 ;Mode 0 ->Reload bei šberlauf MOV CCEN,#00001000B ;Compare Mode des CC1 freigeben MOV CRCL,Load_low ;Low Byte von Compare Reload Capture MOV CRCH,Load_high ;High Byte von... MOV CCL1,Comp_low ;Compare Capture Low Byte MOV CCH1,Comp_high ;CC High Byte ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ PWM: LCALL A_D ;A/D Wandlung aufrufen JMP PWM ;kontinuierliches Signal, d.h. wieder von vorne ;------------------------------------------------------------------------ ;Unterprogramm fuer A/D Wandler ;------------------------------------------------------------------------ A_D: MOV DAPR,#0 ;Wandlung starten, Meßbereich 0-5 Volt JB BSY,$ ;solange warten bis Wandlung beendet ist MOV CCL1,ADDAT ;gewandeltes Ergebnis in CCL1 RET ;Ruecksprung zu Hauptprogramm END