Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/03/2009 #21


Ahora lo he puesto asi y parece que funciona, lo único que pasa es que empieza desde 6 no desde cero como es de suponer.Pero por lo menos ya trabaja algo el programa.
Gracias a todos por responder.

Código:
CALL     MAYOR
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	ES_CERO
        CALL     MAYOR_1
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	UNO
        CALL     MAYOR_2
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	DOS 
        CALL     MAYOR_3
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	TRES
        CALL     MAYOR_4
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	CUATRO
        CALL     MAYOR_5
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	CINCO
        CALL     MAYOR_6
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	SEIS
        CALL     MAYOR_7
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	SIETE
        CALL     MAYOR_8
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	OCHO
        CALL     MAYOR_9
	SUBLW	0X00
	BTFSS	STATUS,Z
	GOTO	NUEVE
        CALL     MAYOR_10



MAYOR
        
        MOVF	DATO1H,W
	SUBLW	0x00
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x00
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1	; si DATO1<CONSTANTE

MAYOR_1
        
        MOVF	DATO1H,W
	SUBLW	0x00
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x66
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1

MAYOR_2
        
        MOVF	DATO1H,W
	SUBLW	0x00
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0xcc
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


MAYOR_3
        
        MOVF	DATO1H,W
	SUBLW	0x01
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x33
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1
        


MAYOR_4
        
        MOVF	DATO1H,W
	SUBLW	0x01
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x99
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1       


MAYOR_5
        
        MOVF	DATO1H,W
	SUBLW	0x01
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0xff
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


MAYOR_6
        
        MOVF	DATO1H,W
	SUBLW	0x02
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x65
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


MAYOR_7
        
        MOVF	DATO1H,W
	SUBLW	0x02
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0xcc
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1

MAYOR_8
        
        MOVF	DATO1H,W
	SUBLW	0x03
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x32
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


MAYOR_9
        
        MOVF	DATO1H,W
	SUBLW	0x03
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0x98
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


MAYOR_10
        
        MOVF	DATO1H,W
	SUBLW	0x03
	BTFSS	STATUS,C     ; BRINCA SI DATO2H>=DATO1H
	RETLW	.0           ; DEVUELVE 0 INDICANDO QUE DATO1>DATO2	
	BTFSS	STATUS,Z     ; BRINCA SI NULO
	RETLW	.1	     ; DEVUELVE 1 INDICANDO QUE DATO1<DATO2
	MOVF	DATO1L,W     ; COMPARA LA PARTE BAJA CUANDO LAS PARTES ALTAS SON IGUALES
	SUBLW	0xff
	BTFSS	STATUS,C	
	RETLW	.0
	RETLW	.1


        



ES_CERO        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_D
        BSF     DIS_F
        BSF     DIS_E
        BSF     DIS_B
        BSF     DIS_C
        
        GOTO    INICIO

UNO	
        CLRF    PORTD
        BSF     DIS_B
        BSF     DIS_C
        
        GOTO    INICIO
        
DOS        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_B
        BSF     DIS_G
        BSF     DIS_E
        BSF     DIS_D
	
        GOTO    INICIO
        
TRES        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_B
        BSF     DIS_G
        BSF     DIS_C
        BSF     DIS_D
        
        GOTO    INICIO
        
CUATRO        
        CLRF    PORTD
        BSF     DIS_F
        BSF     DIS_G
        BSF     DIS_B
        BSF     DIS_C
        
        GOTO    INICIO
CINCO        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_F
        BSF     DIS_G
        BSF     DIS_C
        BSF     DIS_D
        
        GOTO    INICIO
       
SEIS        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_F
        BSF     DIS_G
        BSF     DIS_E
        BSF     DIS_C
        BSF     DIS_D
       
        GOTO    INICIO
        
SIETE        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_B
        BSF     DIS_C
        
        GOTO    INICIO
        
OCHO        
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_F
        BSF     DIS_G
        BSF     DIS_B
        BSF     DIS_E
        BSF     DIS_C
        BSF     DIS_D
        
        GOTO    INICIO
        
NUEVE
        CLRF    PORTD
        BSF     DIS_A
        BSF     DIS_F
        BSF     DIS_G
        BSF     DIS_B
        BSF     DIS_C
	
        GOTO    INICIO

        END
19/03/2009 #22

Avatar de Meta

Miren en la ayuda y utilicen DIRECTIVAS que son estas.

(.5-.3)<=.10 ;

Se parece a C, y ayuda mucho.
19/03/2009 #23


Como dije la vez pasada si los valores son multiplos de 102 lo que da adc=0.5V entoces se resume el programa. Se reduce tal es asi que se ahorra 50% de codigo.
Si quieren un ejemplo se lo agrego en mi proximo mensaje.
20/03/2009 #24


cristian_elect dijo:
Como dije la vez pasada si los valores son multiplos de 102 lo que da adc=0.5V entoces se resume el programa. Se reduce tal es asi que se ahorra 50% de codigo.
Si quieren un ejemplo se lo agrego en mi proximo mensaje.

Pon un ejemplo si quieres.
22/03/2009 #25

Avatar de Meta

Código:
if version == 100; 
  movlw 0x0a
  movwf io_1
else
  movlw 0x01a
  movwf io_2
endif
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.