Displays de 7 segmentos

February 26, 2007 at 8:40 pm | Posted in MPASM, Rutinas, Tutorial | 29 Comments

Un display de 7 segmentos no es otra cosa que 7 leds conectados entre si con su ánodo o su cátodo en común. Dependiendo del tipo de display será la manera en que se enciendan sus segmentos, un display de cátodo común requiere un 1 logico para encender mientras que uno de cátodo común un 0 así que dependiendo del display que se utilice cambiará la rutina encargada de controlarlo, pero en cualquier caso al momento de cambiar el tipo de display solo debemos cambiar los ceros por unos y viceversa.

Aqui supondremos que se usa un display de cátodo común así que los segmentos encenderán con un 1. El display estará conectado al puerto B, el segmento A estará conectado al bit RB0, el B al RB1, el C al RB2, el D al RB3 y así sucesivamente hasta llegar al G que estará conectado al bit RB6.

Encender y apagar los segmentos del display es igual que encender y apagar leds, podríamos hacerlo de la misma manera que en el tutorial 1, pero una manera mas eficaz de controlar un display es mdiante una tabla. Haremos que el display muestre los números 0 a 15 en hexadecimal (0 a F) con un retardo de medio segundo entre cada número. Para eso se declara el puerto B como salida. Una vez hecho eso se crea la rutina encargada de mandar llamar el numero correspondiente de una tabla y de desplegar el numero correspondiente por el puerto B. El programa principal es el siguiente:

Lea el artículo completo en el blog Circuitos electronicos.

Advertisements

Conjunto de instrucciones (segunda parte)

February 20, 2007 at 10:34 pm | Posted in MPASM | 4 Comments

La semana pasada se hablo sobre el conjunto de instrucciones de la gama media de los micrcocontroladores PIC y se explicaron 34 de las 35 que lo forman. Solamente 34 ya que una paso totalmente desapercibida, se trata de MOVWF asi que ahora a modo de errata se explica esta instruccion perteneciente al grupo de instrucciones orientadas a registros.

Continue Reading Conjunto de instrucciones (segunda parte)…

Conjunto de instrucciones del PIC 16F628 (16F628A)

February 15, 2007 at 11:05 pm | Posted in Ensamblador, MPASM | 53 Comments

Como ya hemos visto, para que el microcontrolador lleve acabo una tarea, debemos indicarle exactamente que debe hacer, o en otras palabras, debemos escribir el programa que el micro ejecutara. Ya hemos visto varios ejemplos y muchas de las instrucciones del pic, pero ahora veremos las 35 instrucciones del ensamblador mpasm. Estas 35 instrucciones son las mismas para toda la gama media de los microcontroladores pic asi que si mas adelante se quiere realizar un programa para un pic 16F877 se usaran las mismas instrucciones.

Antes de continuar es necesario definir algunos terminos que se usaran para explicar las instrucciones:
f: cualquier registro del microcontrolador
W: registro de trabajo
b: posicion de un bit en el registro ‘f’
d: destino, puede ser ‘f’ (d=1) o ‘W’ (d=0)
etiqueta: grupo de caracteres que marcan el inicio de una parte del programa
[]: opcional
: posicion de un bit dentro de un registro

Instrucciones orientadas a registros

ADDWF: Suma W y f
Suma el contenido del registro ‘W’ y el registro ‘f’. Si “d” es 0, el resultado se almacena en el registro W. Si ‘d’ es 1 el resutado se almacena en el registro ‘f’.
Sintaxis: [etiqueta] ADDWF f,d
Operación: (W) + (f) –> (destino)
Flags afectados: C, DC, Z
Ejemplo: ADDWF REG,1
Antes de la instrucción: W=0x03, REG=0x04
Después de la instrucción: W=0x03, REG=0x07

Lea el artículo completo en el blog Circuitos electronicos.

Retardos por software

February 9, 2007 at 4:53 pm | Posted in Tutorial | 31 Comments

La semana pasada, en la segunda parte del tutorial 1, se habló un poco sobre los retardos por software. Ahora vamos a ver esto de la lógica de los retardos un poco más a fondo para poder crear nuestras propias subrutinas.

