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