Interrompre une interruption dans PIC16F877

K

kichapi

Guest
Comment faire pour interrompre configer fonction? J'ai utilisé 16F877A pic et comment calculer TMR0?S'il vous plaît aidez-moi?

 
Salut,

Il pourrait être très utile de connaître le compilateur, vous utilisez.

La théorie est.

(feuille de données que vous pouvez trouver x adresse du registre et la valeur)
-Permettre d'interruption globale
-Enable interruption sur timer 0 overflow
mai aussi vous devez configurer le timer (horloge, 8 ou 16 bits, la division de l'horloge)

Pour exécuter interrompre fonction, vous devez ajouter le nom d'interruption (le compilateur utilisez-vous) et sous lequel vous pouvez ajouter des fonctions à exécuter.Exemple # TIMER0_INT

 
Salut kichapi,
Ici, je poste un exemple d'utilisation TMR0 interrupt:
[Code écrit dans Microchip ASM]

Code:

List p = 16F877A

__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _LVP_OFF & _CPD_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC# INCLUDE <P16F877A.INC>CBLOCK 0x20

COUNT, pcount

ENDCORG 0x00

GOTO MAINORG 0x04; vecteur d'interruption

GOTO ISR; Interrupt Service Routine

;================================================Recherche internationale

INCF COUNT; AUGMENTATION DU NOMBRE DES MATIÈRES

MOVF COUNT, W, CHEF DE DÉMÉNAGEMENT W

BTFSC STATUS, Z; vérifiez si COUNT = 0

; COUNT = 0, lorsque AUGMENTATIONS DE COMTE ET TROP-PLEIN AU RETOURNEMENT

; De 255 à 0

INCF pcount: tout débordement de COUNT, AUGMENTATION DES MATIÈRES

; DES pcount

MOVF pcount, W; SOMMAIRE DES pcount MOVE TO W

Movwf PORTB; SOMMAIRE DU MOVE W à PORTB

BANKSEL INTCON; Bank0

BCF INTCON, TMR0IF, Clear Interrupt Flag

Retfie

;================================================PRINCIPAL

BSF COUNT, 1; count = 1

Clrf CCP1CON; CCP OFF

BANKSEL TRISB; Bank1

Clrf TRISB; toutes les sorties

MOVLW ,7

Movwf CMCON; COMPARATEUR OFF

Movwf ADCON1; ADC OFF

MOVLW 0x82

Movwf OPTION_REG; PORTB PULL-UP OFF, PRESCALER-1:8

BANKSEL INTCON; Bank2

MOVLW 0xA0

Movwf INTCON; interruption globale et TMR0 interrompre permis

Clrf PORTB; PORTB CLEAR

BANKSEL TMR0; Bank0

Clrf TMR0; RESTART TMR0

GOTO $; ATTENDRE POUR INTERROMPRE

FIN

;================================================= =
 

Welcome to EDABoard.com

Sponsor

Back
Top