Voit vaihtaa PORTB on 16f819

C

coolchip

Guest
Kun minä Vaihda PORTB käyttäen Timer1 ylivuoto keskeyttää En näe LED-kytkentä.Mutta se toimii sakon MPLAB simulointi.
Any ideas?
Jätin jäljellä 7 satamat PORTB auki ja kytketty yksi LED R470 sarjaan.

 
Hei

Voisitteko lähettää se osa koodia, joka tekee työn helpommaksi kaverit, jotka haluavat auttaa sinua ...

 
Luettelo p = 16f819
errorlevel -302
# include <P16F819.INC>

Orgista 00h
goto MAIN

Orgista 04h
goto ISR

ISR
BSF STATUS, RP0
clrf TRISB

biologinen kertymistekijä BCF STATUS, RP0
comf PORTB, 1

Biologinen kertymistekijä BCF PIR1, TMR1IF; lippu unset

TÄRKEIMMISTÄBANKSEL TMR1H
MOVLW 0x80; Esilataa TMR1 rekisteröityä paria
Movwf TMR1H, 1 sekunnin ylivuoto
CLRF TMR1L
MOVLW b'00001111 "Muokkaa ulkoisen kellon 32,768 kHz Xtal
Movwf T1CON, Asynchronous toimintaa, ulkoinen oskillaattori

BANKSEL PIE1
BSF INTCON, 7
BSF INTCON, 6
BSF PIE1, TMR1IE; Ota Timer1 keskeyttää

loppu

, Kiitos!

 
Hei

olet parempi vaihtaa PORTB käytät tätä koodia:BTFSC PORTB, 1
GOTO CLEAR
BSF PORTB, 1
GOTO MAIN
CLEAR:
Biologinen kertymistekijä BCF PORTB, 1
GOTO MAINNäin on parempi kuin vain täydentää vähän, myös sen hyviä käytäntöjä poistaa keskeyttää kun ISR, oletan ...

 
Jos tämä on koko koodia, niin se on joitakin vakavia kysymyksiä:

1.Ei ole tärkein silmukan, koodi tulee suorittaa kerran ja sitten läpi koko ohjelman muistiin tekemättä mitään, ja aloittaa alusta, menee uudelleen läpi initializations.Joten sinun on GOTO-ohje lopussa todellinen koodin, jotta voit mennä minne haluat (odottavat silmukan seuraavan TMR1 keskeyttää, esimerkiksi).
2.ISR ei pääty RETFIE.Tämä on ohje, että tulee näkyviin PC pinosta ja palaa säädintä pääohjelmaan oikealla tavalla.
3.Sinun ei tarvitse tallentaa W eikä tilan rekisteriin heti ISR merkintä.(Tämä ei voi olla ongelma tämän yksinkertaisen koodin).Nen retfie, palauttaa rekisterit W ja Tila.Katso osio keskeyttää ja miten nämä asiat.
4.En ymmärrä, miksi selvää TRISB on ISR.Tämän pitäisi olla osa intialization, ennen kuin annat tärkeimmät silmukka.
5.Ajastin on uudelleen alustaa sen jälkeen jokaisen ylivuoto, saadakseen saman aikakatkaisu joka kerta.Paras paikka siihen on ISR, koska se tehdään hyvin pian sen jälkeen, kun ajastin tulvillaan (muutama ohje kierrosta myöhemmin liittyvät ohjeet ISR, jotka ovat tarpeen ennen kuin voit itse ladata ajastin, kuten yhteydessä säästäminen ja lastaus W oikean ajastin Reload arvo).
6.TMR1 on syrjäinen, joten sinun on myös mahdollista reuna katkaisee on myös asettamalla vähän PEIE vuonna INTCON.Lisäksi sinun asettaa GIE, jotta kaikki keskeyttää.

Tämä ei ole tarkoitettu kritiikkiä, vaan opas.

 
Hei VVV

Sinä taidat olla mies, mukava kommentteja teoissa, ja mitä olen nähnyt, kiitos paljon!

 
Thanks VVV teidän arvokkaasta kommentteja.
Lähetä enemmän PIC edustajakokouksessa, me kaikki oppisivat paljon viesteihisi.

 
coolchip kirjoitti:

Luettelo p = 16f819

errorlevel -302

# include <P16F819.INC>Orgista 00h

goto MAINOrgista 04h

goto ISRISR

BSF STATUS, RP0

clrf TRISBbiologinen kertymistekijä BCF STATUS, RP0

comf PORTB, 1Biologinen kertymistekijä BCF PIR1, TMR1IF; lippu unsetTÄRKEIMMISTÄBANKSEL TMR1H

MOVLW 0x80; Esilataa TMR1 rekisteröityä paria

Movwf TMR1H, 1 sekunnin ylivuoto

CLRF TMR1L

MOVLW b'00001111 "Muokkaa ulkoisen kellon 32,768 kHz Xtal

Movwf T1CON, Asynchronous toimintaa, ulkoinen oskillaattoriBANKSEL PIE1

BSF INTCON, 7

BSF INTCON, 6

BSF PIE1, TMR1IE; Ota Timer1 keskeyttääloppu, Kiitos!
 

Welcome to EDABoard.com

Sponsor

Back
Top