Como ya se dijo el pic 16F628A tiene un oscilador interno de 4MHz, si utilizamos ese oscilador tenemos que todas las instrucciones se ejecutan en 1uS, exceptuando los saltos que tardan 2 ciclos, es decir 2uS. Tomando en cuenta eso vamos a generar nuestros retardos, pero siempre partiendo de la suposición de que se esta trabajando a una frecuencia de 4MHz, si es así, crear rutinas de retardo para nuestro pic es muy sencillo.

Supongamos que tenemos la siguiente rutina:

ret11.png

A la derecha de cada instrucción aparece el número de ciclos que tomará cada una. Las primeras dos toman solamente 1 ciclo, la tecera decfsz toma (N-1)+2, porque decrementará N-1 veces la variable N y en el último decremento hará un salto, es por eso el +2.

Lea el artículo completo en el blog Circuitos electronicos.

Tutorial 1 – LED’s (tercera parte)

February 6, 2007 at 2:19 pm | Posted in Tutorial | 5 Comments

Los ejemplos anteriores ponian en alto o en bajo todos los pines del puerto B del PIC. Para terminar con este tutorial ahora veremos como modificar el estado de un solo pin y así encender o apagar cualquiera de los ocho leds conectados al puerto B. Vamos a ver cuatro formas distintas de hacer esto y así vamos a introducir algunas instrucciones nuevas.

Lo que se va a hacer en estos ejemplos es recorrer un “1” por el puerto B de tal modo que solamente uno de los 8 leds encienda a la vez. El programa utilizado cuando se habló del entorno de desarrollo MPLAB encendía un led utilizando la instrucción bsf, el siguiente ejemplo también utilizará esa instrucción.

Tutorial 1.3 – Encendiendo un led con bsf

bsf sirve para poner en alto el estádo lógido de un bit. En el siguiente ejemplo se utiliza para  encender los leds conectados al puerto B, para apagarlos se utiliza la instrucción bcf que sirve para poner en bajo un bit. La configuración del puerto es la misma que la de los ejemplos anteriores. Lo único distinto es la rutina que enciende y apaga los leds. La rutina la podemos ver en la siguiente imágen.

led13.png

Lea el artículo completo en el blog Circuitos electronicos.

Tutorial 1 – LED’s (segunda parte)

February 2, 2007 at 8:58 am | Posted in Tutorial | 13 Comments

Tutorial 1.2 – Encendiendo y apagando LED’s… ahora con retardo!

Como ya dijimos hay algo que no funciona bien en el programa anterior. Cada instrucción ocupa 1 ciclo de reloj para ejecutarse. Como utilizamos el reloj interno del 16F628A cada instrucción se ejecuta en (1/4MHZ)*4 o lo que es lo mismo 1uS. El programa ejecuta 5 instrucciones mientras los leds estan encendidos y otras 5 mientras están apagados, asi que encienden 5uS y apagan otros 5uS. Al ver el ejemplo en funcionamiento veremos que los leds nunca se apagan, ¿cómo hacemos para que esto se alcance a ver? La respuesta: utilizando un retardo al encender los leds y otro al apagarlos.

El principio del retardo es contar descendentemente desde un número dado y al momento de que la cuenta llega a cero dejar de contar. El cero indica el fin del retardo y una vez concluido puede continuar la ejecución del programa.

Lea el artículo completo en el blog Circuitos electronicos.

Tutorial 1 – LED’s

February 1, 2007 at 8:30 pm | Posted in Tutorial | 13 Comments

En el tutorial de MPLAB ya vimos un pequeño ejemplo de un programa que encendía un led, ahora vamos a empezar con el primer tutorial de  microcontroladores pic. Vamos a hacer algo sencillo, encender y apagar leds. Así, vamos a empezar por lo más básico para ir aprendiendo las instrucciones del micro y ver mas a detalle el funcionamiento del PIC.

Tutorial 1.1 – Encendiendo y apagando LED’s

Ya vimos como encender un led, ahora veamos también como apagarlo. Este programa lo que hace es encender ocho leds conectados al puerto B del micro y después apagarlos. El código es el siguiente (descargar código):

led1.png

Lea el artículo completo en el blog Circuitos electronicos.

Create a free website or blog at WordPress.com.
Entries and comments feeds.