Kan inte ställa TRIS på 16f505?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Glacier
Inlägg: 2
Blev medlem: 28 januari 2011, 22:40:03

Kan inte ställa TRIS på 16f505?

Inlägg 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
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46998
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Kan inte ställa TRIS på 16f505?

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan inte ställa TRIS på 16f505?

Inlägg 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... :-)
Användarvisningsbild
Icecap
Inlägg: 26654
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Kan inte ställa TRIS på 16f505?

Inlägg 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.
Glacier
Inlägg: 2
Blev medlem: 28 januari 2011, 22:40:03

Re: Kan inte ställa TRIS på 16f505?

Inlägg av Glacier »

Tack för hjälpen, jag väljer att skrota min 16f505 och tar istället en titt på 12Fxxx
Skriv svar