Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
ASM: Hello World avec Timer0 en mode 8bits sur 18F258
- F6FCO

Expert- Messages : 2846
- Âge : 99
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
Hello World sur B1.
Code : Tout sélectionner
;**********************************************************************
;
; Led clignotante avecr TIMER0
;
;
;**********************************************************************
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=18f258 ; processeur utilisé
#include <p18f258.inc> ; Définitions des constantes PIC
CONFIG OSC = XT
CONFIG OSCS=OFF
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG BORV = 45
CONFIG WDT = OFF
CONFIG WDTPS = 1
CONFIG STVR = OFF
CONFIG LVP = OFF
CONFIG DEBUG = ON
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
MasqueIntcon EQU H'00A0' ; réglage interruptions Timer0
#DEFINE LED PORTB,1
CBLOCK 0x00C
w_temp :1 ; Sauvegarde du registre W
status_temp : 1 ; Sauvegarde du registre STATUS
cmpt : 1
ENDC
org 0x000 ; Adresse de départ après reset
bra init ; Adresse 0: initialiser
; ------------------------ Routines Interruptions
;sauvegarder registres
org 0x008 ; adresse d'interruption
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
; Interrupt TIMER0
btfsc INTCON,TMR0IE ; tester si interrupt timer autorisée
btfss INTCON,TMR0IF ; oui, tester si interrupt timer en cours
bra restorereg
call inttimer ; oui, traiter interrupt timer
bcf INTCON,TMR0IF ; effacer flag interrupt timer
;restaurer registres
restorereg
swapf status_temp,w ; swap ancien status, résultat dans w
movwf STATUS ; restaurer status
swapf w_temp,f ; Inversion L et H de l'ancien W
; sans modifier Z
swapf w_temp,w ; Réinversion de L et H dans W
; W restauré sans modifier status
retfie ; return from interrupt
; Routine d'interruption TIMER 0
inttimer
decfsz cmpt,f ; décrémenter compteur de passages
return ; pas 0, on ne fait rien
movlw b'00000010' ; sélectionner bit à inverser
xorwf PORTB , f ; inverser LED
movlw d'7' ; on recommence à décompter
movwf cmpt
return ; fin d'interruption timer
; ------------------------ Init
init
clrf PORTA
clrf PORTB
clrf EEADR ; diminue la consommation
movlw h'C7' ; Timer0 interne avec prescaler 256
movwf T0CON
movlw 0Fh
movwf ADCON1 ; mode digital
movlw b'00000000'
movwf TRISA
movwf TRISB
movlw MasqueIntcon ; masque interruption
movwf INTCON ; charger interrupt control
movlw d'7'
movwf cmpt
; -----------------------------------
main
nop
nop
bra main ; boucler
END
Retourner vers « Recueil de mini programmes »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité
