S
SkeeterB08
Guest
kan iemand mij helpen?Ik heb een probleem met de code waar ik aan werk.Voor een tijdje was het schoppen uit het programma wanneer RA0 en RA1 waren beide laag.Ik
heb gespeeld met het nu en toen RA0 en RA1 zijn laag,
maar loopt een beetje geeft me een stack overflow fout op Pic Simulator IDE.Waar ga ik fout?Oh, en dat wat in het begin met errorlevel gooit me uit bij het opstellen van, dus heb ik het commentaar erop.
Hier is de logica van mijn schema schakeling
(Operatie)
Bovenste (RA0) Lagere Sensor (RA1) = 1 Dan Exploitatie (RB6) = 1; Warn (RB5) = 0; Refill (RB3, RB4) = 0
Opper-Sensor = 0 Lagere Sensor = 1 Dan Exploitatie = 1; Waarschuw = 1; Refill = 0
(Hervullen)
Upper Lower Sensor = 0 Then Exploitatie = 0; Waarschuw = Flashing; Refill = 1
Als Upper Sensor = 0 Then Exploitatie = 0, Warn = Knippert, Refill = 1
Als Upper Sensor = 1 Dan Exploitatie = 1; Waarschuw = 0; Refill = 0
(Einde Hervullen)
Hier
is de code, zoals het nu voorligt.Zijn voor de PIC16F628
Code:lijst p = 16F628; lijst richtlijn te definiëren processor
# include <p16f628.inc>; processor specifieke variabele definities
; Errorlevel -302; verbergen bancaire bericht
;*****
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
;*****
; interne OSC instellingen
;*****
"; __CONFIG 'Richtlijn wordt gebruikt voor het insluiten configuratie gegevens binnen. Asm bestand.
; De LABLES naar aanleiding van de richtlijn zijn gelegen in de respectieve. Inc bestand.
Zie de respectieve veiligheidsinformatieblad voor bijkomende informatie over de configuratie woord.;***** VARIABELE DEFINITIES
w_temp EQU 0x70; variabele context wordt gebruikt voor het opslaan
status_temp EQU 0x71; variabele context wordt gebruikt voor het opslaan
Count1 EQU 0X72; Eerste Counter for Delay Loops
Count2 EQU 0X73; Tweede Counter for Delay Loops;************************************************* *********************
ORG 0x000; processor reset vector
goto Start, ga naar het begin van het programma
;*****
ORG 0x004; interruptvector locatie
movwf w_temp; slaan uit de huidige W registreren inhoud
movf STATUS, w; verplaatsen status register in W register
movwf status_temp; slaan uit de inhoud van de status register
movf status_temp, w; ophalen kopie van STATUS register
movwf STATUS; herstellen pre-ISR STATUS register inhoud
swapf w_temp, f
swapf w_temp, w; herstellen pre-ISR W register inhoud
retfie; terugkeer uit onderbreken;*****
Start
clrf PORTA
clrf PORTB
MOVLW B'00000111 '
MOVWF CMCON; Zet vergelijkingslocatie
BSF STATUS, RP0; bank een
movlw 0xFF
movwf PORTA; Porta alle Input
movlw 0x00
movwf PORTB; portb alle Output
BCF STATUS, RP0; terug naar bank 0
;*****
movlw b'00000000 'Zie de datasheet van de voorkeur
movwf OPTION_REG; instellingen van OPTION_REG
BSF PORTB, 7; Zet de Power-LEDbtfss PORTA, 0; Controleer of Upper Sensor = 1
Goto Prestart; Als niet naar prestart subroutine
BSF PORTB, 6
Ga naar Uitvoeren
;*****Prestart
BSF PORTB, 5; Zet Waarschuwing LED
BSF PORTB, 4; Zet Refill LED
BSF PORTB, 3; Turn On Relay Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
Ga naar Uitvoeren; Ga naar Operation ModeRennenbtfss PORTA, 0; Als Upper Sensor = 0
BSF PORTB, 5; Dan zet Waarschuwing LED
btfsc PORTA, 0; Als Upper Sensor = 1
decfsz Count1, 1; niet Decrement Counter 1
btfss PORTA, 1; Als Lagere Sensor = 0
oproep Refill; Go To Refill subroutine
btfsc PORTA, 1; Als Lagere Sensor = 0
decfsz Count2, 1; niet Decrement Counter2
goto RunRefill
BSF PORTB, 4; Zet Refill LED
BSF PORTB, 3; Zet Refill Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 3; Turn Off Refill Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 4; Zet Refill LED
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 5; Zet Waarschuwing LED
BSF PORTB, 6
goto Run;*****
EINDE
heb gespeeld met het nu en toen RA0 en RA1 zijn laag,
maar loopt een beetje geeft me een stack overflow fout op Pic Simulator IDE.Waar ga ik fout?Oh, en dat wat in het begin met errorlevel gooit me uit bij het opstellen van, dus heb ik het commentaar erop.
Hier is de logica van mijn schema schakeling
(Operatie)
Bovenste (RA0) Lagere Sensor (RA1) = 1 Dan Exploitatie (RB6) = 1; Warn (RB5) = 0; Refill (RB3, RB4) = 0
Opper-Sensor = 0 Lagere Sensor = 1 Dan Exploitatie = 1; Waarschuw = 1; Refill = 0
(Hervullen)
Upper Lower Sensor = 0 Then Exploitatie = 0; Waarschuw = Flashing; Refill = 1
Als Upper Sensor = 0 Then Exploitatie = 0, Warn = Knippert, Refill = 1
Als Upper Sensor = 1 Dan Exploitatie = 1; Waarschuw = 0; Refill = 0
(Einde Hervullen)
Hier
is de code, zoals het nu voorligt.Zijn voor de PIC16F628
Code:lijst p = 16F628; lijst richtlijn te definiëren processor
# include <p16f628.inc>; processor specifieke variabele definities
; Errorlevel -302; verbergen bancaire bericht
;*****
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
;*****
; interne OSC instellingen
;*****
"; __CONFIG 'Richtlijn wordt gebruikt voor het insluiten configuratie gegevens binnen. Asm bestand.
; De LABLES naar aanleiding van de richtlijn zijn gelegen in de respectieve. Inc bestand.
Zie de respectieve veiligheidsinformatieblad voor bijkomende informatie over de configuratie woord.;***** VARIABELE DEFINITIES
w_temp EQU 0x70; variabele context wordt gebruikt voor het opslaan
status_temp EQU 0x71; variabele context wordt gebruikt voor het opslaan
Count1 EQU 0X72; Eerste Counter for Delay Loops
Count2 EQU 0X73; Tweede Counter for Delay Loops;************************************************* *********************
ORG 0x000; processor reset vector
goto Start, ga naar het begin van het programma
;*****
ORG 0x004; interruptvector locatie
movwf w_temp; slaan uit de huidige W registreren inhoud
movf STATUS, w; verplaatsen status register in W register
movwf status_temp; slaan uit de inhoud van de status register
movf status_temp, w; ophalen kopie van STATUS register
movwf STATUS; herstellen pre-ISR STATUS register inhoud
swapf w_temp, f
swapf w_temp, w; herstellen pre-ISR W register inhoud
retfie; terugkeer uit onderbreken;*****
Start
clrf PORTA
clrf PORTB
MOVLW B'00000111 '
MOVWF CMCON; Zet vergelijkingslocatie
BSF STATUS, RP0; bank een
movlw 0xFF
movwf PORTA; Porta alle Input
movlw 0x00
movwf PORTB; portb alle Output
BCF STATUS, RP0; terug naar bank 0
;*****
movlw b'00000000 'Zie de datasheet van de voorkeur
movwf OPTION_REG; instellingen van OPTION_REG
BSF PORTB, 7; Zet de Power-LEDbtfss PORTA, 0; Controleer of Upper Sensor = 1
Goto Prestart; Als niet naar prestart subroutine
BSF PORTB, 6
Ga naar Uitvoeren
;*****Prestart
BSF PORTB, 5; Zet Waarschuwing LED
BSF PORTB, 4; Zet Refill LED
BSF PORTB, 3; Turn On Relay Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
Ga naar Uitvoeren; Ga naar Operation ModeRennenbtfss PORTA, 0; Als Upper Sensor = 0
BSF PORTB, 5; Dan zet Waarschuwing LED
btfsc PORTA, 0; Als Upper Sensor = 1
decfsz Count1, 1; niet Decrement Counter 1
btfss PORTA, 1; Als Lagere Sensor = 0
oproep Refill; Go To Refill subroutine
btfsc PORTA, 1; Als Lagere Sensor = 0
decfsz Count2, 1; niet Decrement Counter2
goto RunRefill
BSF PORTB, 4; Zet Refill LED
BSF PORTB, 3; Zet Refill Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 3; Turn Off Refill Sub-Circuit
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 4; Zet Refill LED
btfsc PORTA, 0; Als Upper Sensor = 1
BCF PORTB, 5; Zet Waarschuwing LED
BSF PORTB, 6
goto Run;*****
EINDE