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.