lunes, 25 de octubre de 2010

CONTADOR 0-99 MPLAB

Código del programa desarrollado en ensamblador con el programa MPLAB en el cual se establece la rutina para que en un par de displays de 7 segmentos observemos el conteo de 0 hasta 99.
;EXAMEN SEGUNDO PARCIAL
;ESTE PROGRAMA CONTABILIZA DE 0-99
;23 DE OCTUBRE DEL 2010
;JOSÉ LUIS MORELES LOZANO
;***************************************************************
;***************************************************************
list p=16f877a
#include<P16f877a.inc>
errorlevel -302
__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF
ORG 0x0000
;Variables de retardo, nos permitirán apreciar el conteo evitando que se realice a intervalos de tiempo muy rapidos.
valor1 equ h'21'
valor2 equ h'22'
valor3 equ h'23'
contador equ h'24'
;Hay que definir la asignación de segmentos apagados o encendidos, estas variables serán cargadas posteriormente.
;        HEXADECIMAL      BINARIO
CERO     EQU h'3F'   ;   01111110B
UNO      EQU h'06'   ;   01001000B
DOS      EQU h'5B'   ;   00111101B
TRES     EQU h'4F'   ;   01101101B
CUATRO   EQU h'66'   ;   01001011B
CINCO    EQU h'6D'   ;   01100111B
SEIS     EQU h'7D'   ;   01110111B
SIETE    EQU h'07'   ;   01001110B
OCHO     EQU h'7F'   ;   01111111B
NUEVE    EQU h'6F'   ;   01101111B
org 0h ;Reset
goto salidas

salidas:
       clrf PORTB
       clrf PORTC      ;Limpia puertos B y C para determinar que son salidas
       bsf STATUS,RP0 
       bcf STATUS,RP1 
       movlw h'0'
       movwf TRISB   
       movwf TRISC    
       bcf STATUS,RP0  ;ir al Banco 0
INICIO:     
       clrf contador   ;Inicia las decenas
       clrf PORTC      
LOOP:  
     movlw CERO        ;carga a w el valor de cero
       movwf PORTB
    call RETARDO
     movlw UNO
       movwf PORTB
       call RETARDO
     movlw DOS
       movwf PORTB
       call RETARDO
     movlw TRES
       movwf PORTB
       call RETARDO
     movlw CUATRO
       movwf PORTB
       call RETARDO
     movlw CINCO
       movwf PORTB
       call RETARDO
     movlw SEIS
       movwf PORTB
       call RETARDO
     movlw SIETE
       movwf PORTB
       call RETARDO
     movlw OCHO
       movwf PORTB
       call RETARDO
     movlw NUEVE
       movwf PORTB
       call RETARDO

       incf contador,1 ;Incrementa contador de decenas
       movlw h'A'
       xorwf contador,w
       btfsc STATUS,Z 
       goto  INICIO                                      
      
Decenas     
       movlw h'1'
       xorwf contador,w
       btfsc STATUS,Z  
       goto PRINT1
      
       movlw h'2'
       xorwf contador,w
       btfsc STATUS,Z 
       goto PRINT2

       movlw h'3'
       xorwf contador,w
       btfsc STATUS,Z  
       goto PRINT3

       movlw h'4'
       xorwf contador,w
       btfsc STATUS,Z  
       goto PRINT4

       movlw h'5'
       xorwf contador,w
       btfsc STATUS,Z  
       goto PRINT5
      
       movlw h'6'
       xorwf contador,w
       btfsc STATUS,Z   
       goto PRINT6

       movlw h'7'
       xorwf contador,w
       btfsc STATUS,Z   
       goto PRINT7

       movlw h'8'
       xorwf contador,w
       btfsc STATUS,Z   
       goto PRINT8

       movlw h'9'
       xorwf contador,w
       btfsc STATUS,Z  
       goto PRINT9
      

;Decenas en el display
PRINT1:
       movlw UNO       
       movwf PORTC
       goto LOOP
PRINT2:
       movlw DOS       
       movwf PORTC
       goto LOOP
PRINT3:
       movlw TRES       
       movwf PORTC
       goto LOOP
