Étape 5: PIC 12F508 annoté code source ; Si quelqu'un a un problème de montage tel qu’affiché, s’il vous plaît commentaire
liste p = 12F508 ; directive de la liste pour définir le processeur
#include ; définitions de variables spécifiques processeur
__CONFIG _MCLRE_OFF & _CP_ON & _WDT_OFF & _IntRC_OSC
; Directive « __CONFIG » est utilisé pour intégrer le mot de configuration dans le fichier .asm.
; Suite à la directive sur l’aide des étiquettes sont trouvent dans le fichier .inc respectifs.
; Voir la fiche respectifs pour plus d’informations sur le mot de configuration.
; *** DÉFINITIONS VARIABLES
cblock 07h
qw1
qw2
Temp
test
compteur
counter2
on_counter
off_counter
ENDC
; BROCHAGE
; la broche 1 est puissance
; Broche 8 est au sol
; broche 5 n’est pas connecté
broche 4, au bouton bouton equ 3 ; pullup interne a la valeur
sortie equ 4; broche 3, à la P-FET ; Il n’y a aucun pullup interne sur cette broche.
Je devrais ont mis une pullup physique sur la porte P-FET,
; dans le cas où le commandant de bord ont été à une baisse de tension ou sinon de mal fonctionner.
Equ LED 1; broche 6, Salut = marche, Lo = off
LBI equ 5; insérer ici le code pin 2, sortie indicateur batterie faible de la LT1308.
Si vous affectez les résistances de polarisation K 825 et 67K
; le point de consigne est 2.9V. Voir la fiche technique de LT1308 pour les détails.
; Cette broche n’a également pas une pullup interne. J’ai n’oubliez pas de mettre cela sur le circuit imprimé. :)
;**********************************************************************
ORG 0X3FF ; processeur vectoriel de réinitialisation
; Valeur d’étalonnage RC interne est placé à l’emplacement 0x3FF par Microchip
; comme un movlw k, où k est une valeur littérale.
ORG 0X000 ; codage commence ici
movwf OSCCAL ; mise à jour de Registre avec la valeur d’usine cal
initialiser
movlw b "00000000"
; 7:lo_enable réveil ; 6:lo_enable faibles tractions ; 5:lo_timer source d’horloge est interne
; 4:hi_timer source d’horloge activé sur front descendant ; 3:lo_prescaler sélectionnez timer (vs WDT)
2-0:prescaler (p22)
option
début
appel clair ; tristate set et sortie des broches d’e/s par défaut/arrêt État
btfss GPIO, bouton ; vérifier l’état du bouton
Goto sur ; si pressé, goto
sommeil ; sinon, goto sommeil
NOP
Sur
BSF GPIO, LED, LED s’allume
BCF GPIO, sortie ; allumer P-FET
composez le JJ ; retard Debounce
btfss GPIO, bouton ; vérifier l’état du bouton
GoTo $-1; attendez sa sortie avant de poursuivre vers la boucle principale
composez le DD
boucle
btfss GPIO, LBI ; ce vérifie l’indicateur de batterie faible
Goto LB_shutdown ; si tiré vers le bas, puis goto arrêt de batterie faible
btfsc GPIO, bouton ; tant que la touche n’est pas pressée, le commandant de bord reste dans la « boucle ».
Goto boucle
Shutdown ; si le bouton est enfoncé, tout s’éteint et le commandant de bord se met en veille.
; Ce dispositif commence au début du code quand il se réveille, FYI
Appelez claire ;
composez le DD
btfss GPIO, bouton
GoTo $-1
composez le DD
sommeil
NOP
; Subroutines;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
claire
movlw b « 101000 »
Tris GPIO
movlw b « 010000 »
movwf GPIO
retour ; ce dispositif n’en fait pas une commande « retour ».
; Il s’agit d’une Pseudo-commande, qui est effectivement Assemblée comme le "retlw 0" commande.
; Qui signifie juste qu’il place les littéral 0 dans l’accumulateur W quand il saute.
DD
movlw.100
movwf qw2
Goto dsub.2
DSUB.2
decfsz qw1
GoTo $-1
decfsz qw2
Goto $-3
retour
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LB_shutdown ; Il s’agit de la séquence d’arrêt fantaisie-Jeans/Pantalons
LB.1
CLRF compteur
LB.2
btfss GPIO, LBI
Goto LB.3
BSF GPIO, LED
Goto boucle
LB.3
GoTo $+ 1 ; juste quelques retard supplémentaire
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
decfsz compteur, f
Goto $+ 2
Goto shutdown_kewl
movf compteur, w
movwf qw2
movlw b « 000010 »
xorwf GPIO, f
appel de DLB
movwf temp
decfsz f temp,
Goto LB.2
arrêt de Goto
DLB ; Routine batterie faible retard
btfss GPIO, bouton ; constamment vérifier l’état du bouton
retlw.1 ; si elle est enfoncée, puis immédiatement pop avec.1 littéral dans l’accumulateur,
; donc, nous savons que le bouton
; a été pressé et le retard a été sorti dès le début... donc nous pouvons désactiver
; la puissance plutôt que de continuer la fantaisie pantalon léger blinky, arrêtez de routine.
GoTo $+ 1
decfsz qw1
Goto DLB
decfsz qw2
Goto DLB
retlw.0
shutdown_kewl ; fondu de la LED, plutôt que simplement de l’éteindre
CLRF on_counter
movlw 1.
movwf off_counter
shutdown_kewl.1
BSF GPIO, LED
appel on_delay
BCF GPIO, LED
appel off_delay
RIFC off_counter, f
decfsz on_counter, f
Goto shutdown_kewl.1
arrêt de Goto
on_delay
movf on_counter, w
movwf qw2
Goto fondu
off_delay
movf off_counter, w
movwf qw2
Goto fondu
se fanent
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
GoTo $+ 1
decfsz qw2, f
Goto fondu
retour
FIN ; directive « fin de programme »