Holases!
A ver, que tengo tantas cosas en la cabeza que se me está haciendo un cacao.
Tengo un 16f877a
Como consta en el susodicho datasheet el mismo consta de 4 bancos, muy bien.
AAAhoraaa... por ejemplo quiero limpiar la ram del banco 0:
Borra_Ram0 bcf STATUS,IRP
movlw 0x20
movwf FSR
Borra_next0 clrf INDF
incf FSR,1
BTFSS FSR,4 ;all done?
goto Borra_next0
return
Todo muy bien. Llegamos al byte 80h (que sería 7f+1) y listo. Muy prolijo todo.
Pasamos a la parte 2:
Vamos a limpiar el banco 1:
Borra_Ram1 bcf STATUS,IRP
movlw 0xA0
movwf FSR
Borra_next1
clrf INDF
incf FSR,F
movf FSR,W
btfss STATUS,Z
goto Borra_next1
RETURN
Aqui , al pasarse de FF a 00 produce el deseado flag Z del status. Creo que vamos bien.
Paso 3: (Aqui las cosas se complicaron)
Pibe se empieza a rascar la cabeza, tiene que direccionar un byte de 3 cifras (110) y el MPLAB le dice que de eso nada. Que si quiere jugar que juegue al x3 terran conflict.
Pibe mira el datasheet y ve con esperanza que puede usar el bit IRP del registro STATUS para molestar al banco 2 y 3. Así que cree que si quitamos el bit mas alto de la dirección y le mete 10h a su programita:
Borra_Ram2 bsf STATUS,IRP
movlw 0x10
movwf FSR
Borra_next2
clrf INDF
incf FSR,F
movf FSR,W
sublw 0x70
btfss STATUS,Z
goto Borra_next2
return
y lo mismo con el banco 3.
Es correcto o al Pibe se le va la castaña?
No hay un comando que por ejemplo le digamos al MPLAB: "oye cariño, quiero borrar toda la RAM. Y lo quiero YA!"
si en vez de ir cambiandonos de bancos y toda la parafernalia, le ponemos que borre de la 20h (inicio) hasta el fin de la memoria (es que ya no se ni que dirección es, porque se me mezclan) no vale?
Bueno, esto por un lado. Ahora siguiendo con la bendita memoria:
Quiero usar gran parte de la memoria como un buffer de 256 bytes, empezando por el A0h del banco 1 tengo 80+96+96 bytes jugosos y listos para ser llenados con bytes sacrílegos.
La directiva:
CBLOCK A0h
Estos_256_bytes_son_miiioooos:256
ENDC
Es correcta? No tengo que direccionar? No tengo que indicarle cambio de bancos? No creo que sea tan facil, sería demasiado bello.
Hay alguna otra manera de indicarle al micro que yo soy su amigo y quiero usar su memoria en provecho de la humanidad?
Por favor, para aquellos iluminados que sabeis los oscuros y pérfidos secretos de las RAM de los pics, llenar este vacío de desesperación con una somera explicación y/o ejemplito de como coger las riendas de dicha memoria y poder cabalgar... uyyy.... estoy muy afectado... este proyecto me está matando