Hallo! Ich habe folgendes Problem: Ich möchte im folgenden Programmteil die Betriebszeit einstellen. Das soll so funktionieren: Wenn Sch1 an RA0 gedrückt wird, soll der Wert in der Adresse 0x22 (Zeit) um 5 erhöht werden. Das soll dann die Betrieszeit von 5 bis 30 min sein. Damit man weiß, welche Zeit gerade eingestellt ist, werden Leds eingeschaltet. z.B. 5min = Led1, 10 min = Led2, usw. Soweit die Theorie. Wenn ich es mit MPLAB SIM durchlaufen lasse, funktioniert alles. In der Praxis sieht es so aus: Wenn ich den Taster drücke, leuchtet die Led1, wenn ich den Taster wieder loslasse, geht die Led wieder aus. Kann man in die Adresse 0x22 nicht einfach Zahlen hineinschreiben und wieder abfragen? Habe das Gefühl, dass der Wert nicht gespeichert wird. Hier die wichtigsten Programmteile: list p=16f627 ; list directive to define processor #include <p16f627.inc> ; processor specific variable definitions . . . __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _MCLRE_OFF & _LVP_OFF . . . Zeit Equ 0x22 ; Zeitspeicher Betriebszeit . . . Reset movlw B'00000111' ;Komperator ausschalten movwf CMCON bsf STATUS,RP0 ;In das Register Bank 1 schalten clrf INTCON ;Interrupts ausschalten movlw B'00000000' movwf TRISB ;Alle RB Ports sind Ausgänge movlw B'11111111' movwf TRISA ;Alle RA Ports sind Eingänge bsf OPTION_REG, INTEDG ; 0-1-Flanke an RB0 bcf STATUS,RP0 ;Zurückschalten auf Bank 0 clrf PORTB bsf INTCON, INTE ; RB0-interupt erlauben bcf INTCON, GIE ; Interrupt generell nicht erlauben ;********************************************************* ; Zeit einstellen: 5min, 10min, 15min, 20min, 25min, 30min time movlw D'0' movwf Zeit movlw B'00011110' movwf PORTB time1 btfsc PORTA, Sch2 ;Starttaster überprüfen goto Start btfss PORTA, Sch1 ;Zeittaster überprüfen goto time1 movlw D'5' addwf Zeit,1 ;5 in Zeit schreiben movlw D'5' subwf Zeit,0 ;Zeit minus 5 btfss STATUS,Z ;nächste Zeile wird übersprungen, wenn Zero-Flag = 1 goto LED2 movlw B'00110110' ;LED1 movwf PORTB LED2 movlw D'10' subwf Zeit,0 btfss STATUS,Z goto LED3 movlw B'01010110' ;LED2 movwf PORTB LED3 movlw D'15' subwf Zeit,0 btfss STATUS,Z goto LED4 movlw B'10010110' ;LED3 movwf PORTB LED4 movlw D'20' subwf Zeit,0 btfss STATUS,Z goto LED5 movlw B'00101110' ;LED4 movwf PORTB LED5 movlw D'25' subwf Zeit,0 btfss STATUS,Z goto LED6 movlw B'01001110' ;LED5 movwf PORTB LED6 movlw D'30' subwf Zeit,0 btfss STATUS,Z goto LED1 movlw B'10001110' ;LED6 movwf PORTB LED1; goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto Wai100 goto time1
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.