$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 (servo) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm:Pulsweitenmodulation mit Timer 2 zur Servomotoransteuerung, ; Ausgabe an Port 1.1 (VG1/C13). +5V - (VG1/A4) Masse VG1/A21 ; oder VG1/C21 ; Periodendauer 20ms ; T2 - Pulsweite 0,5ms ; T3 - Pulsweite 3 ms; ; ;Grundlegende Funktion: ;* der Reloadwert im CRC legt die Periodendauer fest ;* der Wert im Register CC1 legt das Tastverhaeltnis fest ; ;Datum: 12.Januar 2001 ;Programmiert: J. Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R1 Wertuebergabe des A/D Wertes ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ Periode_low EQU 0E0H ;legt die Periodendauer fest 20ms Periode_high EQU 0B1H ;45536 = 0B1E0H PWM_05_low EQU 00CH ;Compare Wert 0.5ms = 19.5ms PWM_05_high EQU 0FEH ;Compare Wert FE0CH PWM_20_low EQU 048H ;Compare Wert 3.0ms = 17.0 ms PWM_20_high EQU 0F4H ;Compare Wert F830H 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? 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_20_low ;P1.1 Compare Capture Low Byte mov CCH1,#PWM_20_high ;CC High Byte jmp PWM end