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