Vai al contenuto
PLC Forum


Bsf Portb,0 Perchè Non Va?


Doohan

Messaggi consigliati

Ciao, ho un problemino con un "nuovo" pic....

Sono i primi tentativi con un PIC16F886, qualcosa non mi torna!! sad.gif

	PROCESSOR	16F886
	RADIX  DEC
	INCLUDE  "P16F886.INC"
;	ERRORLEVEL	-202
;	ERRORLEVEL	-203
;	ERRORLEVEL	-207
;	ERRORLEVEL	-302


	__config	_CONFIG1,0010001111100100B
	__config	_CONFIG2,0011111111111111B


;-------------------------------- REGISTRI SU BANCO 0 --------------------------------

Count0  equ	20h;riservato per delay software
Count1  equ	21h;riservato per delay software
LCDTemp  equ	22h;...
AUX  equ	23h;...


;-------------------------------------------------------------------------------------

	ORG     00h	;Punto di inizio del programma al reset della CPU
	goto	Start

;------------------------------------- INTERRUPTS ------------------------------------

	ORG     04h
	nop
	retfie

;----------------------------------- FINE INTERRUPTS ----------------------------------


;----------------------------- INIZIO PROGRAMMA AL RESET ------------------------------

Start

	bsf	STATUS,RP0;Seleziona Banco 1

	bsf	OSCCON,6
	bsf	OSCCON,5;Oscillatore a 4MHz
	bcf	OSCCON,4

	movlw	B'00000000';Prescaler che divide di 2 volte il clock su Fosc/4, destinazione Timer0, Pull-up abilitati su PortA
	movwf	OPTION_REG


;-------------------------------- DEFINIZIONE PIN I\O ---------------------------------

;PORTA

	movlw	B'00000000'
	movwf	TRISA

;PORTB

	movlw	B'00000000'
	movwf	TRISB

;PORTC
	movlw	B'00001000'
	movwf	TRISC

;PORTE
	movlw	B'00000000'
	movwf	TRISE


	bsf	STATUS,RP1
	bcf	STATUS,RP1;Seleziona Banco 1



;-------------------------------- PROGRAMMA PRINCIPALE ---------------------------------

	bcf	STATUS,RP0;Seleziona Banco 0

	clrf	PORTA
	clrf	PORTB
	clrf	PORTC
	clrf	PORTE
	clrf	AUX

	bsf	PORTB,0
	bsf	PORTB,1
	bsf	PORTB,2
	bsf	PORTB,3
	bsf	PORTB,4
	bsf	PORTB,5
	bsf	PORTB,6
	bsf	PORTB,7

MainLoop
	bsf	PORTC,2
	call	Tempo
	bcf	PORTC,2
	call	Tempo
	goto	MainLoop

;---------------------------------- FINE DEL PROGRAMMA ---------------------------------


;------------------------------------- SUBROUTINES -------------------------------------

Tempo  	;Delay software di 0,1 secondi
	....
	return

;---------------------------------- FINE SUBROUTINES ---------------------------------


	END

Il lampeggio di MainLoop su PORTC,2 lo fa correttamente

la cosa strana sono i comandi:

bsf PORTB,0

bsf PORTB,1

bsf PORTB,2

bsf PORTB,3

bsf PORTB,4

bsf PORTB,5

bsf PORTB,6

bsf PORTB,7

Io mi trovo a 5V solo i pin 6 e 7, gli altri sono a massa!! wallbash.gif

se invece sostituisco gli 8 bsf ... con le segunti istruzioni

movlw B'11111111'

movwf PORTB

tutti i pin della porta B sono a Vcc...

Qualcuno sa spiegarmi l'arcano??

Link al commento
Condividi su altri siti


Se non ci sono errori nel programma, è probabile che dipenda da cosa hai collegato alla porta B. Nell'eseguire l'istruzione bsf PORTB,7 il pic legge le tensioni su tutti i piedini, modifica il bit 7 e poi riscrive il byte così modificato sulla porta B. Se per esempio sul pin 0 la tensione è troppo bassa la interpreta come valore basso (anche se l'avevamo messo a 1) e dopo l'istruzione bsf PORTB, 7 ti ritrovi il pin 0 basso.

Ciao

Link al commento
Condividi su altri siti

giacomo56+21/05/2010, 14:12--> (giacomo56 @ 21/05/2010, 14:12)

Grazie per la risposta ma non è così semplice: i pin sono scollegati, li vado solo a misurare con il tester ma 6 su 8 li trovo a massa invece che a Vcc...

se invece uso

movlw B'11111111'

movwf PORTB

funziona correttamente.

In rete ho trovato questo:

http://www.microchip.com/forums/tm.aspx?m=...=1&key=

Si, allora il problema è un altro. I PIC16F non hanno i registri LAT. Ho visto che sulla porta B ci sono gli ingressi analogici, disabilitali.

Ciao.

Link al commento
Condividi su altri siti

giacomo56+21/05/2010, 14:56--> (giacomo56 @ 21/05/2010, 14:56)

Quella degli ingressi analogici potrebbe essere....

ho guardato il DS.. in effetti i pin "cattivi" sono quelli dove posso avere anche ingressi analogici e al reset i pin vengono configurati come ingressi analogici...

resterebbe la stranezza del compostamento diverso tra il BSF sul singolo bit della porta B e la scrittura con il movlw --> movwf

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...