Sida 1 av 1
Kan inte ställa TRIS på 16f505?
Postat: 1 maj 2011, 13:07:16
av Glacier
Hej!
Jag har programmerat en 16f690 tidigare, men behövde en processor som var snäppet mindre och valet föll på 16f505. Nu är det så att jag inte lyckas ställa TRISC och TRISB i simuleringen. Hur kan det komma sig? Jag använder MPLAB IDE och Pickit 2.
Kod: Markera allt
Initiering
banksel TRISC
movlw b'00000000'
movwf TRISC
banksel TRISB
bcf TRISB,0
banksel PORTC
Resultatet är ständigt lika med b'00111111' i såväl TRISC som TRISB. Jag är inte så bra på att tyda datablad men visst ska de gå att ställa som utgångar?
Här är länk till datablad
Re: Kan inte ställa TRIS på 16f505?
Postat: 1 maj 2011, 14:21:47
av TomasL
5.3 sidan 29 skrev:The TRIS registers are “write-only” and are set (output
drivers disabled)
Samt i samma stycke
The Output Driver Control register is loaded with the
contents of the W register by executing the TRIS f
instruction.
I tabellen på sidan 30 ser du att TRIS registren inte är addresserbara, utan enda sättet är att använda specialfunktionen TRIS
Du kan altså inte använda "movwf" för att ladda TRIS registren utan skall använda "tris"
Detta till skillnad från andra PICar, vilket gör den ickekompatibel med standardkod
Re: Kan inte ställa TRIS på 16f505?
Postat: 1 maj 2011, 14:55:31
av sodjan
Om du inte har en specifik anledning att köra "base line" (t.ex
att spara in ett par extra ören per processor) så är det bättre
att undvika 16F5xx modellerna helt. Använd en 12Fxxx istället.
De har samma arkitektur och är mer kompibla med 16F690.
Om du kollar minnesmapparna i "4.0 MEMORY ORGANIZATION"
i databladet så ser du att TRIS registren (tillsammans med OPTION)
inte finns med, de saknar helt adresser som är tillgängliga för vanlig kod.
Instruktionen "tris" hanterar dessa register.
Kod: Markera allt
movlw b'00000000'
tris PORTC
movlw b'xxxxxxxx'
tris PORTB
> Detta till skillnad från andra PICar, vilket gör den ickekompatibel med standardkod
De ("Base-line") är inte (helt) kompatibla med "Midrage", vad som är "standard" vet jag däremot inte...

Re: Kan inte ställa TRIS på 16f505?
Postat: 1 maj 2011, 19:36:01
av Icecap
Och vill man överbrygga detta problem kan man göra ett spegelregister som man gör jobbet på och sedan kopierar ut mer en tris-instruktion.
Re: Kan inte ställa TRIS på 16f505?
Postat: 4 maj 2011, 19:49:32
av Glacier
Tack för hjälpen, jag väljer att skrota min 16f505 och tar istället en titt på 12Fxxx