$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_AD_L.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: PulsWeitenModulation mit AD-Wandler ; und Ausgabe auf Leuchten PORT 3.2,3.3,3.4 ; ;Datum: 02.01.2004 ;Programmiert: ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ Load_low EQU 0 ;Reloadwert, legt die Periodendauer fest Load_high EQU 0 ;hier 0FF00H=256 Microsek. bei 1 MHz Takt Comp_low EQU 0 ;Compare Wert Comp_high EQU 0 ;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 ;------------------------------------------------------------------------ ;Ausgabe von /Port 1.1 auf 3.2,3.3,3.4 ;------------------------------------------------------------------------ jnb P1.1,SETZEN clr P3.2 ;Bit P1.1 ja->/P3.2 clr P3.3 clr P3.4 SETZEN: jb P1.1,WEITER ;Bit P1.1 nein->P3.2 setb P3.2 setb P3.3 setb P3.4 WEITER: 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 CCH1,ADDAT ;gewandeltes Ergebnis in CCH1 RET ;Ruecksprung zu Hauptprogramm END