S
SkeeterB08
Guest
quelqu'un peut m'aider?J'ai un problème avec le code sur lequel je travaille.Pour un coup de pied alors
qu'il était sur le programme lors de RA0 et RA1 sont à la fois faible.J'ai joué avec lui et maintenant quand RA0 et RA1 sont faibles, il tourne un peu puis me donne une erreur de dépassement de pile sur Pic Simulator IDE.Où vais-je tort?Oh, et un peu au début avec errorlevel jette moi lors de la compilation,
et j'ai donc il commenté.
Voici le schéma logique de mon circuit
(Opération)
Haut (RA0) Basse-Sensor (RA1) = 1 Ensuite, l'opération (RB6) = 1; Warn (RB5) = 0; Refill (RB3, RB4) = 0
Haut de capteur = 0 Lower Sensor = 1 Ensuite, l'opération = 1; Warn = 1; Refill = 0
(Remplissage)
Haut Bas capteur = 0 Then opération = 0; Warn = clignotant; Refill = 1
Si le Haut-Sensor = 0 Then opération = 0, Warn = clignotant, Refill = 1
Si le Haut-Sensor = 1 Ensuite, l'opération = 1; Avertir = 0; Refill = 0
(Fin de remplissage)
Voici le code tel
qu'il est.C'est pour le PIC16F628
Code:liste p = 16F628; liste de directive visant à définir processeur
# include <p16f628.inc>; processeur spécifique la définition des variables
; Errorlevel -302; cacher bancaire message
;*****
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
;*****
; interne osc paramètres
;*****
; '__CONFIG «Directive est utilisée pour intégrer les données de configuration de l'intérieur. Asm fichier.
; Les étiquettes ci-après la directive se trouvent dans les. Fichier inc.
; Voir fiche technique pour plus d'informations sur la configuration mot.;***** VARIABLE DÉFINITIONS
w_temp EQU 0x70; variable utilisée pour contexte d'économie
status_temp EQU 0x71; variable utilisée pour contexte d'économie
Count1 EQU 0X72 Premier retard pour Counter Loops
Count2 EQU 0X73; le deuxième pour cause de retard Loops;************************************************* *********************
ORG 0x000; reset processeur vectoriel
goto Start; aller au début du programme
;*****
ORG 0x004; vecteur d'interruption emplacement
movwf w_temp; mettre hors cours W enregistrer le contenu
movf STATUS, w; registre d'état de se déplacer registre W
movwf status_temp; mettre hors contenu du registre d'état
movf status_temp, w; récupérer copie du registre d'état
movwf STATUS; restauration pré-isr STATUS register contents
swapf w_temp, f
swapf w_temp, w, restaurer isr W pré-enregistrer le contenu
retfie; retour d'interrompre;*****
Démarrer
clrf PORTA
clrf PORTB
MOVLW B'00000111 '
MOVWF CMCON; Éteignez comparateur
bsf STATUS, RP0; une banque
movlw 0xFF
movwf PORTA, porte d'entrée tous les
movlw 0x00
movwf PORTB; portb toutes les sorties
bcf STATUS, RP0; retour à la banque 0
;*****
movlw b'00000000 »Voir la fiche de préféré
movwf OPTION_REG; paramètres de OPTION_REG
bsf PORTB, 7; Allumez Power LEDbtfss PORTA, 0; Vérifiez si Upper Sensor = 1
Goto pré; Si pas de pré subroutine
bsf PORTB, 6
Goto Run
;*****Pré
bsf PORTB, 5; Allumez Warning LED
bsf PORTB, 4; Allumez Refill LED
bsf PORTB, 3; Activer relais Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
Goto Run; Aller à la Mode de fonctionnementCourirbtfss PORTA, 0; Si Upper Sensor = 0
bsf PORTB, 5; Ensuite, le virage à LED d'alerte
btfsc PORTA, 0; Si Upper Sensor = 1
decfsz Count1, 1; Ne pas Decrement Compteur 1
btfss PORTA, 1; Si Lower Sensor = 0
Recharge appel; Go To Refill SUBROUTINE
btfsc PORTA, 1; Si Lower Sensor = 0
decfsz Count2, 1; Ne pas décrément Counter2
goto RunRefill
bsf PORTB, 4; Allumez Refill LED
bsf PORTB, 3; Allumez Refill Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 3; Désactiver Refill Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 4; Éteignez Refill LED
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 5; Éteignez Warning LED
bsf PORTB, 6
goto Run;*****
FIN
qu'il était sur le programme lors de RA0 et RA1 sont à la fois faible.J'ai joué avec lui et maintenant quand RA0 et RA1 sont faibles, il tourne un peu puis me donne une erreur de dépassement de pile sur Pic Simulator IDE.Où vais-je tort?Oh, et un peu au début avec errorlevel jette moi lors de la compilation,
et j'ai donc il commenté.
Voici le schéma logique de mon circuit
(Opération)
Haut (RA0) Basse-Sensor (RA1) = 1 Ensuite, l'opération (RB6) = 1; Warn (RB5) = 0; Refill (RB3, RB4) = 0
Haut de capteur = 0 Lower Sensor = 1 Ensuite, l'opération = 1; Warn = 1; Refill = 0
(Remplissage)
Haut Bas capteur = 0 Then opération = 0; Warn = clignotant; Refill = 1
Si le Haut-Sensor = 0 Then opération = 0, Warn = clignotant, Refill = 1
Si le Haut-Sensor = 1 Ensuite, l'opération = 1; Avertir = 0; Refill = 0
(Fin de remplissage)
Voici le code tel
qu'il est.C'est pour le PIC16F628
Code:liste p = 16F628; liste de directive visant à définir processeur
# include <p16f628.inc>; processeur spécifique la définition des variables
; Errorlevel -302; cacher bancaire message
;*****
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
;*****
; interne osc paramètres
;*****
; '__CONFIG «Directive est utilisée pour intégrer les données de configuration de l'intérieur. Asm fichier.
; Les étiquettes ci-après la directive se trouvent dans les. Fichier inc.
; Voir fiche technique pour plus d'informations sur la configuration mot.;***** VARIABLE DÉFINITIONS
w_temp EQU 0x70; variable utilisée pour contexte d'économie
status_temp EQU 0x71; variable utilisée pour contexte d'économie
Count1 EQU 0X72 Premier retard pour Counter Loops
Count2 EQU 0X73; le deuxième pour cause de retard Loops;************************************************* *********************
ORG 0x000; reset processeur vectoriel
goto Start; aller au début du programme
;*****
ORG 0x004; vecteur d'interruption emplacement
movwf w_temp; mettre hors cours W enregistrer le contenu
movf STATUS, w; registre d'état de se déplacer registre W
movwf status_temp; mettre hors contenu du registre d'état
movf status_temp, w; récupérer copie du registre d'état
movwf STATUS; restauration pré-isr STATUS register contents
swapf w_temp, f
swapf w_temp, w, restaurer isr W pré-enregistrer le contenu
retfie; retour d'interrompre;*****
Démarrer
clrf PORTA
clrf PORTB
MOVLW B'00000111 '
MOVWF CMCON; Éteignez comparateur
bsf STATUS, RP0; une banque
movlw 0xFF
movwf PORTA, porte d'entrée tous les
movlw 0x00
movwf PORTB; portb toutes les sorties
bcf STATUS, RP0; retour à la banque 0
;*****
movlw b'00000000 »Voir la fiche de préféré
movwf OPTION_REG; paramètres de OPTION_REG
bsf PORTB, 7; Allumez Power LEDbtfss PORTA, 0; Vérifiez si Upper Sensor = 1
Goto pré; Si pas de pré subroutine
bsf PORTB, 6
Goto Run
;*****Pré
bsf PORTB, 5; Allumez Warning LED
bsf PORTB, 4; Allumez Refill LED
bsf PORTB, 3; Activer relais Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
Goto Run; Aller à la Mode de fonctionnementCourirbtfss PORTA, 0; Si Upper Sensor = 0
bsf PORTB, 5; Ensuite, le virage à LED d'alerte
btfsc PORTA, 0; Si Upper Sensor = 1
decfsz Count1, 1; Ne pas Decrement Compteur 1
btfss PORTA, 1; Si Lower Sensor = 0
Recharge appel; Go To Refill SUBROUTINE
btfsc PORTA, 1; Si Lower Sensor = 0
decfsz Count2, 1; Ne pas décrément Counter2
goto RunRefill
bsf PORTB, 4; Allumez Refill LED
bsf PORTB, 3; Allumez Refill Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 3; Désactiver Refill Sous-Circuit
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 4; Éteignez Refill LED
btfsc PORTA, 0; Si Upper Sensor = 1
bcf PORTB, 5; Éteignez Warning LED
bsf PORTB, 6
goto Run;*****
FIN