$NOMOD51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(C8051F340.inc) ;die C8051F340-spezifischen Daten $list ;es wird ein Listing erstellt $title (PRELL_T1.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: ;Die Prellzeit von Taster 1 und die Anzahl der Prellungen wird gemessen ;T1 Annahme -----|_______|---|_____|-|_______________________________ ; ;Messergebnis: Die Schalter der VC_2 scheinen nicht zu prellen! ; ;PDL: ;Initialisierung ;PCA im Capture Mode - auf steigende und fallende Flanke getriggert ;Es erfolgt ein Interrupt auf jede Flanke - ;Falls der Inhalt in P1.1 Null ist --> fallende Flanke; ;CCF1 in PCA0C1 wird gesetzt und CCF-Interrupt ausgeloest. ;In CCF-ISR_PCA0 - CF-Flag zuruecksetzen ;Im CCF-Interrupt wird P0 und der Inhalt von PCA0 gelesen und ;ab Adresse 0000 gespeichert. ; ; ; ;0000H - Port 1 ;0001H - PCA0L ;0002H - PCA0H ; ; ; ; ;Erstellt am: Sonntag, 17. Januar 2010 18:52:40 ;Programmiert: Juergen Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Sonntag, 17. Januar 2010 18:52:40 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ORG 5BH call ISR_PCA0 reti ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: call Init_Device ;Aufruf zur Initialisierung der Controller Funktionen mov DPTR,#0h ;Datenpointer auf 0000h ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: nop ;Warteschleife jmp ABFRAGE ;Nach ABFRAGE ISR_PCA0: clr CCF1 ;Flag zuruecksetzen - Interrupt quittieren mov A,P1 ;Im CCF-Interrupt wird P1 und der Inhalt von PCA0 gelesen und movx @DPTR,A ;ab Adresse 0000 gespeichert. inc DPTR ;0000H - Port 0 mov A,PCA0CPL1 ;0001H - PCA0L movx @DPTR,A inc DPTR mov A,PCA0CPH1 ;0002H - PCA0H movx @DPTR,A inc DPTR ;DPTR erhoehen ret ;------------------------------------ ;- Generated Initialization File -- ;------------------------------------ ; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init: mov PCA0CN, #040h anl PCA0MD, #0BFh mov PCA0MD, #008h mov PCA0CPM1, #031h ret Port_IO_Init: ; P0.0 - Skipped, Open-Drain, Digital ; P0.1 - Skipped, Open-Drain, Digital ; P0.2 - Skipped, Open-Drain, Digital ; P0.3 - Skipped, Open-Drain, Digital ; P0.4 - Skipped, Open-Drain, Digital ; P0.5 - Skipped, Open-Drain, Digital ; P0.6 - Skipped, Open-Drain, Digital ; P0.7 - Skipped, Open-Drain, Digital ; P1.0 - CEX0 (PCA), Open-Drain, Digital ; P1.1 - CEX1 (PCA), Push-Pull, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, 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 - Unassigned, Open-Drain, Digital ; P3.3 - Unassigned, Open-Drain, Digital ; P3.4 - Unassigned, Open-Drain, Digital ; P3.5 - Unassigned, Open-Drain, Digital ; P3.6 - Unassigned, Open-Drain, Digital ; P3.7 - Unassigned, Open-Drain, Digital mov P1MDOUT, #002h mov P0SKIP, #0FFh mov XBR1, #042h ret Oscillator_Init: mov OSCICN, #081h ret Interrupts_Init: mov EIE1, #010h mov IE, #080h ret ; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Port_IO_Init lcall Oscillator_Init lcall Interrupts_Init ret end