Problemas para terminar un programa

Hola a todos una vez mas solicito un poco de orientación esta vez con un programa.

La verdad soy nuevo en la programación en ensamblador, estoy usando el mplab de microchip y quiero programar el 18f2455. Esto es lo que necesito que haga el programa.

Usando ya sea el puerto A como entradas y que al momento de recibir un pulso en este caso un 1 en cualquier pin de este puerto se mande una señal de salida a cualquier pin de un puerto de salida B.

Aqui tengo una parte del codigo que estoy haciendo pero tengo probemas para hacer lo que quiero hacer.

ORG 0X000800 ;RESET VECTOR
BRA START

START ; SETUP I/O PORTS
CLRF PORTA ; HABILITAR PUERTO A
SETF TRISA ; PUERTO A COMO ENTRADAS
MOVWF ADCON1 ; PORT A TODO DIGITALES ENTRADAS
MOVLW 07h ; CONFIGURAR LOS COMPARADORES
MOVLW 0CFh ; INICIALIZAR DIRECCIONES DE DATOS
MOVF PORTA,W ; LEE EL VALOR DE LAS VARIABLES DE ENTRADA
GOTO COMPARA
COMPARA
CPFSGT F,W ; COMPARA REGISTROS
BSF STATUS,RP0 ; ACCESO AL BANCO 1
CLRF PORTB ; LIMPIAR EL PUERTO B COMO SALIDA
MOVLW B'00000000' ; CAMBIAR EN MODO DEBUGGER B6
MOVWF TRISB ; MOVER DATO DE W AL F

END

Cualquier orientación que me puedan dar para completar este programa es bienvenido. Puesto que me encuentro atorado con el desarrollo de este programa.

Saludos
 
En este ejemplo el PORTA se encuentra atraves de resistencia a un valor alto 5V
cuando aparece un nivel bajo en cualquier entrada A ,el PORTB cambia de estado
if PortA.0=0 Portb.0=1
;----------------------------------------------------------
; Code producido por Manny

Code original escrito en Proton
proyect name Inputoutput
;----------------------------------------------------------
NOLIST
#include "C:\PROGRAM FILES\PROTONIDELITE\INPUTOUPUT.PBP"
LIST

_A = 0
F2_SOF equ $ ; INPUTOUPUT.PRP
F2_EOF equ $ ; INPUTOUPUT.PRP
F1_SOF equ $ ; INPUTOUPUT.BAS
F1_000016 equ $ ; in [INPUTOUPUT.BAS] TRISA=%11111111 'convirte el porta entrada
Setf TRISA,0
F1_000017 equ $ ; in [INPUTOUPUT.BAS] TRISB=%00000000 'conviete el portb en salida
Clrf TRISB,0
F1_000019 equ $ ; in [INPUTOUPUT.BAS] ADCON1=%00001111 'convierte porta en entrada digital
Movlw 15
Movwf ADCON1,0
F1_000020 equ $ ; in [INPUTOUPUT.BAS] Input PORTA
Setf TRISA,0
F1_000021 equ $ ; in [INPUTOUPUT.BAS] Output PORTB
Clrf TRISB,0
F1_000022 equ $ ; in [INPUTOUPUT.BAS] PORTB=0
Clrf PORTB,0
F1_000023 equ $ ; in [INPUTOUPUT.BAS] PORTA=1
Movlw 1
Movwf PORTA,0
DETECTOR
F1_000026 equ $ ; in [INPUTOUPUT.BAS] Input PORTA
Setf TRISA,0
F1_000028 equ $ ; in [INPUTOUPUT.BAS] If PORTA.0=0 Then
Btfsc PORTA,0,0
Go@to bc@LL2
F1_000029 equ $ ; in [INPUTOUPUT.BAS] PORTB.0=0
Bcf PORTB,0,0
F@Jump bc@LL3
bc@LL2
F1_000030 equ $ ; in [INPUTOUPUT.BAS] Else
F1_000031 equ $ ; in [INPUTOUPUT.BAS] PORTB.0=1
Bsf PORTB,0,0
F1_000032 equ $ ; in [INPUTOUPUT.BAS] End If
bc@LL3
F1_000035 equ $ ; in [INPUTOUPUT.BAS] If PORTA.1=0 Then
Btfsc PORTA,1,0
Go@to bc@LL5
F1_000036 equ $ ; in [INPUTOUPUT.BAS] PORTB.1=1
Bsf PORTB,1,0
F@Jump bc@LL6
bc@LL5
F1_000037 equ $ ; in [INPUTOUPUT.BAS] Else
F1_000038 equ $ ; in [INPUTOUPUT.BAS] PORTB.1=0
Bcf PORTB,1,0
F1_000039 equ $ ; in [INPUTOUPUT.BAS] End If
bc@LL6
F1_000043 equ $ ; in [INPUTOUPUT.BAS] GoTo detector
F@Jump DETECTOR
F1_EOF equ $ ; INPUTOUPUT.BAS
LIST
End
 

Adjuntos

  • inputoutput_914.gif
    inputoutput_914.gif
    6.6 KB · Visitas: 158
Atrás
Arriba