$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 (HELED.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ;Timer2 Reloadregister wird mit 00 geladen => Periodendauer wird festegelegz ;CompareRegister wird variiert (CCEN-Register) ;Comparemodus CCH1=127 ;Heller heißt CCH1 erniedrigen ;Dunkler erhöhen ;Port auf P3.2,P3.3,P3.4 kopieren ; ;Datum: 12.06.2006 ;Programmiert: Daniel Stiegler ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ Org 2bh ;Timer2-Interrupt wird ausgelöst bei Überlauf clr TF2 ;Timer2-Flag zurücksetzen call TIMER2_ISR ;Interrupt-Service-Routine aufrufen reti Org 005bh ;External Interrupt 4 CC1 call EX4_ISR ;ISR von EX4 reti ;------------------------------------------------------------------------ ;Initialisierungsteil für On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: mov IEN0, #10010000b ;Allgemeine Interrupt-Freigabe mov T2CON,#00010001b ;Zeitgeberbetrieb /12, Wiederladen bei Überlauf mov CCEN, #00001000b ;Compare CC1 freigeben da an P1.1 ausgegeben werden soll mov CRCH, #0h ;Wiederladen auf 0 mov CRCL, #0h mov CCH1, #127 ;Startwert der zu variierenden Pulsweite (Flankenwechsel), Halbe Helligkeit mov CCL1, #0 setb EX4 ;Freigabe für EX4 (Interrupt bei Flankenwechsel) setb ET2 ;Freigabe Überlauf-Interrupt Timer2 ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: nop jmp ABFRAGE TIMER2_ISR: mov C, P1.1 ;CC1 ins Carry mov P3.2, C ;Carry auf LED jnb P1.2, CCHDec ;Taster 2 gedrückt jnb P1.3, CCHInc ;Taster 3 gedrückt jmp FERTIG CCHDec: mov A, CCH1 ;High Nibble von CC1 in Akku dec A ;A um eins verringern mov CCH1, A ;Akku zurück ins CCH1 jmp FERTIG CCHInc: mov A, CCH1 ;High Nibble von CC1 in Akku inc A ;A um eins erhöhen mov CCH1, A ;Akku zurück ins CCH1 FERTIG: ret EX4_ISR: mov C, P1.1 ;CC1 ins Carry mov P3.2, C ;Carry auf LED ret End