21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Lösta programexempel med PIC16F628<br />

RB-Interrupt. Interrupt on change RB7,<br />

RB6, RB5, RB4 -pinnarna<br />

Fyra av PORTB's pinnar har den speciella egenskapen att de kan generera interrupt så<br />

fort någon förändring inträffar. Denna funktion är främst tänkt för avkodning av<br />

tangentbord eller för avläsning av datormöss. Det passar också utmärkt för avkodning<br />

av pulsgivare ( se avläsning av pulsgivare ). Man bör inte göra något annat med<br />

PORTB om man valt denna funktion, därför har vi kopplat lysdioden till PORTA i<br />

stället.<br />

( Grundinställningen för PORTA's pinnar är som komparatoringångar. Detta kopplar<br />

man bort med kommandot: CM0=1; CM1=1; CM2=1; ).<br />

Inkoppling av pulsgivarkontakterna<br />

När man kopplar in kontakter till portpinnar behöver man i allmänhet sk. "pullup"-<br />

motstånd. En sluten kontakten kan ge "0"-nivån, men när kontakten är öppen blir<br />

nivån obestämd utan pullup. PIC-processorerna har inbyggda "pullup"-motstånd som<br />

kopplas in med kommandot<br />

OPTION.7 = 0; /* internal pullup resistors is on */.<br />

I figuren fins två 1k serie-resistorer som behövs för att "isolera" pulsgivaren från<br />

kretsprogrammeraren. Vid krets<strong>programmering</strong> används ju pinnarna RB6 och RB7<br />

( om vi inte hade haft behov av att omprogrammera PIC-kretsen hade dessa pinnar<br />

varit helt lediga och serieresistorerna onödiga ).<br />

En lysdiod på portpinne RA2 ska lysa varje gång pulsgivaren står i 0-läget.<br />

Programmet kan kontrolleras genom att man vrider pulsgivaren lika många steg<br />

framåt som bakåt och ger akt på att lysdioden tänds i 0-läget. Eftersom programmet<br />

utnyttjar "interrupt on change" är det inte troligt att processorn "tappar bort"<br />

räkneläget hur snabbt man än roterar pulsgivaren! Pröva!<br />

16

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!