PRINT4:
       movlw CUATRO       
       movwf PORTC
       goto LOOP
PRINT5:
       movlw CINCO       
       movwf PORTC
       goto LOOP
PRINT6:
       movlw SEIS       
       movwf PORTC
       goto LOOP
PRINT7:
       movlw SIETE       
       movwf PORTC
       goto LOOP
PRINT8:
       movlw OCHO       
       movwf PORTC
       goto LOOP
PRINT9:
       movlw NUEVE       
       movwf PORTC
       goto LOOP

RETARDO
     movlw h'40'  ;Valor que  genera un retardo
     movwf valor1
tres movlw h'40'
     movwf valor2
dos  movlw h'40'
     movwf valor3
uno  decfsz valor3
     goto uno
     decfsz valor2
     goto dos
     decfsz valor1  
     goto tres
     return
  end
;*****************************************************
pueden checar el video en este link

lunes, 23 de agosto de 2010

MPLAB

Una disculpa a todos los seguidores de este blog, he tenido problemas para publicar esta presentación pero aqui les dejo este link donde podran checarla, espero sea de su agrado y utilidad.

http://www.4shared.com/file/rdSRzimb/mplab.html

domingo, 22 de agosto de 2010

EL SIGNO Y LA RESTA BINARIA

NÚMEROS POSITIVOS Y NEGATIVOS

Los números negativos hablando en cualquier base se representan de la forma habitual, usando el signo (-) antes del número que queramos remarcar como negativo, pero cuando hablamos de sistemas digitales existe una disyunción al respecto, puesto que si tomamos en cuenta, en una cantidad binaria necesitaremos asignar el signo a la posición de un bit y la magnitud a una serie de bits que pueden ir del bit más significativo al bit menos significativo, esto puede significar al realizar operaciones binarias que tengamos confusión al no saber si se trata de un sobre flujo, acarreo o simplemente el signo de alguna de las cantidades involucradas con dicha operación aritmética. De aquí parte el estudio de cómo catalogar los números positivos y negativos y como trabajar con los signos.

En primer lugar tendremos que fijar el número de bits con el que estaremos trabajando 8, 16, 32 ó alguna otra cantidad de bits, con la finalidad de establecer números negativos, fijaremos el bit de la extrema izquierda solo a representar el signo, por ejemplo, si trabajaremos con un byte sabemos que contiene 8 bits (bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0) con los cuales podemos representar 256 objetos diferentes, designaremos el bit7 para el signo del número, por tanto cada número dígase positivo o negativo se maneja como objeto aunque se trate de su equivalente negativo vgr. (43 y -43) tomando esta situación en cuenta simplemente se divide la cantidad posible de representar objetos por la mitad, una parte para los números positivos (0....127) y otra para los negativos (-1....-128) por ultimo debemos hacer notar que si el bit asignado para el signo es cero el número se toma como positivo pero si el bit asignado para el signo es uno el número será negativo.

Una de las operaciones aritméticas básicas es la resta de números binarios, para que esta sea más fácil se utiliza el complemento a la base ó complemento a dos (por tratarse de sistemas binario en base 2) convirtiendo la resta en una suma entre números negativos y positivos, lo que se hace es muy simple, nos enfocaremos en el sustraendo de la operación y sacamos el complemento a uno que no es mas que invertir los unos por ceros y los ceros por unos, a continuación de ese número sacamos el complemento a dos únicamente sumando la unidad al número que resulto del complemento a uno, lo que hemos obtenido hasta aquí es convertir el sustraendo de un número positivo a un número negativo y así solo tendremos que hacer la suma correspondiente.

Supongamos 7-4=3

(7) 0111 - (4) 0100

Tomamos el sustraendo (4) 0100 y sacamos su complemento a uno 1011, ahora obtenemos su complemento a dos 1100 este número representa el 4 negativo (-4) ahora solo hay que sumarlo y obtenemos 0111+1100=10011 lo cual equivale al número (3) por tanto la operación es correcta un punto importante que hay tomar en cuenta es el bit mas significativo del resultado, el cual estamos “ignorando”, también hay que notar que nuestro resultado consta de un bit más ya que estábamos trabajando con cuatro bits y el resultado es de cinco, para ello haremos mención de los siguientes puntos los cuales nos indican como interpretar dicho bit.

• Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es falso y deberá ser ignorado.

• Si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit signo. En ausencia de acarreo se considera que este es cero, así la respuesta es positiva.



sábado, 21 de agosto de 2010

MICROPROCESADOR Z80


El microprocesador Z80 fue el primero de tercera generación, es uno de los microprocesadores de 8 bits más usados hasta la fecha, cuenta con versiones actualizadas del Z80 como lo son el Z80A, Z80B,Z80H etc. Estas se caracterizan por trabajar en frecuencias superiores a los 4, 6.5 y 8 Mcps dentro de las características principales del Z80 tenemos.

• La manipulación de las señales se realiza sobre tres buses, el bus de datos, el bus de direcciones y el bus de control.

• Régimen de interrupción uniforme, con la capacidad de encadenar las prioridades de los circuitos periféricos.

• Alto régimen de programabilidad.

• Reloj único

• Fuente de voltaje de +5v.

El sistema del Z80 está complementado con el uso de memorias estáticas para lectura y dinámicas para lectura y escritura, también encontramos en su sistema puertos de entrada y salida paralelos, interfaces de comunicación, temporizadores y circuitos de acceso a la memoria.

El microprocesador Z80 es una versión notablemente mejorada que su antecesor el INTEL 8080, apreciamos en el Z80 una notable mejoría en su programación con muchas mas instrucciones y se ha mejorado su circuitería además de que solamente utiliza una fuente de alimentación de +5V, el Z80 contiene todas las instrucciones que su antecesor lo cual lo hace compatible con sistemas anteriores a el pero se le han agregado 80 instrucciones mas lo que lo hace mas completo y de donde toma su nombre logrando así un total de 156 instrucciones.

En el microprocesador Z80 encontramos las siguientes unidades lógicas:

• Unidad aritmética lógica

• Contador de programa

• Apuntador de stack

• Registros de propósito general

• Registros de índice

• Registros de interrupciones registro de banderas

• Registro de memorias dinámicas

viernes, 13 de agosto de 2010

"CLASIFICACIÓN DE LOS SENSORES"

SENSOR: es un dispositivo capas de detectar diferentes tipos de manifestaciones o fenómenos físicos como pueden ser energía, velocidad, aceleración, tamaño, etc. La mayoría de estos sensores son eléctricos o electrónicos, también son dispositivos transductores , ya que convierten la señal que se esta censando directamente en otra que pueda leerse con mayor claridad y más fácilmente.

A continuación se presenta una clasificación de sensores eléctricos y algunos ejemplos:

"CONVERTIDORES D/A" "CONVERTIDORES A/D"

CONVERTIDORES D/A Y A/D


En la vida cotidiana nos encontramos con la necesidad de convertir señales analógicas en digitales y digitales en analógicas, esto debido a la necesidad de interpretar las señales que nos ofrecen los distintos dispositivos y aparatos electrónicos, en la industria por ejemplo, recibimos una señal de un sensor y nosotros debemos convertirla e interpretarla adecuadamente con la finalidad de llevar acabo las acciones correspondientes para las que fue preestablecido el sensor, siendo este solo un ejemplo de la aplicación practica de la necesidad de manipular este tipo de señales. Por tanto es de suma importancia que entendamos como es este proceso de conversión desde la parte mas sencilla, comenzaremos por entender como es la conversión de digital a analógico (D/A) consideremos el circuito eléctrico más sencillo que puede diseñarse, con una fuente de alimentación y una resistencia, añadiremos a este circuito un amperímetro en serie con la resistencia de forma que la lectura que obtengamos sea la corriente que fluye por la resistencia, debemos considerar un amperímetro ideal (con resistencia interna cero) para que esto no interfiera con la señal que obtendremos en el amperímetro. Con las consideraciones anteriores tenemos que el valor de la corriente que circula por el circuito estará dado por la tención V_cc de la fuente de alimentación y por el valor de R según la ley de Ohm,

I=V_cc/R

