6

Click here to load reader

Bolascriollas

Embed Size (px)

Citation preview

Page 1: Bolascriollas

EJERCICIO REALIZADO EN CLASES SOBRE EL MARCADOR DE LA

CANCHA DE BOLAS CRIOLLAS

(MISMO DIAGRAMA DE FLUJO DADO EN CLASES)

PASO 2. DIAGRAMAS DE FLUJO. PROGRAMA PRINCIPAL

Page 2: Bolascriollas

SUBRUTINA MOSTRAR

MOSTRAR

UNIV → PORTA

Display UNIV= ONRESTO DISPLAYS OFF

Delay 5 ms

Return

Delay 5 ms

La sacamos del PDEL

ReturnBIN A BCD ROJAS

BIN A BCD VERDES

DECV → PORTA

Display DECV= ONRESTO DISPLAYS OFF

Delay 5 ms

UNIR → PORTA

Display UNIR= ONRESTO DISPLAYS OFF

Delay 5 ms

DECV → PORTA

Display DECR= ONRESTO DISPLAYS OFF

Delay 5 ms

Page 3: Bolascriollas

PASO 3. PROGRAMA EN LENGUAJE ENSAMBLADOR

LIST P=16F84AINCLUDE P16F84A.INC

;**************************;DECLARACIÓN DE REGISTROS=;**************************UNIV EQU 20HDECV EQU 21HUNIR EQU 22HDECR EQU 23HCONTAV EQU 24HCONTAR EQU 25HCOPIA EQU 26HPDel0 EQU 27H;**************************

ORG 00HGOTO INICIO

INICIO BSF STATUS,5CLRF TRISAMOVLW B'00001111'MOVWF TRISBBCF STATUS,5CLRF UNIVCLRF DECVCLRF UNIRCLRF DECRCLRF CONTAVCLRF CONTAR

EME CALL MOSTRARBTFSC PORTB,0 ;+1V=0?GOTO SIGUE1 ;NO. VA A -1V

ANTIREB1 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MSBTFSS PORTB,0 ;+1V=1?GOTO ANTIREB1MOVF CONTAV,0SUBLW .24BTFSS STATUS,2 ;Z=1? CONTAV=24?GOTO SUBEVGOTO EME

SUBEV INCF CONTAV,1 ;CONTAV=CONTAV+1GOTO EME

SIGUE1 BTFSC PORTB,1 ;-1V=0?GOTO SIGUE2 ;VA A +1R

ANTIREB2 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MSBTFSS PORTB,1 ;-1V=1?GOTO ANTIREB2MOVF CONTAV,0

Page 4: Bolascriollas

SUBLW .0BTFSS STATUS,2 ;Z=1? CONTAV=0?GOTO BAJAVGOTO EME

BAJAV DECF CONTAV,1 ;CONTAV=CONTAV-1GOTO EME

SIGUE2 BTFSC PORTB,2 ;+1R=0?GOTO SIGUE3 ;NO. VA A -1R

ANTIREB3 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MSBTFSS PORTB,2 ;+1R=1?GOTO ANTIREB3MOVF CONTAR,0SUBLW .24}BTFSS STATUS,2 ;Z=1? CONTAR=24?GOTO SUBERGOTO EME

SUBER INCF CONTAR,1 ;CONTAR=CONTAR+1GOTO EME

SIGUE3 BTFSC PORTB,3 ;-1R=0?GOTO EME

ANTIREB4 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MSBTFSS PORTB,3 ;-1R=1?GOTO ANTIREB4MOVF CONTAR,0SUBLW .0BTFSS STATUS,2 ;Z=1? CONTAR=0?GOTO BAJARGOTO EME

BAJAR DECF CONTAR,1 ;CONTAR=CONTAR-1GOTO EME

;**************************************************;RUTINA MOSTRAR(INCLUYE CONVERSIONES BINARIO A BCD);**************************************************MOSTRAR CALL BIN_BCDV

CALL BIN_BCDRBCF PORTB,7 ;DISPLAY DECROJO OFFBCF PORTB,6 ;DISPLAY UNIROJO OFFBCF PORTB,5 ;DISPLAY DECVERDE OFFBSF PORTB,4 ;DISPLAY UNIVERDE ONMOVF UNIV,0MOVWF PORTA ;UNIV A PORTACALL DELAY5MSBCF PORTB,7 ;DISPLAY DECROJO OFFBCF PORTB,6 ;DISPLAY UNIROJO OFFBSF PORTB,5 ;DISPLAY DECVERDE ONBCF PORTB,4 ;DISPLAY UNIVERDE OFFMOVF DECV,0MOVWF PORTA ;DECV A PORTA

Page 5: Bolascriollas

CALL DELAY5MSBCF PORTB,7 ;DISPLAY DECROJO OFFBSF PORTB,6 ;DISPLAY UNIROJO ONBCF PORTB,5 ;DISPLAY DECVERDE OFFBCF PORTB,4 ;DISPLAY UNIVERDE OFFMOVF UNIR,0MOVWF PORTA ;UNIR A PORTACALL DELAY5MSBSF PORTB,7 ;DISPLAY DECROJO ONBCF PORTB,6 ;DISPLAY UNIROJO OFFBCF PORTB,5 ;DISPLAY DECVERDE OFFBCF PORTB,4 ;DISPLAY UNIVERDE OFFMOVF DECR,0MOVWF PORTA ;DECR A PORTACALL DELAY5MSRETURN

;******************************;RUTINA DE BINARIO A BCD VERDE:;******************************BIN_BCDV CLRF UNIV

CLRF DECVCLRF COPIAMOVF CONTAV,0MOVWF COPIA

SUBEDV MOVLW .10SUBWF COPIA,1BTFSC STATUS,0GOTO SUBEDECVGOTO SUBEUV

SUBEDECV INCF DECV,1GOTO SUBEDV

SUBEUV MOVLW .10ADDWF COPIA,1

SUBEU2V MOVLW .1SUBWF COPIA,1BTFSS STATUS,0RETURN ;SALE DE LA SUBRUTINA

SUBEU3V INCF UNIV,1GOTO SUBEU2V

;******************************;RUTINA DE BINARIO A BCD ROJO:;******************************BIN_BCDR CLRF UNIR

CLRF DECRCLRF COPIAMOVF CONTAR,0MOVWF COPIA

SUBEDR MOVLW .10

Page 6: Bolascriollas

SUBWF COPIA,1BTFSC STATUS,0GOTO SUBEDECRGOTO SUBEUR

SUBEDECR INCF DECR,1GOTO SUBEDR

SUBEUR MOVLW .10ADDWF COPIA,1

SUBEU2R MOVLW .1SUBWF COPIA,1BTFSS STATUS,0RETURN ;SALE DE LA SUBRUTINA

SUBEU3R INCF UNIR,1GOTO SUBEU2R

;;;RUTINA 5MS GENERADA DEL PDEL;DELAY5MS movlw .248 ; 1 set numero de repeticion

movwf PDel0 ; 1 |PLoop0 clrwdt ; 1 clear watchdog

decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ?goto PLoop0 ; 2 no, loop

PDelL1 goto PDelL2 ; 2 ciclos delayPDelL2 clrwdt ; 1 ciclo delay

return ; 2+2 Fin.END

PASO 4. CIRCUITO EN PROTEUS: