TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: elmaximohombre en 26 de Marzo de 2013, 10:56:40
-
hola amigos
soy nuevo en ensamblador y tengo una duda sobre algunas lineas de un programa en ensamblador espero me puedan aclarar,
estas son las lineas y mi pregunta es ¿por que se coloca un cero en lo ultimo de cada linea?
de antemano gracias
bcf OSCCON, IRCF2,0
bcf OSCCON, IRCF2,0
movlw 0x0F
movwf ADCON1,0
clrf PORTD,0
clrf TRISD,0
bsf PORTD,0,0
-
Pues no se para que PIC esta hecho ese programa, pero para las series 10f, 12f y 16f (las que yo programo) sobran todos esos ceros, excepto el penultimo, el que esta en negrita:
bsf PORTD,0,0
Es posible que en series superiores 18, 24, DSP etc si se utilicen.
Hay instrucciones que si usan eses ceros, unas veces para indicar el numero de bit dentro del Byte, es el caso de ese "PORTD,0" indica que es el bit 0 de ese registro, y otras veces para indicar que el resultado de una operacion se queda en W (registro de la ALU).
-
bcf OSCCON, IRCF2,0 en este caso estás indicando que quieres poner a cero un bit del registro IRCF2, el cero indica que el bit que quieres poner a cero es el de menos peso.
movwf ADCON1,0 en este caso el cero sobra
clrf PORTD,0 en este caso el cero sobra
clrf TRISD,0 en este caso el cero sobra
bsf PORTD,0,0 Te sobra un cero, sería bsf PORTD,0 y el cero tiene la misma función que en el primer caso, está indicando cual de los bits del registro PORTD se pondrá a 1.
-
Hola, no sobran los ceros.
Evidentemente ese ASM es de familias altas de uC, 18F o alguna superior.
El tercer elemento de ciertas instrucciones se denomina a en el Instruction Set Summary y es:
RAM access bit
a = 0: RAM location in Access RAM (BSR register is ignored)
a = 1: RAM bank is specified by BSR register
Por ende, como podrás ver, sirve a modo de elección de modo de acceso a memoria RAM. Si a = 0, se accede a la Access RAM (conformada por dos porciones de memoria utilizadas regularmente debido a que contiene un puñado de GPR y la gran mayoría de los SFR). Por ende, es una forma de trabajar rápidamente. Si en cambio, a = 1, la direccion(parte alta) a la cual acceder de la RAM se completa según el valor del registro BSR al momento de la ejecución de la instrucción en cuestión.
Saludos.