Este circuito aunque sencillo, ya puede ser considerado como un conversor de digital analógico.


 Si suponemos la fuente de alimentación con 5 volts que es el voltaje con lo que trabajan los circuitos lógicos y le damos un valor a la resistencia, mediante la ley de Ohm y resolviendo para la corriente obtendremos un valor en condiciones de conducción del interruptor (nivel lógico H), por el contrario cuando el interruptor se encuentre abierto (nivel lógico L) obtendremos entonces los estados lógicos L y H que son de tipo digital y un valor analógico para la corriente que circula por la resistencia, de manera que podemos notar la conversión de digital a analógico, este es el principio de funcionamiento de los convertidores digital a analógico de 1 bit.

De forma similar analizaremos la configuración para un convertidor de 4 bits, para esto nuestro primer objetivo es lograr una corriente proporcional para cada bit, desde el menos significativo hasta el mas significativo mediante la configuración correcta de resistencias de manera que la corriente que pase por la resistencia cero será el valor del bit cero, la corriente de la resistencia uno será el valor del bit 1, la corriente que pase por la resistencia dos será el valor del bit 2 y la corriente que pase por la resistencia tres será el valor del bit 3 de esta forma obtendremos una señal analógica para cada corriente a partir de señales digitales.

Para conocer los valores de las resistencias se trata únicamente de seleccionar de forma tal que el valor de la resistencia se reduzca a la mitad cada vez que nos movemos un dígito hacia la posición del bit mas significativo, de esta forma tendremos un incremento fijo para cada una de las posiciones del interruptor en cada bit obteniendo una salida analógica respectiva e invariante para el diseño del convertidor que estemos implementando.



Conversores Analógico/Digital

Para este proceso de conversión lo primero que se tiene que hacer es muestrear la señal analógica y después cada una de esas muestras convertirlas en digital. Para lo cual definiremos frecuencia de muestreo como el numero de veces por segundo que se muestrea o se mide cada ciclo de una señal para pasarlo a binario. En electrónica las señales cambian de valor instantáneamente en tiempos muy breves, la única forma de llevar acabo un muestreo de calidad es considerando espacios de tiempo muy cortos en el orden de los microsegundos e inclusive de los nanosegundos.

Para la conversión de analógico a digital se han ideado diversos circuitos entre los que destaca por su importancia:

El convertidor A/D tipo contador

El convertidor A/D de aproximación sucesiva

El convertidor A/D de tipo contador se trata de un contador binario ascendente, un convertidor D/A, un comparador de tensión de alta velocidad y un reloj.



Al iniciar el conversor, el contador se pone a cero y esta salida se aplica en el convertidor D/A la salida de este también será cero. En el comparador tenemos la salida del convertidor de D/A y en la otra conectamos la señal analógica, al ponerse en marcha el reloj, se inicia el conteo binario el cual se detendrá hasta que el comparador indique la igualdad de las señales la cual se envía a la lógica de control y esta a su vez bloquea el conteo binario, de esta forma para cierta señal analógica obtenemos un valor digital de cierto número de bits el cual será único para ese muestreo de la señal analógica



CONVERTIDOR A/D DE APROXIMACIONES SUCESIVAS

Una característica del convertidor A/D es la mayor rápidez de su respuesta, se representa por el diagrama siguiente:

En el funcionamiento de este conversor un reloj proporciona impulsos a la lógica de control y esta al CDA para ser comparada con la señal analógica, inicialmente el código binario aplicado al CDA esta en cero, en el primer impulso el bit mas significativo esta en H y la tensión de salida del convertidor DA se compara en el circuito comparador en la señal analógica que se desea convertir a digital, si la tensión de entrada es más alta, el bit 15 se deja a nivel H. Si la tensión de salida del CDA es más alta que la entrada, el bit 15 se pone a cero (nivel L). Con los ciclos subsecuentes los siguientes bits menos significativos se mantienen en nivel H o L dependiendo de la comparación de de las señales. En este conversor las operaciones se realizan de bit a bit desde el más significativo hasta el menos significativo tomando una mayor exactitud, otra característica de este conversor es que necesita siempre los mismos ciclos de reloj para realizar las operaciones lo cual hace que los tiempos sean iguales.