$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 (pwm1)
;------------------------------------------------------------------------
;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 Ueberlauf
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