Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
😳 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!!!
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 😉
este foro si que sirve.. gracias.. .. .. .. .. .. ya lo habia buscado en google pero no lo habia encontrado.. pero gracias
No existe esa instruccion.
La instruccion es: BTFSC
Segun el Datasheet: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.
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:
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