$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_LED_25_50_75.A51) $include(C8051F340.inc) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ;Grundstellung - irgendwo zwischen auf und ab ;25% - 50% - 75% ; ; ;Erstellt am: Freitag, 10. August 2007 09:36:16 ;Programmiert: ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: call Init_Device ;Aufruf der Initialisierung ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: mov C,P1.1 ;Kopieren des Ausgangsports mov P3.2,C ;auf LED 1 mov C,P1.2 ;Kopieren des Ausgangsports mov P3.3,C ;auf LED 2 mov C,P1.3 ;Kopieren des Ausgangsports mov P3.4,C ;auf LED 3 jmp ABFRAGE ;Warteschleife ; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init: mov PCA0CN, #040h anl PCA0MD, #0BFh mov PCA0MD, #002h mov PCA0CPM1, #0C3h mov PCA0CPM2, #0C2h mov PCA0CPM3, #0C2h mov PCA0CPH1, #040h mov PCA0CPH2, #080h mov PCA0CPH3, #0C0h ret Timer_Init: mov TCON, #010h mov TMOD, #001h ret ADC_Init: mov AMX0P, #013h mov AMX0N, #01Fh mov ADC0CN, #080h ret Comparator_Init: mov CPT0MX, #003h ret Port_IO_Init: ; P0.0 - SCK (SPI0), Open-Drain, Digital ; P0.1 - MISO (SPI0), Open-Drain, Digital ; P0.2 - MOSI (SPI0), Open-Drain, Digital ; P0.3 - NSS (SPI0), Open-Drain, Digital ; P0.4 - TX0 (UART0), Open-Drain, Digital ; P0.5 - RX0 (UART0), Open-Drain, Digital ; P0.6 - SDA (SMBus), Open-Drain, Digital ; P0.7 - SCL (SMBus), Open-Drain, Digital ; P1.0 - CEX0 (PCA), Open-Drain, Digital ; P1.1 - CEX1 (PCA), Push-Pull, Digital ; P1.2 - CEX2 (PCA), Push-Pull, Digital ; P1.3 - CEX3 (PCA), Push-Pull, Digital ; P1.4 - Unassigned, 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 ; P2.4 - Unassigned, Open-Drain, Digital ; P2.5 - Unassigned, Open-Drain, Digital ; P2.6 - Unassigned, Open-Drain, Digital ; P2.7 - Unassigned, Open-Drain, Digital ; P3.0 - Unassigned, Open-Drain, Digital ; P3.1 - Unassigned, Open-Drain, Digital ; P3.2 - Skipped, Push-Pull, Digital ; P3.3 - Skipped, Push-Pull, Digital ; P3.4 - Skipped, Push-Pull, Digital ; P3.5 - Unassigned, Open-Drain, Analog ; P3.6 - Unassigned, Open-Drain, Analog ; P3.7 - Unassigned, Open-Drain, Analog mov P3MDIN, #01Fh mov P1MDOUT, #00Eh mov P3MDOUT, #01Ch mov P3SKIP, #01Ch mov XBR0, #007h mov XBR1, #0C4h ret Oscillator_Init: mov OSCICN, #083h mov CLKMUL, #080h clr A ; Wait 5us for initialization djnz ACC, $ orl CLKMUL, #0C0h Osc_Wait2: mov A, CLKMUL jnb ACC.5, Osc_Wait2 ret ; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Timer_Init lcall ADC_Init lcall Comparator_Init lcall Port_IO_Init lcall Oscillator_Init ret end