ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Instrucciones del 16F690 en ensamblador

Foro para postear los temas de ensamblador

Moderador: Junta Directiva

Responder
Avatar de Usuario
REYES
Mensajes: 2
Registrado: Mié Abr 02, 2008 5:12 pm

Instrucciones del 16F690 en ensamblador

Mensaje por REYES » Mié Abr 02, 2008 5:25 pm

:oops: soy nuevo en este foro y me gustaria saber dos cosas, ¿las instrucciones de ensamblador son las mismas para todos los PIC? y ... he investigado sobre como comparar dos registros y encontre la instruccion CMP para comparar los registros o variables NUM1 y NUM2, pero cuando pongo la instruccion

CMP NUM1,NUM2

no ensambla el programa de microchip que tengo, reporta un error que dice illegal opcode

¿que instruccion debo utilizar para comparar estos dos registros para el 16F690?

GRACIAS!!!



Avatar de Usuario
Luison
Usuario de baja
Mensajes: 493
Registrado: Lun Dic 24, 2007 12:03 pm
Ubicación: Guecho

Re: Instrucciones del 16F690 en ensamblador

Mensaje por Luison » Mié Abr 02, 2008 6:20 pm

Google--> 16F690 --> 7200 páginas encontradas, y las primeras son sus respectivos datasheet (manual). El primero es el manual completo de 258 páginas. En la 196 están las instrucciones. Google no muerde ;)

Avatar de Usuario
REYES
Mensajes: 2
Registrado: Mié Abr 02, 2008 5:12 pm

Re: Instrucciones del 16F690 en ensamblador

Mensaje por REYES » Mié Abr 02, 2008 6:46 pm

este foro si que sirve.. gracias.. .. .. .. .. .. ya lo habia buscado en google pero no lo habia encontrado.. pero gracias

Avatar de Usuario
Lorth
Forero Habitual
Forero Habitual
Mensajes: 188
Registrado: Sab Oct 27, 2007 4:16 am
Nombre: Sergi Consul
Ubicación: Barcelona
Contactar:

Re: Instrucciones del 16F690 en ensamblador

Mensaje por Lorth » Mié Abr 02, 2008 9:09 pm

No existe esa instruccion.

La instruccion es: BTFSC

Segun el Datasheet:

Código: Seleccionar todo

Syntax: [ label ] BTFSC   f,b 
Operands: 0 ≤ f ≤ 127 
0 ≤ b ≤ 7 
Operation: skip if (f<b>) = 0 
Status Affected: None 
Description: If bit ‘b’ in register ‘f’ is ‘1’, the next 
instruction is executed. 
If bit ‘b’ in register ‘f’ is ‘0’, the next 
instruction is discarded, and a NOP 
is executed instead, making this a 
two-cycle instruction.
Se me ocurre, sin pensarlo mucho, que podrias restar los dos numeros, y si es 0, es que son iguales. y usas la funcion de arriba para saltar o no a otra parte del codigo.


Acostumbrate a usar los Datasheets, porque es muy basico, para saberlo todo... no te aprendas los comandos de memoria.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Instrucciones del 16F690 en ensamblador

Mensaje por Ranganok » Mié Abr 02, 2008 9:16 pm

REYES, los juegos de instrucciones en los PICs va por familias, la 16F tiene 35 instrucciones y esa no existe, generalmente para comparar lo que se hace es restar los registros:

Código: Seleccionar todo

 MOVF num1     ; mueve la variable num1 al acumulador
 SUBWF num2   ; resta el acumulador a la variable num2
 BTFSC Z           ; compara el zero (iguales)
  GOTO num1_igual_num2

 BTFSC C           ; compara el carry (desboramiento)
   GOTO num1_mayor_num2

 GOTO num1_menor_num2
No he comprobado si esta correcto, así que puede ser que los GOTOs del Carry estén intercambiados, pero por lo demás se hace así.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Avatar de Usuario
TumBos
Forero Habitual
Forero Habitual
Mensajes: 158
Registrado: Mar Ene 17, 2006 7:59 pm

Re: Instrucciones del 16F690 en ensamblador

Mensaje por TumBos » Jue Abr 03, 2008 8:09 am

otra forma usando XOR:

movf num1 ; Carga num1 en accu
xorfw num2,W ; Al hacer el XOR si son iguales el flag Z se pone a 1
btfss STATUS,Z ; Salta el goto si num1=num2
goto no_es_igual ;
;---- codigo para num1=num2 ---
;
no_es_igual


1saludo

Avatar de Usuario
Luison
Usuario de baja
Mensajes: 493
Registrado: Lun Dic 24, 2007 12:03 pm
Ubicación: Guecho

Re: Instrucciones del 16F690 en ensamblador

Mensaje por Luison » Jue Abr 03, 2008 8:16 am

TumBos escribió:otra forma usando XOR:

movf num1 ; Carga num1 en accu
xorfw num2,W ; Al hacer el XOR si son iguales el flag Z se pone a 1
btfss STATUS,Z ; Salta el goto si num1=num2
goto no_es_igual ;
;---- codigo para num1=num2 ---
;
no_es_igual


1saludo
Sí, pero no sacas cual es el mayor :roll:

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados