$NOMOD51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(C8051F320.inc) ;die C8051F340-spezifischen Daten $list ;es wird ein Listing erstellt $title (PWM_LED_25_50_75.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ;T1 --> gibt an ;P0.0 - PWM mit Duty Cycle 25% ;P0.1 - PWM DC 50% ;P0.2 - PWM DC 75% ; ;Erstellt am: Sonntag, 22. November 2009 20:43:42 ;Programmiert: ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Sonntag, 22. November 2009 20:43:42 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h anl PCA0MD, #0BFh ;WDTE = 0 Watchdog aus jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ;ORG ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: call Init_Device ;Aufruf zur Initialisierung der Controller Funktionen ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: jnb P1.1,PCA_R ;Start PCA-Timer jmp ABFRAGE PCA_R: mov PCA0CN,#0x40 ;Start PCA0-Zeitgeber/Zaehler jmp ABFRAGE ; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init: anl PCA0MD, #0BFh mov PCA0MD, #008h mov PCA0CPM0, #0C2h mov PCA0CPM1, #0C2h mov PCA0CPM2, #0C2h mov PCA0CPM4, #048h mov PCA0CPL4, #0E9h mov PCA0CPH0, #0C0h mov PCA0CPH1, #080h mov PCA0CPH2, #040h ret Port_IO_Init: ; P0.0 - CEX0 (PCA), Open-Drain, Digital ; P0.1 - CEX1 (PCA), Open-Drain, Digital ; P0.2 - CEX2 (PCA), Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Skipped, Open-Drain, Digital ; P1.3 - Skipped, Open-Drain, Digital ; P1.4 - Skipped, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov P1SKIP, #01Ch mov XBR1, #043h ret Oscillator_Init: mov OSCICN, #081h ret ; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Port_IO_Init lcall Oscillator_Init ret end