-
        

Ergebnis 1 bis 3 von 3

Thema: Dioden brennen nicht entsprechend dem Programmmuster

  1. #1

    Dioden brennen nicht entsprechend dem Programmmuster

    Anzeige

    Hallo. Ich habe ein Programm für den 16f628 geschrieben, das die Dioden abhängig von einem Schalter an RB0 schaltet oder eben nicht. Jetzt brennen keine LEDs am Anfang. Drücke ich ein bißchen auf dem PIC rum brennen alle oder ein paar nur - aber nicht entsprechend dem Muster. Woran kann das liegen ?

    P.S.: Die Diodenbeschaltung ist im Code integriert....
    Code:
    	list p=16F628                
    	include "P16F628.INC"    
    
    	__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC 	
    
    Hundert1	EQU	0x22
    Hundert2	EQU	0x23
    Zehn	EQU	0x24
    
        
    	org 		0x00                 	;Hier startet der PIC 
    	goto 	Beginn 			;Zum Hauptprogramm
                   
    	org   	0x04        		;Interruptadresse
    	BCF	INTCON,INTE
    	BCF	INTCON,INTF		;An RB0 gab es keinen Interrupt
    	BCF	INTCON, GIE
    	GOTO	Entscheiden		;Fragen, ob der Schalter eingeschaltet
    							;oder ausgeschaltet ist
    
    
    
    Ein
    	BCF     	STATUS, RP0		;Bank0 aktivieren
    	BCF	STATUS,RP0
    	BCF	PORTB,7  		;Gruene Diode deaktivieren
    	BSF		PORTA,2  		;Gelbe Diode aktivieren
    	;Record ein
    	CALL	EineSekunde		;Warten drei Sekunden
    	CALL	EineSekunde
    	CALL	EineSekunde
    	;Record aus
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Pause ein
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Pause aus
    	BCF	PORTA,2  		;Gelbe Diode deaktivieren
    	BSF		PORTA,4  		;Rote Diode aktivieren
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Kanal ein
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Kanal aus			
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Pause ein
    	CALL	EineSekunde		;Warten eine Sekunde
    	;Pause aus
    	BSF		INTCON,RBIE		;Portaenderungsinterrupt für RB0 aktivieren
    	BSF		INTCON,INTE		;Externen RB0 Interrupt aktivieren
    	BSF		INTCON, GIE		;Alle Interrupts aktivieren
    	SLEEP					;Schlafen
    	
    
    Aus
    	;Stop ein
    	BCF     	STATUS, RP0		;Bank0 aktivieren
    	BCF	STATUS,RP0
    	BCF		PORTA,4  		;Rote Diode deaktivieren
    	BSF		PORTB,7  		;Gruene Diode aktivieren
    	CALL	EineSekunde	
    	CALL	EineSekunde
    	;Stop aus
    	BSF		INTCON,RBIE		;Portaenderungsinterrupt für RB0 aktivieren
    	BSF		INTCON,INTE		;Externen RB0 Interrupt aktivieren
    	BSF		INTCON, GIE		;Alle Interrupts aktivieren
    	SLEEP					;Schlafen
    
    
    	
    
    Beginn 
    	BCF     	STATUS, RP0		;Bank0 aktivieren
    	BCF	STATUS,RP0
    	BSF 	CMCON, CM0 	;Alles Digital
        	BSF 	CMCON, CM1 
        	BSF 	CMCON, CM2
    
    	BCF	INTCON, GIE		;Alle Interrupts deaktivieren
    
    	BSF		STATUS,RP0		;Bank1 aktivieren	
    	BSF		TRISB,0			;Pin RB0 ist Eingang
    	CLRF	TRISA
    	BCF	STATUS,RP0
    	CLRF	PORTA
    	CLRF	PORTB
           bsf		INTCON, RBIE 
    	bcf		INTCON, RBIF 	;RB Port hat sich nicht geändert
           bsf		INTCON, GIE		;Alle Interrupts aktivieren
    
    Entscheiden
    	BCF     	STATUS, RP0		;Bank0 aktivieren
    	BCF	STATUS,RP0
    	BTFSS	PORTB,0			;Ist Bit 0 von PortB aktiviert ?
    	GOTO	Ein
    	GOTO	Aus
    
    EineSekunde
    	MOVLW	D'100'
    	MOVWF	Hundert1
    Warte
    	MOVLW	D'100'
    	MOVWF Hundert2
    Wart
    	MOVLW	.10
    	MOVWF Zehn
    Los
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	nop	
    	DECFSZ		Zehn,F
    	GOTO		Los
    	DECFSZ		Hundert2,F
    	GOTO		Wart
    	DECFSZ		Hundert1,F
    	GOTO		Warte
    	RETLW		0
    	
              end                         ;das Ende des Programms
    P.S.:
    1. Daß einige Bankänderungen nicht nötig sind, da ich bereits in der Bank bin, ist mir bekannt.

    2. Kann man davon ausgehen, daß Success! und Verified! bei FPP auch wirklich für überprüften Erfolg stehen ?

  2. #2
    Gast
    Ich könnte den PIC erstechen ! Das Problem hat sich gelöst: Ich habe diese Braunautscheiße deaktiviert und es läuft ! Wofür braucht man den Schmarrn überhaupt ??

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Ich habe diese Braunautscheiße deaktiviert und es läuft ! Wofür braucht man den Schmarrn überhaupt ??
    was benutzt du für eine stormversorgung? denn die brown-out-detection resettet den controller, wenn die betriebsspannung zu sehr sinkt...
    evtl kann es sein dass bei einschalten der leds ein spannugnseinbruch vorkommt (sind es nen haufen superhelle?)... dagegen würde ein großer elko helfen...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •