Hola amigos este codigo lo comense en base a uno para el 16F84 y ahora lo quiero para el 16F628A, al momento de compilarlo no me da errores ni warning, y al simularlo en proteus no pasa nada, no se cual sera el problema he leido todos los tutoriales y he rebisado los codigos que he encontrado si me pueden ayudar. Gracias...
el codigo y adjunto la imagen de proteus...
; **** Encabezado ****
list p=16F628A ; Microcontrolador utilizado.-
#include P16F628A.inc ; Definicion de registros SFR.-
__CONFIG _INTOSC_OSC_NOCLKOUT & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _DATA_CP_OFF
;**** Definicion de Variables ****
CBLOCK 0x20 ; En esta posicion se declaran los registros de usuario (GPR)
estado
trisa
trisb
porta
portb
RET
RET1
RET2
PDel0
PDel1
llaves
endc
;**** Inicio del Microcontrolador ****
ORG 0x00
GOTO inicio
ORG 0x04
inicio movlw 0x07
movwf CMCON
BCF STATUS, RP0 ; cambio al banco 1 del pic
MOVLW b'00011111'
MOVWF trisa ; Asigna al puerto A como entrada
MOVLW 0x00
MOVWF trisb ; y Al puerto B como salida
BSF STATUS, RP0 ; Regresa al banco 0
CLRF porta ; limpia el puerto A
CLRF portb ; limpia el puerto B
swich MOVF porta,0 ; carga w con el puerto A
ANDLW b'00011111' ; retiene los 4 bits de interes (las llaves)
MOVWF llaves ; y los guarda en llaves
XORLW b'00000001' ; verifica si es el primer efecto
BTFSC estado,2 ; si es así
CALL estrobo ; lo llama y lo ejecuta
MOVF llaves,0 ; sino, carga llaves en w
XORLW b'00000010' ; y verifica si es el segundo efecto
BTFSC estado,2 ; si es así
CALL baliza ; lo llama y lo ejecuta
MOVF llaves,0 ; y así con los demás
XORLW b'00000100' ; ya me aburrí
BTFSC estado,2 ; como verás el resto es lo mismo
CALL der
MOVF llaves,0
XORLW b'00001000'
BTFSC estado,2
CALL izq
MOVF llaves,0
XORLW b'00000011'
BTFSC estado,2
CALL aeb
MOVF llaves,0
XORLW b'00000101'
BTFSC estado,2
CALL aed
MOVF llaves,0
XORLW b'00001001'
BTFSC estado,2
CALL aei
MOVF llaves,0
XORLW b'00001011'
BTFSC estado,2
CALL aeib
MOVF llaves,0
XORLW b'00000111'
BTFSC estado,2
CALL aedb
MOVF llaves,0
GOTO swich
;======================== Efectos =========================
estrobo
MOVLW B'00000001'
MOVWF PORTB
CALL DEMORA
CLRF PORTB
CALL DEMORA1
MOVLW B'00000001'
MOVWF PORTB
CALL DELAY
MOVLW B'00000001'
MOVWF PORTB
CALL DEMORA
CLRF PORTB
CALL DEMORA1
MOVLW B'00000001'
MOVWF PORTB
CALL DELAY
MOVLW B'00000010'
MOVWF PORTB
CALL DEMORA
CLRF PORTB
CALL DEMORA1
MOVLW B'00000010'
MOVWF PORTB
CALL DELAY
MOVLW B'00000010'
MOVWF PORTB
CALL DEMORA
CLRF PORTB
CALL DEMORA1
MOVLW B'00000010'
MOVWF PORTB
CALL DELAY
baliza
MOVLW b'00000111'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
der
MOVLW b'00000101'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
izq
MOVLW b'00000110'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
aeb
MOVLW b'00000111'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
aed
MOVLW b'00000101'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
aei
MOVLW b'00000110'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
aeib
MOVLW b'00000111'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
aedb
MOVLW b'00000111'
MOVWF PORTB
CALL clokon
MOVLW b'00000000'
MOVWF PORTB
CALL clokon
;**********RUTINA DE RETARDO***********
clokon MOVLW H'2'
MOVWF RET
LOOP2 MOVLW H'90'
MOVWF RET1
LOOP1 MOVLW H'90'
MOVWF RET2
LOOP DECFSZ RET2,F
GOTO LOOP
DECFSZ RET1,F
GOTO LOOP1
DECFSZ RET,F
GOTO LOOP2
RETURN
;=======================================
DEMORA movlw .090
movwf PDel0
PLoop1 movlw .090
movwf PDel1
PLoop2 clrwdt
PDelL1 goto PDelL2
PDelL2 goto PDelL3
PDelL3 clrwdt
decfsz PDel1, 1
goto PLoop2
decfsz PDel0, 1
goto PLoop1
PDelL4 goto PDelL5
PDelL5 goto PDelL6
PDelL6 goto PDelL7
PDelL7 clrwdt
return
;=======================================
DEMORA1 movlw .050
movwf PDel0
PLoop12 movlw .050
movwf PDel1
PLoop21 clrwdt
PDelL11 goto PDelL22
PDelL22 goto PDelL33
PDelL33 clrwdt
decfsz PDel1, 1
goto PLoop2
decfsz PDel0, 1
goto PLoop12
PDelL44 goto PDelL55
PDelL55 goto PDelL66
PDelL66 goto PDelL77
PDelL77 clrwdt
return
;======================================
DELAY MOVLW h'2'
MOVWF RET
LOOP21 MOVLW h'80'
MOVWF RET1
LOOP12 MOVLW h'80'
MOVWF RET2
BLOOP DECFSZ RET2,f
GOTO BLOOP
DECFSZ RET1,f
GOTO LOOP12
DECFSZ RET,f
GOTO LOOP21
return
END