Hola amigos no conozco nada de assembler y tengo un pic que al quemar con el codigo que voy a poner abajo no consigo lo esperado ! la verdad no entiendo el codigo pero me doy una muy leve imaginacion por que soy programdador junior en delphi !
si me pueden ayudar estare muy agradecido y si no tambien jeje
!
el codigo :
;***********************************************************************************
;Este programa muestra en un display 7 segmentos los numero del 0 al 9 cada vez que
;se presiona el pulsador SW1.
;***********************************************************************************
list p=16F84A ; list directive to define processor
#include <p16F84A.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;*******************************VARIABLE DEFINITIONS********************************
w_temp EQU 0x0C ; variable used for context saving
status_temp EQU 0x0D ; variable used for context saving
NUMERO EQU 0X0E ; variable usada por la rutina CONVER
;**********************************VECTOR RESET*************************************
ORG 0x000 ; processor reset vector
goto MAIN ; go to beginning of program
;*******************************VECTOR DE INTERRUPCION*******************************
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;**********************************PROGRAMA PRINCIPAL********************************
MAIN
BSF STATUS,RP0 ;paso al banco 1 de la RAM
MOVLW B'01000'
MOVWF TRISA ;configuro el registro puerto A
MOVLW B'00000000'
MOVWF TRISB ;configuro el registro del puerto B
BCF STATUS,RP0 ;paso al banco 0 de la RAM
CLRF PORTA ;limpio el puerto A
CLRF PORTB ;limpio el puerto B
CLRF NUMERO ;limpio el registro NUMERO
INI BTFSC PORTA,3 ;pregunto si se activo el pulsador
GOTO INI
INI1 BTFSS PORTA,3 ;pregunto si se desactivo el pulsador
GOTO INI1
CALL CONVER ;llamo a la rutina CONVER que permite representar la variable numero en un display de 7 entos
MOVWF PORTB ;paso el valor de W al puerto B
INCF NUMERO,1 ;incremento el registro NUMERO
GOTO INI ;voy a INI
CONVER MOVF NUMERO,W ;paso NUMERO a W
ADDWF PCL,F ;sumo a PCL el valor de W
RETLW 0X7F ;retorno con W = 0x7F
RETLW 0X0C ;retorno con W = 0x0C
RETLW 0XB6 ;retorno con W = 0xB6
RETLW 0X9E ;retorno con W = 0x9E
RETLW 0xCC ;retorno con W = 0xCC
RETLW 0xDA ;retorno con W = 0xDA
RETLW 0XFA ;retorno con W = 0xFA
RETLW 0X0F ;retorno con W = 0x0F
RETLW 0XFF ;retorno con W = 0xFF
RETLW 0XCE ;retorno con W = 0xCE
END ;fin de programa
Saludos