16F84A skall ha koll på tid
Tjenare!
Tack för alla tips & svar. Nu har jag kommit en bra bit påväg och är övertygad om att det kommer att fungera tillslut.
Jag har nu sprungit in i ett annat problem som jag skulle vilja ha hjälp med från en vänlig själ.
Jag har ett tal under 10 som jag vill få ut PORTB. Därifrån går det sedan 4 sladdar till en 4511 och vidare ut på en 4x7 segments LED.
Problemet jag har är att jag vill bara skriva talet på ben 0-3 på PORTB. Jag driver nämligen transistorer på ben 4-7 på PORTB vilken LED som skall visa siffran.
Som jag skrivit nu så verkar det som att talet snor alla 8 utgångsbenen på PORTB och transistorerna dras därför inte.
PORTB = digit1 ; skickar ut talet till porten, snor den hela porten?
PORTB.7 = 1 ; detta funkar inte, transistorn drar inte
pause 500
PORTB.7 = 0
osv för de olika LED:arna
Hur skall jag skriva i PicBasic för att detta skall funka?
Skulle bli jättetacksam för lite hjälp =)
Tack för alla tips & svar. Nu har jag kommit en bra bit påväg och är övertygad om att det kommer att fungera tillslut.
Jag har nu sprungit in i ett annat problem som jag skulle vilja ha hjälp med från en vänlig själ.
Jag har ett tal under 10 som jag vill få ut PORTB. Därifrån går det sedan 4 sladdar till en 4511 och vidare ut på en 4x7 segments LED.
Problemet jag har är att jag vill bara skriva talet på ben 0-3 på PORTB. Jag driver nämligen transistorer på ben 4-7 på PORTB vilken LED som skall visa siffran.
Som jag skrivit nu så verkar det som att talet snor alla 8 utgångsbenen på PORTB och transistorerna dras därför inte.
PORTB = digit1 ; skickar ut talet till porten, snor den hela porten?
PORTB.7 = 1 ; detta funkar inte, transistorn drar inte
pause 500
PORTB.7 = 0
osv för de olika LED:arna
Hur skall jag skriva i PicBasic för att detta skall funka?
Skulle bli jättetacksam för lite hjälp =)
Alla "tal" är 8 bitars binära tal (normalt)
När man skriver till en port, skrivs alltid alla 8 bitar.
> PORTB = digit1
Om digit1 = 10 (decimalt antar jag), så kommer PORTB att blir 00001010 oavsett vad det var tidigare.
> PORTB.7 = 1 ; detta funkar inte, transistorn drar inte
Har du något instrument som du kan kolla om du får "hög" på RB7 ?
Att transistorn inte "drar", behöver inte betyda att kommandot i sig inte fungerar...
Om du enbart vill skriva till några bitar i porten, får du först läsa porten och sedan med lite logiska operationer ändra vissa bitar för att sedan skriva tillbaka resultatet. Låter krångligare än vad det är...
Man måste även se till att inte något interrupt kan gå in emellan och ställa till det, men om du inte använder interrupt så är det inget problem.
När man skriver till en port, skrivs alltid alla 8 bitar.
> PORTB = digit1
Om digit1 = 10 (decimalt antar jag), så kommer PORTB att blir 00001010 oavsett vad det var tidigare.
> PORTB.7 = 1 ; detta funkar inte, transistorn drar inte
Har du något instrument som du kan kolla om du får "hög" på RB7 ?
Att transistorn inte "drar", behöver inte betyda att kommandot i sig inte fungerar...

Om du enbart vill skriva till några bitar i porten, får du först läsa porten och sedan med lite logiska operationer ändra vissa bitar för att sedan skriva tillbaka resultatet. Låter krångligare än vad det är...

Man måste även se till att inte något interrupt kan gå in emellan och ställa till det, men om du inte använder interrupt så är det inget problem.
Jag har aldrig använt PicBasic, men från dina exempel skulle jag tänka mig att något som det här skulle kunna fungera :
anyvar = PORTB & $F0 ; läs port B och sätt bit 0-3 = 0.
anyvar = anyvar <or> digit1 ; Jag vet inte vilket tecken som är "or" i PicBasic. Sätt anyvar bit 0-3 enligt digit1.
PORTB = anyvar ; Skriv till sist tillbaka anyvar till PORTB.
Alltså, det gäller att se till att "bevara" värdet av bit 4-7.
anyvar = PORTB & $F0 ; läs port B och sätt bit 0-3 = 0.
anyvar = anyvar <or> digit1 ; Jag vet inte vilket tecken som är "or" i PicBasic. Sätt anyvar bit 0-3 enligt digit1.
PORTB = anyvar ; Skriv till sist tillbaka anyvar till PORTB.
Alltså, det gäller att se till att "bevara" värdet av bit 4-7.
Tjena!
Det börjar lösa sig. Hitiils funkar 16F84A och PicBasic alldeles utmärkt för er som tvekar.
Jag fick ett tips tidigt om att mäta pulserna med PULSIN vilket var ett mycket bra tips. (Tackar så mycket Forsgren). Det passar perfekt för den sorts pulser som brytarspetsen ger ifrån sig.
Nästa problem att bara skriva 4 bitar till en port, löste jag genom att helt enkelt skriva till PORTA istället som bara har 4 bitar. Det är lätt å köra fast ibland.
Det börjar lösa sig. Hitiils funkar 16F84A och PicBasic alldeles utmärkt för er som tvekar.
Jag fick ett tips tidigt om att mäta pulserna med PULSIN vilket var ett mycket bra tips. (Tackar så mycket Forsgren). Det passar perfekt för den sorts pulser som brytarspetsen ger ifrån sig.
Nästa problem att bara skriva 4 bitar till en port, löste jag genom att helt enkelt skriva till PORTA istället som bara har 4 bitar. Det är lätt å köra fast ibland.