$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 (SERVO04.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm:Pulsweitenmodulation mit Timer 2 ; Ausgabe an Port 1.1 (VG1/C13) und P3.2. ; Periodendauer 20ms ; T2 - Pulsweite 5ms = 75% Helligkeit ; T3 - Pulsweite 15ms = 25% Helligkeit ; ;Grundlegende Funktion: ;* der Reloadwert im CRC legt die Periodendauer fest ;* der Wert im Register CC1 legt das Tastverhaeltnis fest ; ;Datum: 12.Januar 2001 - Aus Programm SERVO.ASM generiert ;Programmiert: J. Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ; ;Kommentar: ; ;Aenderungen: ;Datum:27.12.2003 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ Periode_low EQU 0E0H ;legt die Periodendauer fest 20ms Periode_high EQU 0B1H ;45536 = 0B1E0H PWM_05_low EQU 078H ;Compare Wert FFFFH-5ms= PWM_05_high EQU 0ECH ;75% an Compare Wert EC78H PWM_15_low EQU 068H ;Compare Wert FFFH-15ms= PWM_15_high EQU 0C5H ;25% an Compare Wert C568H 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,#Periode_low ;Low Byte von Compare Reload Capture mov CRCH,#Periode_high ;High Byte von Compare Reload Capture ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ PWM: jnb P1.2,PW05 ;Taste 2 betaetigt? jnb P1.3,PW20 ;Taste 3 betaetigt? ;Ausgabe an P3.2 jnb P1.1,WEITER ;Ist P1.1 LOW? setb P3.2 ;Dann HIGH WEITER: jb P1.1,WEITER2 ;Ist P1.1 HIGH? clr P3.2 ;Dann LOW WEITER2: jmp PWM PW05: mov CCL1,#PWM_05_low ;P1.1 Compare Capture Low Byte mov CCH1,#PWM_05_high ;CC High Byte jmp PWM PW20: mov CCL1,#PWM_15_low ;P1.1 Compare Capture Low Byte mov CCH1,#PWM_15_high ;CC High Byte jmp PWM end