You are on page 1of 4

; SISTEMA DE GOBIERNO DESDE ORDENADOR: Desde el teclado de un ordenador se desea

comandar
; el movimiento de una estructura móvil, según la siguiente tabla:
;
TECLA (Por ejemplo)
MOVIMIENTO
;
---------------------------;
t
Adelante
;
b
Atrás
;
Espacio
Parada
; La pulsación de cualquiera de estas teclas activa el estado de las salidas corre
spondiente
; RB3 (Adelante), RB2 (Atrás) y apaga el resto.
;
; El movimiento que se está realizando aparece reflejado en un mensaje en el visua
lizador LCD
; del sistema y también en la pantalla del ordenador.
;
; El programa debe permitir modificar facilmente en posteriores revisiones en el
hardware de
; la salida. Es decir, para activar las salidas conviene utilizar el direccionam
iento por bit
; en lugar de por byte (utilizar instrucciones "bsf" y "bcf", en lugar de "mov..
").
PUERTO A=ENTRADA /1=ENTRADA
PUERTO B=SALIDA /0=SALIDA
; ZONA DE DATOS ****************************************************************
******
LIST
P=16F84A
INCLUDE
<P16F84A.INC>
__CONFIG
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C

Ciclos_ON
Ciclos_OFF
GuardaEntrada

TeclaPulsada
ido de la tecla pulsada.
MensajeApuntado
del mensaje apuntado.
ENDC
#DEFINE SalidaAdelante
#DEFINE SalidaAtras
TECLA_ADELANTE
EQU
TECLA_ATRAS
EQU
TECLA_PARADA
EQU
espacio,

MAX_ENTRDA

EQU

; Va a guardar el conten
; Va a guarda la dirección
PORTB,3 ; Define dónde se sitúan las salidas.
PORTB,2
't'
; Código de las teclas utilizadas.
'b'
' '
; Código de la tecla espaciadora, (hay un

.10

; ZONA DE CÓDIGOS ****************************************************************

bcf STATUS. xorlw TECLA_ATRAS . ¿Es la tecla del movimiento haci a adelante? btfsc STATUS.W . RA3:RA0 como entradas. Las líneas del Puerto B Principal call RS232_LeeDato .RP0 call Parado odas las salidas deben estar apagadas.RP0 salidas las 4 líneas del bcf SalidaAdelante espetando la configuración del bcf SalidaAtras eas.W . Configura como . resto de las lín . "Mensajes" --------------------------------------------------------------------------Mensajes addwf PCL. Recupera el contenido de la te cla pulsada. ¿Es la tecla del movimie nto hacia atrás? btfsc STATUS.**** ORG 0 Inicio call LCD_Inicializa call RS232_Inicializa bsf STATUS. Guarda el contenido de la tecl a pulsada. movlw b'00001111' movwf TRISA clrf TRISB se configuran como salidas.Z goto Atras . xorlw TECLA_ADELANTE . del Puerto B r . 0x00 MensajeAdelante DT "Marcha ADELANTE".Z goto Adelante . se desea movimiento hacia atrás. se desea movimiento hacia adelante. Sí. Espera a recibir un carácter. Subrutina "TesteaTeclado" -----------------------------------------------------------. movf TeclaPulsada. Testea el teclado y actúa en consecuencia. TesteaTeclado movwf TeclaPulsada . call TesteaTeclado goto Principal .F MensajeParado DT "Sistema PARADO". . . Recupera el contenido de la te . Sí. . 0x00 . . movf TeclaPulsada. En principio t . 0x00 MensajeAtras DT "Marcha ATRAS".

btfss STATUS. call RS232_LineasBlanco . Ha resultado (PORTA>10) . (W)=10-(PORTA) . Como se ha pulsado la tecla de parada se bcf SalidaAtras . el monitor del ordenador. Parado bcf SalidaAdelante . Según el estado de las salidas visualiza el estado del sistema en el visualizado r LCD y en . call RS232_LineasBlanco movf de entrada. No es ninguna tecla de movimiento.Z DC_100PorCiento STATUS. ¿(W) positivo?.cla pulsada. Guarda el valor.W Ciclos_ON .W . Guarda la posición del mensaje. Visualiza movwf MensajeApuntado . Borra la pantalla del modulo LCD. Borra la pantalla del ordenado r. . movf movwf os_ON). Si RA3:RA0=0 el motor . ¿Es la tecla de parada?. Carga RA3:RA0 en (Cicl . movf MensajeApuntado. 10-(PORTA)-->(Ciclos_O .C DC_CeroPorCiento Ciclos_OFF GuardaEntrada. goto sublw btfsc goto btfss TA)<=10? goto movwf FF). andlw movwf btfsc se detiene. xorlw TECLA_PARADA . desactivan tod as las salidas. ¿(POR . Sale.W call RS232_Mensaje . movf MensajeApuntado. ¿C=1?. PORTA.Z goto Fin . Visualiza el mensaje en la pan talla call LCD_Mensaje . movlw MensajeParado goto Visualiza Adelante bcf SalidaAtras bsf SalidaAdelante movlw MensajeAdelante goto Visualiza Atras bcf SalidaAdelante bsf SalidaAtras movlw MensajeAtras goto Visualiza . Lo visualiza en el HyperTermin al. call LCD_Borra .W b'00001111' GuardaEntrada STATUS.Z DC_CeroPorCiento MAX_ENTRADA STATUS. del visualizador LCD. Lee el puerto .

Habilita los drivers y .INC> <LCD_MENS. Si (Ciclos_ON)=0 salta . Habilita los drivers y .INC> <LCD_4BIT. Inhabilita los drivers . Si (Ciclos_OFF)=0 salta a Prin . goto Motor_ON+2 Motor_OFF clrf PORTB .INC> <RETARDOS.F cipal.INC> . goto Fin DC_100PorCiento movlw b'00010010' un sentido de giro.INC> <RS232MEN.F a Motor_OFF. Motor parado. call Retardo_1ms decfsz Ciclos_OFF. movwf PORTB call Retardo_1ms decfsz Ciclos_ON. Motor parado. movwf PORTB Fin return INCLUDE INCLUDE INCLUDE INCLUDE INCLUDE END <RS232.Motor_ON movlw b'00010010' un sentido de giro. goto Motor_OFF+1 goto Fin DC_CeroPorCiento clrf PORTB . Inhabilita los drivers .