Programació en ASM del PIC 16F690 amb PICkit 2

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Bancs de memòria

La memòria de dades del PIC 16F690 té 512 bytes, per tant, cal una adreça de 9 bits per codificar totes les posicions de memòria. Les instruccions del microcontrolador només són capaces d'accedir a adreces de memòria de 7 bits. Per solucionar-ho, la memòria s'estructura en bancs.

El microcontrolador té quatre bancs de memòria (de 128 bytes cada un) però només és capaç d'adreçar-ne un a cada moment. Per això hi ha dos bits (RP0 i RP1) a la paraula STATUS que permeten triar el banc amb el que treballem en aquell moment. La configuració seria:

RP1 RP0 Banc
0 0 Banc 0
0 1 Banc 1
1 0 Banc 2
1 1 Banc 3
Adreçament directe

Per anar al banc que ens convé a cada moment, podem activar o desactivar manualment els bits corresponents com en el següent cas:

	bcf		STATUS,RP0
	bsf		STATUS,RP1	; Tria el banc 2
	movlw		0xFF		; Posa l'acumulador a FFh (tot uns)
	movwf		ANSEL		; Configura port AN0-AN7 com entrades analògiques

També podem fer servir l'opció banksel. Quan en el programa li posem banksel seguit del nom d'un registre, el compilador activarà o desactivarà els bits convenients per seleccionar el banc on hi ha el registre indicat; com en el cas següent:

	banksel		ANSEL		; Tria el banc on hi ha ANSEL
	movlw		0xFF		; Posa l'acumulador a FFh (tot uns)
	movwf		ANSEL		; Configura port AN0-AN7 com entrades analògiques

És més òptim fer servir la primera opció ja que el compilador ajusta els bits cada cop que fem banksel, encara que ja estés seleccionat el banc corresponent i això fa que els programes siguin més llargs. Per exemple el programa:

	banksel 	TRISA		; Tria el banc
	movlw		0xFF		; Posa l'acumulador a FFh (tot uns)
	movwf		TRISA		; Posa tots els bits del port A com a entrada
	banksel 	ADCON1		; Tria el banc
	movlw		0x10		; Posa el valor 10h (0001 0000) al registre W
	movwf		ADCON1		; Copia W a la configuració del conversor A/D

Ens seleccionaria innecessàriament dues vegades el banc 1 ja que TRISA i ADCON1 estan al mateix banc. En molts casos el canvi de bancs només s'ha de fer en el moment de la configuració (al començament del nostre programa) i podem ordenar les configuracions de manera que no calgui canviar els dos bits cada cop. Si fem la selecció de bancs manualment el programa ens quedarà més compacte.

Per saber quins registres hi ha a cada banc, consulteu l'apartat Registres de la memòria de dades.

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.