keskeyttää kanssa pic16f876a

C

CEstudent

Guest
hello guyz miten ru kaikille?

i-kirjain kaivata ur auttaa tämän ongelman kanssa, olen käyttämällä ulkoista keskeyttää ja pic16f876a

koska tiedän, että sen jälkeen, kun keskeyttää päättynyt sen pitäisi palata samaan paikkaan sen tapahtunut mutta minun koodi En halua palata takaisin samaan paikkaan haluaisin mennä toiseen paikkaan.

niin i testattu minun koodi i toimii mutta keskeyttää tapahtunut vain kerran! Kun i teho enintään virtapiiriin niin missä on ongelma?i hyväksyi keskeyttää lippu mutta vielä on ongelma
Code:
; / / keskeytä-koodi;///////////////////////////////

TMR0 EQU 1

PORTA EQU 5

PORTB EQU 6

PORTC EQU 7

TRISA EQU 5

TRISB EQU 6

PORTC EQU 7

TRISC EQU 7

PC EQU 2

Tila EQU 3

ZEROBIT EQU 2

Kuljetettava EQU 0

EEADR EQU 0DH

EEDATA EQU 0CH

EECON1 EQU 0CHEECON2 EQU 0DH

ADCON1 EQU 1FH

RD EQU 0

WR EQU 1

Wren EQU 2

ADCON0 EQU 1FH

ADCON1 EQU 1FH

OSOITE EQU 1EH

CHS0 EQU 3

GODONE EQU 2

INTCON EQU 0BH

OPTION_R EQU 1

GIE EQU 7, maailmanlaajuinen Interrupt bittinen

Integraatio EQU 4; B0 keskeyttää mahdollistaa bit.

INTF EQU 1; B0 keskeyttää lippu

COUNT EQU 24H; tarkoittaa count on tiedosto 0C.

; rekisterissä count tapahtumia.

TMR0_T EQU 20H; TMR0 tilapäinen tiedosto

W_TEMP EQU 21H; W tilapäinen tiedosto

STATUS_T EQU 22h; Tila tilapäinen tiedosto

PORTB_T EQU 23h; PORTB tilapäinen tiedosto

COUNT_T EQU 25H

;******************************************LUETTELO P = 16F876A

Org 0

Goto START

Org 4

Goto ISR; location4 siirtyy ISR;************************************************; SUBROUTINE JAKSO; Viive 1 SEK

DELAY CLRF TMR0

MOVLW ,61

MOVWF COUNT

BCF STATUS, 5

WAITA BCF INTCON, 2

WAITB BTFSS INTCON, 2

Goto WAITB

DECFSZ COUNT, 1

Goto WAITA

RETURN

RETLW 0

; Interrupt Service RutiininomaisestiISR

MOVWF W_TEMP; Tallenna W

MOVF Tila, W

MOVWF STATUS_T; Tallenna Tila

MOVF TMR0, W

MOVWF TMR0_T; tallentaa TMR0

MOVF COUNT, W

MOVWF COUNT_T; tallentaa PORTBBSF PORTC, 7

CALL DELAY

CALL DELAY

CALL DELAY

CALL DELAY

CALL DELAY

BCF PORTC, 7BCF INTCON, INTF; Nollaa Interrupt Flag

COMP MOVF STATUS_T, W

MOVWF Tila; Palauta Status

MOVF TMR0_T, W

MOVWF TMR0; Palauta TMR0

MOVF COUNT_T, W

MOVWF COUNT; Palauta PORTB

MOVF W_TEMP, W; Palauta W
Goto ss; Paluu keskeytyspyyntölinjan;************************************************* *************; KONFIGUROINTI JAKSOSTART BCF STATUS, 5; BANK0

BCF STATUS, 6CLRF PORTA

CLRF PORTB

CLRF PORTCBSF STATUS, 5; BANK1MOVLW 0X06

MOVWF ADCON1MOVLW B'00011111 "; PORTA ovat I / P

MOVWF TRISA

MOVLW B'00000001 "; B0 on syöte, B1-7 O / P

MOVWF TRISBMOVLW B'00000000 "

MOVWF TRISCMOVLW B'01000101 "; Prescalar on / 64

MOVWF OPTION_R

BCF STATUS, 5CLRF PORTA; Tyhjentää Porta.

CLRF PORTB; Tyhjentää PortB.

BSF INTCON, GIE; Ota Global Keskeytä

BSF INTCON, integraatio; Ota B0 keskeyttää

;************************************************* **********; käynnistyy nytBEGIN BSF PORTC, 7

CALL DELAY

BCF PORTC, 7

CALL DELAYGoto BEGINss

BSF PORTC, 1

CALL DELAY

CALL DELAY

CALL DELAY

BCF PORTC, 1

Goto BEGIN

END
 
Hei.

Jos haluat tallentaa aseman you cant tallentaa kuten teit, koska movf vaihtaa lipun z TIEDONANTO Tila.Tallenna asema sinun tehdä tämän seuraavasti:

SWAPF Tila, W
MOVWF STATUS_T

ja lopussa, interrupte rutiini:

SWAPF STATUS_T, W
MOVWF Tila.

i dont tiedä, onko tämä ongelma, mutta varmista, jos olet työskennellyt oikea pankki.
Muuten, mitä tarkoitusta varten on perustettu ohjelma ???????

 
hei pyyhekumi

Tämä koodi on vain testi, onko keskeyttää toimii hyvin tai ei käytä sitä projektin koodi

minun ongelmani on se, että käytän goto sijasta RETFIE koska i dont halua sitä paluuta samassa paikassa

ja asia i'v lisäsi se, että i asettaa GIE

BSF INTCON, GIE; Ota Global Keskeytä

ja edelleen keskeyttää ei tapahdu vain kerran!

 
Miksi te dont halua palata samaan paikkaan ????, i dont understand that.

Uskon, että yksi keskeytys on on RETFIE lopussa, mutta en ole varma.
Goto to 877A tekninen, instructuion asettaa yhteenveto, katso REFTFIE instruction.
Ystäväni kertoi minulle, hän oli sama ongelma, koska hän
didnt käyttää retfie.

Kokeile asettaa retfie vuonna koodisi ja nähdä tuloksia.

 
Hei,
Yksi tapa tehdä on POP pois nykyisen osoitteen pinon sitten PUSH että uusi osoite haluat siirtyä ja sitten toteuttaa RETI.Jos et toteuttaa RETI, teidän pinon tulee ylivuoto_Oletan, että pitäisi olla mahdollista tehdä PIC.

Terveisin,
Laktronics

No, koska se näyttää PIC ei tue manipuloinnin Stack sisältö kuin 8051, ja näin, et voi muuttaa palautusosoite jälkeen keskeyttää.

Terveisin,
Laktronics.

 

Welcome to EDABoard.com

Sponsor

Back
Top