ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Como Hacer Un Robot Casero


Enviado por   •  21 de Enero de 2013  •  3.358 Palabras (14 Páginas)  •  831 Visitas

Página 1 de 14

2

[pic]

Fig1. Diagrama esquemático de la práctica 2.

8. Implementación del experimento o sistema

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC & _LVP_OFF

include

List P=16f877a ;Tipo de procesador

cont equ 0x20 ;contador rutina retardo

index equ 0x21 ;índice de la tabla de codigos de 7 segmentos

nido equ 0x22 ;indice para el contador anidado

org 0 ;vector de reset

bsf STATUS,RP0 ;Banco 1

movlw 0x03

movwf TRISB ;RB1, RB0 entradas

movlw 0x00

movwf PORTD ;Puerto d salida

bcf STATUS,RP0 ;Banco 0

clrf index ;inicializamos registro en cero

rulo movf index,W

call tabla ;llama subrutina tabla

movwf PORTD ;envía código de 7 segmentos por el ;Puerto D

call retardo2s ;retardo de tiempo de 2 segundos

;algoritmo antirrebotes********************************************

btfss PORTB, 1

call ascendente

movlw 0x05

movwf cont

pollito nop

decfsz cont,1

goto pollito

btfss PORTB, 1

call ascendente

call descendente

;subrutinas*********************************************************

ascendente incf index,F ;incrementa conteo

movf index,W

xorlw 0x0A ;conteo =10?

btfsc STATUS,Z

clrf index ;si conteo es 10, reinicia la cuenta

goto rulo

descendente movf index,W

xorlw 0x00

movlw 0x0A

btfsc STATUS,Z

movwf index

decf index,F ;decrementa conteo

goto rulo

;******************************************************************

tabla

addwf PCL,F

retlw h'c0' ;código 0

retlw h'f9' ;código 1

retlw h'a4' ;código 2

retlw h'b0' ;código 3

retlw h'99' ;código 4

retlw h'92' ;código 5

retlw h'82' ;código 6

retlw h'f8' ;código 7

retlw h'00' ;código 8

retlw h'18' ;código 9

;******************************************************************

retardo2s movlw 0x02

movwf nido

retardo movlw 0xFF

movwf cont

nada nop

decfsz cont,1

goto nada

decfsz nido

goto retardo

return

End

-Encabezado-------------

LIST P=16F84

#include <P16F84luis.INC>

;-------Configuración de puertos-------

ORG 0x00

GOTO inicio

ORG 0x04

GOTO ISR

ORG 0X05

inicio BSF STATUS,RP0 ; configurando puertos

MOVLW 0x10

MOVWF TRISA ; RA0-RA3 = SALIDA

MOVLW 0xFF ; PORTB = ENTRADA

MOVWF TRISB

BCF STATUS,RP0

;-------Habilitación de interrupciones-------

BSF INTCON,GIE ; habilitamos todas las interrupciones

BSF INTCON,INTE ; que sean interrupciones externas

;-------Programa Principal-------

CLRF PORTA

espera SLEEP

GOTO espera ; El micro pasa a bajo consumo

ISR MOVF PORTA,W ; pasamos lo que hay en PORTA a W

XORLW B'1001' ; compara para saber si terminó la cuenta

BTFSC STATUS,Z ; si no terminó salta una linea

GOTO reini ; y si terminó irá a reiniciarla

INCF PORTA,F ; incrementa en 1 PORTA y lo retiene

BCF INTCON,INTF ; borro bandera de interrupción

RETFIE ; regresa al modo SLEEP

reini CLRF PORTA

BCF INTCON,INTF ; borro bandera de interrupción

RETFIE

;------------------------------------------

END

;------------------------------------------

Descripción

Y como siempre, sólo aquello que está en rojo, ya que lo demás lo conocemos desde sus inicios.

#include <P16F84luis.INC>

Respecto a esto no diré nada, ya lo mencioné al comenzar esta sección, vamos por lo otro.

Al configurar TRISA con 0x10 hemos dejado RA4 como entrada, de tal modo que enviemos lo que enviemos al registro PORTA, RA4 no será alterado.

De TRISB, bueno, si bien utilizaré sólo uno de sus pines, configuré todo el puerto B como entrada.

Luego viene la habilitación de interrupciones, la general (GIE), y la que corresponde al pin RB0 (INTE)

Lo siguiente, es limpiar el PORTA, para empezar la cuenta en cero, asi que...

CLRF PORTA

y el Display muestra cero "0".

Luego ponemos al micro en espera de la interrupción,

...

Descargar como (para miembros actualizados) txt (13 Kb)
Leer 13 páginas más »
Disponible sólo en Clubensayos.com