lunes, 25 de octubre de 2010

CONVERTIR NUMEROS CON PUNTO DECIMAL A BINARIOS



CONTADOR 0 A 99 (2do. Parcial)

En este enlace se muestra el video del exámen del 2do. parcial, el contador de 0 a 99 visualizado en 2 displays de 7 segmentos. Para poder ver el video, haga click aquí.

Además,a continuación se encuentra el código utilizado para realizar este trabajo.
 
list p=16f877a
#include
__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF

retardo1 equ 0x10
retardo 2 equ 0x11
contador equ 0x13

CERO       equ 0x3F   ;    01111110B
UNO        equ 0x06   ;    01001000B
DOS         equ 0x5B   ;    00111101B
TRES       equ 0x4F   ;    01101101B
CUATRO  equ 0x66   ;    01001011B
CINCO    equ 0x6D   ;    01100111B
SEIS         equ 0x7D   ;    01110111B
SIETE        equ 0x07   ;   01001110B
OCHO     equ 0x7F   ;     01111111B
NUEVE    equ 0x6F   ;    01101111B

       org 0x00
       bsf STATUS,RP0 
       bcf STATUS,RP1 
       movlw 0x00
       movwf TRISB     ;Configura Puerto B como salida
       movwf TRISC     ;Configura Puerto C como salida
       bcf STATUS,RP0 
       bcf STATUS,RP1

Decenas:     
       clrf contador
       clrf PORTC     
ciclo:  
       movlw 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
       movlw 0x10
       xorwf contador,w
       btfsc STATUS,Z 
       goto  Decenas                   
      
Unidades     
       movlw 0x01
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=1;
       goto PRINT1
      
       movlw 0x02
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=2;
       goto PRINT2

       movlw 0x03
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=3;
       goto PRINT3

       movlw 0x04
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=4;
       goto PRINT4

       movlw 0x05
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=5;
       goto PRINT5
      
       movlw 0x06
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=6;
       goto PRINT6

       movlw 0x07
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=7;
       goto PRINT7

       movlw 0x08
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=8;
       goto PRINT8

       movlw 0x09
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=9;
       goto PRINT9
      

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

RETARDO
       movlw 0x23 
       movwf retardo1
dos movlw 0x23
        movwf retardo 2
uno decfsz retardo 2
        goto uno
        decfsz retardo 1
        goto dos
        return
end

lunes, 23 de agosto de 2010

PRESENTACION MPLAB

Este es el link para checar la presentación donde se describe qué es Mplab y cómo comenzar a usarlo.

COMPARATIVA PIC16F84 VS PIC16F877

     Ahora realizaré una comparativa entre los microcontroladores PIC16F84 y el PIC16F877, analizando sus características y estructuras internas.

PIC16F84

• Tiene una arquitectura Harvard, es decir memoria de programa y memoria de datos se acceden por buses separados.
• Las instrucciones se ejecutan en un sólo ciclo de reloj, con excepción de las instrucciones de salto que se ejecutan en 2 ciclos de reloj.
• El bus de programa es de 14 bits de ancho.
• 15 registros de funciones especiales.
• Memoria de datos RAM de 68 bytes o registros.
• Contiene una memoria EEPROM de 64 bytes.
• Memoria de programa Flash de 1k x 14 bits.
• Dispone de 2 puertos paralelos(A y B) los cuales se pueden programar individualmente como entradas o salidas.
• Dependiendo del tipo de encapsulado tiene 18 ó 20 pines.
• Contiene un contador/temporizador de 8 bits.
• ALU de 8 bits y Registro de Trabajo W no direccionable.
• 40 años de retención de la memoria EEPROM.
• Puede operar bajo 4 modos diferentes de oscilador.
• Repertorio de 35 instrucciones.
• Pila de 8 niveles.
• Modos de direccionamiento directo, indirecto y relativo.
• Rango de alimentación de 4 a 5.5 V en configuración de oscilador XT, RC y LP, y de 4.5 a 5.5 V en configuración de oscilador HS.
• 4 fuentes de interrupción.
• Modo de bajo consumo SLEEP.
• 13 pines E/S con control individual de dirección.
• Protección de código.
• Programación en serie a través de dos pines.



Estructura Interna PIC16F84



PIC16F877

• Repertorio de 35 instrucciones.
• Tipo de arquitectura Harvard.
• Memoria de programa Flash de 8k x 14 bits.
• Memoria de datos RAM de 368 x 8 bytes
• Contiene una memoria EEPROM de 256 x 8 bytes.
• 40 pines.
• Pila de 8 niveles.
• Protección programable de código.
• Modo de bajo consumo SLEEP.
• 2 canales PWM.
• Modos de direccionamiento directo, indirecto y relativo.
• Contiene 3 timers y 14 interrupciones.
• 8 canales de entrada de CAD de 10 bits.
• 5 puertos de E/S (A, B, C, D, E).
• Las instrucciones se ejecutan en un sólo ciclo de reloj, con excepción de las instrucciones de salto que se ejecutan en 2 ciclos de reloj.
• Rango de voltaje de alimentación: 2.0 a 5.5 V.
• Soporta modo de comunicación serial para lo cual posee 2 pines.

Estructura Interna PIC16F877


CONCLUSIONES:

     Como se puede observar en la lista de características de ambos microcontroladores así como en sus diagramas de bloques, estos PIC’s poseen ciertos componentes y funciones muy similares entre ellos, como lo es una memoria RAM, memoria EEPROM, memoria Flash, pines de E/S, modos de direccionamiento, rangos de alimentación y operación, modos de comunicación y arquitectura, entre otros.

     Por otra parte sus principales diferencias se basan en cuanto a las memorias de programa y/o de datos, ya que el PIC 16F877 posee mayores capacidades, además de que tiene un mayor número de timers e incorpora algunas operaciones extras como por ejemplo el covertidor A/D de 10 bits y los canales de PWM. Además de algunas otras como el número de pines, número de puertos paralelos y de interrupciones, etc. Pero básicamente se puede observar que el principio de operación es muy similar entre ambos microcontroladores, asimismo la forma de direccionar e interpretar la información.