RB4: RB7

M

metaal

Guest
Hallo Guys

Ik wil gebruik Interrupt-op-verandering kenmerk van PortB.PortB pullups zullen alle ingeschakeld, een schakelaar is verbonden met elk van RB4: RB7.Nu het probleem, hoe kan ik diffrentiate die schakelaar is ingedrukt, een briljante ideeën alstublieft, ik gebruik PICBasic Pro.

RB0 Interrupt als hoofdbrandblusleidingen synchronisatie voor triacs
RB4 als de aan / uit-schakelaar.
RB5 als snelheid selecteren schakelaar.
RB6 als timer interval selecteren.
RB7 als "On My Mind" voorkomt.

Hoe kan ik ervoor zorgen dat de timer op dezelfde PIC ook, is het een goed idee om gebruik Timer1 overflow onderbreken.Bedankt

 
U kunt de portb in een levensvatbaar zijn, dan wanneer de ISR start, net vergelijken de oude staten breken de nieuwe en je gaat om te weten welke pin veranderen.Ik kan u niet helpen in timer1 omdat ik nooit gebruiken pic basic.

 
Hallo

Werkt het als ik vier IF verklaringen te vergelijken met de waarden van de RB4: RB7 en branche tot een specifieke routine.

 
Hallo

Waarom kies geval beter is dan meerdere IF statements?

Ik vroeg me af, als de inerrupt-op-verandering is ingeschakeld, en de inbreng waarden RB4: RB7 zijn veranderd, bijvoorbeeld de pull-ups zijn ingeschakeld, dus als de PIC begint te werken zijn al degenen die zich PortB en schakelaars zijn aangesloten tot de grond, als ik duw de Swith op RB4, zodat de schakelaar verbindt RB4 op de grond, en verwijder ik mijn vinger zodat de waarde weer op een cuz van het pull-ups, is de waarde vergrendeld op RB4 wordt nul in plaats van een.Wat doet microchip betekent zeggen de interrupt-op-verandering kan worden beëindigd wanneer PortB gelezen?

Ik echt niet kunnen begrijpen wat er werkelijk gebeurt hier, in de interrupt-on-verandering, kan een alstublieft uitleggen thotoughly.

Thanx

 
Je moet je lezen PortB vóór de ingang is vergrendeld.De input vergrendeld wordt vergeleken met de werkelijke invoer en eventuele mismatch veroorzaakt een onderbreking van de verandering.

Helaas, een BCF of BSF voor een pin op PortB zullen lezen PortB vervolgens duidelijk of de pin.In het algemeen moet ik doen als er iets met PortB tijdens het gebruik van onderbreken van de verandering, controleer ik de status van de haven en het vergelijken met een register waarin de "laatste waarde" en zorgen voor veranderingen handmatig.Anders, interrupt zal doen.

In uw voorbeeld, je zou een onderbreken wanneer u op RB4.Meestal wordt de stappen in de interrupt routine zijn: (1) Lees PortB (dit hang de waarde), (2) Maak uw pennen door vergelijking met een "oldPortB" register (3) opslaan "oldPortB", (4) duidelijk de RBIF vlag.Dus nu RB4 is vergrendeld nul en oldPortB, 4 gelijk is aan nul.Dan zou je een interrupt wanneer u de schakelaar ook.

Ik gebruik geen PicBasic en weet niet waarom "geval van" beter is.Ik neem de compiler genereert meer efficiënte code met behulp van "geval van".

 
Hallo

Bedankt voor het leuke antwoord,
met betrekking tot de schakelaar debouncing, is het mogelijk dat op het moment lees ik PortB naar een ander register zoals u zei, terwijl de schakelaar wordt ingedrukt, dat haar bouncen en een nul wordt gelezen.

Ik denk dat ik zal afzien van het gebruik van interrupt-op-verandering en het gebruik knop commando.

Je hebt goede ogen jonw0224, dank je.

 

Welcome to EDABoard.com

Sponsor

Back
Top