www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit 16F627


Autor: Manuel Fellner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.