Hola nuevamente a
los tutoriales de Artes Electrónicas Pachani, hoy
vamos a continuar con la serie de tutoriales en la parte de
componentes PIC, este tutorial está dirigido a lectores novatos,
aficionados (hobbistas), estudiantes, que deseen implementar
programas para microcontroladores en lenguaje ensamblador (ASM), para
el desarrollo de aplicaciones.
3.- Programando Operaciones Básicas en PIC (parte 2)
Continuando con la segunda parte de las operaciones básicas debido a
que no hemos llegado a realizar operaciones lógicas y desplazamiento
de bits que son muy importantes,entonces continuemos.
iv).-Instrucciones logicas
Dentro de las operaciones lógicas que se pueden realizar con un
microcontrolador están: AND, OR inclusive. OR exclusiva, la
rotación, complemento y el intercambio de nibbles, todo con el fin
de manipular byte:
AND
Dentro de las operaciones lógicas que vamos a estudiar esta la operación AND que se simboliza por (•)
como (A•B) o bien (A y
B), también (A&B), una operación lógica donde ambos deben ser
verdaderos, para que la operación sea verdadera.
OR
(OR INCLUSIVA)
Esta operación se simboliza con (+) como (A + B) , (A o B), (A|B),
donde cualquiera se el valor de A ó bien de B el resultado de esta
operación lógica siempre dará como verdadero, ya que la operación
siempre sera verdad es como tener una suma de contenido .
OREX
(OR EXCLUSIVA)
Esta operación se simboliza con (O)
como (A O B), uno u otro (no
ambos) debe ser verdadero, para que la operación lógica sea verdadera.
ROTACIONES
Las rotaciones son desplazamientos de una posición o bit (ver
figura 3.4), con todo el registro de 8 bits a través de la bandera C
(Carry). Puede ser rotación a la izquierda (left, rlf) o a la
derecha (right, rrf). Es relevante poner el bit C en el valor deseado
antes de la operación.
![]() |
|
Figura 3.4.- Instrucción para los modos de rotación.
|
Habrán notado que cuando rotamos la posición de cada bit hacia la
izquierda al final tenemos un numero binario que si lo convertinos en
decimal, es como si hubiera sido multiplicado por dos.
Antes de la instrucción PORTD =b’0011
1100’ su valor decimal es : 60
Después de la instrucción PORTD =b’0011
1100’ su valor decimal es : 120
Antes de la instrucción numero =b’0001
1111’ su valor decimal es : 31
Después de la instrucción numero
=b’0011 1110’ su valor decimal es : 62
Antes de la instrucción num =b’1001 1111’ su valor decimal es : 159
Después de la instrucción num
=b’0011 1111’ su valor decimal es : 63
Pero como tenemos ese Carry =1 , ese
valor lo multiplicamos por 255 entonces tendremos al final
1*255
+ 63 = 318 , que vendría a ser el resultado en decimal de la
multiplicación de 159*2 , como habrán notado tenemos con el
desplazamiento a la izquierda de los bits tenemos la operación de la
multiplicación.
![]() |
|
Figura 3.6.- Rotación de los bits hacia la derecha.
|
Habrán notado que cuando rotamos la posición hacia la derecha de
cada bit al final tenemos un numero binario que si lo convertinos en
decimal, es como si hubiera sido divido por dos.
Antes de la instrucción PORTB
=b’1100 0011’ su valor decimal es : 195
Después de la instrucción W
=b’0110 0001’ su valor decimal es : 97
Ademas tenemos un Carry =1 , es decir
tenemos un valor decimal, de igual manera que cuando tenemos números
binarios que representan por 4 bits 1111, que convertidos al decimal
viene a ser igual a 8+4+2+1 =15 ,
para el microprocesador se tiene el mismo pensamiento, pero para valores
decimales de la siguiente manera:
.byte = .1111 = 0.5000 + 0.2500 + 0.1250 + 0.0625 que sumados tiene
que dar como valor sumado igual a uno (1).
Entonces cuando tenemos el valor de PORTB
= 195 , ya al haber hecho la rotación
de bits hacia la derecha tendremos W =
97 + .1000
= 97 + (1*0.5+0+0+0)= 97.5 , que vendría a ser el resultado en
decimal del numero dividido entre dos , o en rotación a la derecha,
que estábamos buscando.
COMPLEMENTO E
INTERCAMBIO DE NIBBLES
Otras dos operaciones lógicas con las que vamos a trabajar son:
-
El complemento que consiste en cambiar los “1” por “0” y viceversa.
-
El intercambio de nibbles que consiste en intercambiar nibbles (7:4) y (3:0).
Complemento
Aquí se realiza el complemento de la dirección nivel , cambiando los 1 por 0 y viceversa y se guara nuevamente en la misma dirección nivel.
INSTRUCCIONES DE
BIT
Estas instrucciones ponen un bit (b) a nivel lógico “0” o “1”,
de un registro de la RAM o memoria de datos.
Algo importante que hay que notar que tanto DL1 y bit2, deben de ser
reemplazados con su correspondiente valor es decir bcf
PORTB,4 ; ya
que indicamos que en el bit 4 , es donde vamos a poner a cero dicho
bit.
En el caso bsf
out_led, 2; de
igual manera indicamos que en el bit 2, es donde vamos a poner en uno
o set dicho valor.
Espero les sea de utilidad este material ya que en hemos trabajado la parte de operaciones básicas como de manipulación de byte de forma que podemos obtener la parte de multiplicación y división, para la siguiente entrega trabajemos en la parte de salto y tener ciclos como en los lenguajes de alto nivel pero en la versión ensamblador, bien hasta la próxima.
Todo el material que aquí se encuentra es de mi autoría, ademas de
una recopilación de información de Internet de recursos que se
pueden descargar como libros los cuales son usados como referencia
para los ejercicios y los ejemplos. Cualquier consulta la puedes
realizar en la parte de comentarios.
Bibliografia:
1.- Enrique Palacios , Fernando Ramiro y Lucas J. López,
Microcontrolador PIC16F84 Editorial Alfa Omega; Publicado el año
2004;[Fecha de consulta 21 de Febrero de 2017].
2.-Christian Bodignton Estava; Mikro Basic ; descargada de
WWW.CONEXIONELECTRONICA.COM;
Publicado el año 2010; [Fecha de consulta 5 de Marzo de 2017].




















No hay comentarios.:
Publicar un comentario
Hola, con tu comentario puedes aportar para mejorar la calidad de mi trabajo