PDA

View Full Version : Tris Register use.



tsanders
- 24th October 2006, 15:20
I am new to the forum and trying to interface a 16F877 to a GE 90-30 PLC with Shiftin/out. My first question as I start this, is this. I have read in the past in the data sheet I think that to be compatible with future versions of the PIC that we are not supposed to use the Tris command. Could someone verify this for me and tell me what I am supposed to do in its place. Sorry about the previous post to the FAQ, this is my firs post.

tsanders
- 24th October 2006, 16:06
It reads, Note: To maintain upward compatibility with future PIC16F87XA products, do not use the OPTION and TRIS instructions. So the question, what do I use in place of the TRIS instruction?

paul borgmeier
- 24th October 2006, 16:18
The TRIS Command in question is an assembly level command and not a PBP command.

With the 877, if you write “TRISA=7”, for example, you are not using the TRIS command but loading the TRISA register directly. PBP takes care of all these issue for you so no worries.

ASM Equivalent of what TRISA=7 does
MOVLW 007h
MOVWF TRISA

ASM Equivalent using TRIS command - PBP does not do this (and this may not be supported on the 877?)
MOVLW 007h
TRIS PORTA

tsanders
- 24th October 2006, 16:21
Thanks for clearing that up for me!!

sayzer
- 24th October 2006, 16:37
I did not hear that and can not confirm.

But, since we are in PBP forum, you can use INPUT and/or OUTPUT commands to do what TRIS does.

Example:

TRISA.1 = 1
'make PORTA.1 an input pin.

same as

INPUT PORTA.1
'Make PORTA.1 an input pin.


or

TRISE.2 = 0
'Make PORTE.2 an output pin.

same as

OUTPUT PORTE.2
'Make PORTE.2 an output pin.



-------------------------------------

paul borgmeier
- 24th October 2006, 17:28
(and this may not be supported on the 877?)
Just for completeness, it appears the TRIS assembly command works on the 16F877 for PORTS A,B, and C, but not PORTS D or E.

Thr following works but gives warning "Use of this instruction is not recommended"


ASM
movlw 0x07
TRIS PORTA
ENDASM

and this

ASM
movlw 0x07
TRIS PORTD
ENDASM
gives errors.

ErnieM
- 24th October 2006, 18:44
From PIC16F87X Data Sheet DS30292C-page 135, section 13.0 INSTRUCTION SET SUMMARY


Note: To maintain upward compatibility with
future PIC16F87X products, do not use the
OPTION and TRIS instructions.


Patient: Doctor, it hurts when I do this.

Doctor: Then don’t do that!

TRISA= {value}
TRISB= {value}
TRISC= {value}
TRISD= {value}
TRISE= {value}

Are all valid PBP statements and may/should be used to set TRIS directly (as they will take care of any required bank setting, ect).

mister_e
- 25th October 2006, 15:12
if you really want to use ASM in PBP, and don't want to look where TRIS or else register is located...


asm
CHK?RP TRISA ; PBP BANK switching macro
movlw d'7'
movwf TRISA
endasm