Hola, tengo que pasar varias practicas de ensamblador a C y estoy lleno de dudas. el codigo en ensamblador si que lo tengo pero no sé muy bien como pasarlo...si me pudieseis ayudar, os dejo aquí el programa...
;*************************************************************************
; TEMA_2.ASM
; Lector de datos digitales. El sistema visualizar en el PORTD los datos
; digitales que se presenten mediante 8 interruptores en el PORTB. Estos
; datos se visualizar n si el bit menos significativo del PortA
; se encuentra activado, en caso contrario se apagar n todos los LEDs.
;*************************************************************************
LIST P=16F877A ; PIC16F877A microcontrolador utilizado
INCLUDE "P16F877A.INC"
; Registros particulares del programa
TMP1 equ 0x20
; Constantes
W equ 0
F equ 1
;*************************************************************************
; INICIO DEL PROGRAMA
;*************************************************************************
org 00
GOTO START ; Posición comienzo programa para simulador
org 04
GOTO INT ; Posici n comienzo interrupciones
GOTO START ; Posici n comienzo programa para grabar
;*************************************************************************
; INTERRUPCIONES
;*************************************************************************
INT:
RETFIE ; Fin de la interrupci n
;*************************************************************************
; PROGRAMA PRINCIPAL
;*************************************************************************
START
CLRF INTCON ; Eliminar posibles interrupciones
BCF STATUS,RP0 ; Banco 0 (asegurar)
BCF STATUS,RP1 ;
; Inicializaci n de puertos
BSF STATUS,RP0 ; Banco 1
MOVLW B'00111111'
MOVWF TRISA&7F ; A5-A0 entrada
MOVLW B'00000111'
MOVWF ADCON1&7F ; Puerto A digital
MOVLW B'11111111'
MOVWF TRISB&7F ; B7-B0 entrada
MOVLW B'10111111'
MOVWF TRISC&7F ; C5-C0 entrada, C7 y C6 reservados l nea serie
MOVLW B'00000000'
MOVWF TRISD&7F ; D7-D0 salida
MOVLW B'00000000'
MOVWF TRISE&7F ; E2-E0 salida
BCF STATUS,RP0 ; Banco 0
;*************************************************************************
; BUCLE DEL PROGRAMA
;*************************************************************************
BUCLE
MOVF PORTA,W ; Leer PORTA al acumulador
MOVF PORTC,W ; Leer PORTB al acumulador
MOVLW B'10101100'
BTFSS PORTA,2 ; Test PORTA2
GOTO LEER_PORTC
MOVLW B'10101010' ; Cargar dato inmediato al acumulador
GOTO ESCRIBIR_PORTC
LEER_PORTC:
MOVF PORTC,W ; Leer PORTC al acumulador
ESCRIBIR_PORTC:
MOVWF PORTD ; Escribir en PORTD
GOTO BUCLE
NOP
NOP
NOP
end
;*************************************************************************
; TEMA_2.ASM
; Lector de datos digitales. El sistema visualizar en el PORTD los datos
; digitales que se presenten mediante 8 interruptores en el PORTB. Estos
; datos se visualizar n si el bit menos significativo del PortA
; se encuentra activado, en caso contrario se apagar n todos los LEDs.
;*************************************************************************
LIST P=16F877A ; PIC16F877A microcontrolador utilizado
INCLUDE "P16F877A.INC"
; Registros particulares del programa
TMP1 equ 0x20
; Constantes
W equ 0
F equ 1
;*************************************************************************
; INICIO DEL PROGRAMA
;*************************************************************************
org 00
GOTO START ; Posición comienzo programa para simulador
org 04
GOTO INT ; Posici n comienzo interrupciones
GOTO START ; Posici n comienzo programa para grabar
;*************************************************************************
; INTERRUPCIONES
;*************************************************************************
INT:
RETFIE ; Fin de la interrupci n
;*************************************************************************
; PROGRAMA PRINCIPAL
;*************************************************************************
START
CLRF INTCON ; Eliminar posibles interrupciones
BCF STATUS,RP0 ; Banco 0 (asegurar)
BCF STATUS,RP1 ;
; Inicializaci n de puertos
BSF STATUS,RP0 ; Banco 1
MOVLW B'00111111'
MOVWF TRISA&7F ; A5-A0 entrada
MOVLW B'00000111'
MOVWF ADCON1&7F ; Puerto A digital
MOVLW B'11111111'
MOVWF TRISB&7F ; B7-B0 entrada
MOVLW B'10111111'
MOVWF TRISC&7F ; C5-C0 entrada, C7 y C6 reservados l nea serie
MOVLW B'00000000'
MOVWF TRISD&7F ; D7-D0 salida
MOVLW B'00000000'
MOVWF TRISE&7F ; E2-E0 salida
BCF STATUS,RP0 ; Banco 0
;*************************************************************************
; BUCLE DEL PROGRAMA
;*************************************************************************
BUCLE
MOVF PORTA,W ; Leer PORTA al acumulador
MOVF PORTC,W ; Leer PORTB al acumulador
MOVLW B'10101100'
BTFSS PORTA,2 ; Test PORTA2
GOTO LEER_PORTC
MOVLW B'10101010' ; Cargar dato inmediato al acumulador
GOTO ESCRIBIR_PORTC
LEER_PORTC:
MOVF PORTC,W ; Leer PORTC al acumulador
ESCRIBIR_PORTC:
MOVWF PORTD ; Escribir en PORTD
GOTO BUCLE
NOP
NOP
NOP
end