hola hice un programa para el pic 16f887 es la primera vez que lo use pues lo necesitaba y no encontre el 16f873 que ya estaba usando se que este tiene unas diferencias como que se alimenta de los dos lados y tiene un oscilador interno pero tengo el problema de que no me corre ya en el pic no puedo ni correr el programa mas sencillo de con un led en proteeus todo marcha bien la simulacion funciona tengo la sospecha que sea la configuracion de el oscilador o algo asi si alguien me puede ayudar aqui dejo el codigo.
;; ****G E N E R A L**** ;;
LIST P=16F887
#INCLUDE <P16F887.INC>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 0X20
PDel0, PDel1, PDel2
ENDC
ORG 0x000
BSF STATUS,RP0
CLRF TRISC
MOVLW 0X3F
MOVWF TRISB
MOVLW 0X3F
MOVWF TRISD
BCF STATUS,RP0
CLRF PORTC
INI BTFSS PORTD,2
GOTO INI
BTFSC PORTD,3
GOTO PRACTICA1
BTFSC PORTD,4
GOTO PRACTICA2
BTFSC PORTD,5
GOTO PRACTICA3
BTFSC PORTD,6
GOTO PRACTICA4
BTFSC PORTD,7
GOTO PRACTICA5
GOTO INI
PRACTICA1 ;;;;;;;;
;;;;;;;; P-P MAXIMO CICLO UNICO PP ;;;;;;;;
;PASO 1
BTFSS PORTD,2
GOTO INI
S1 MOVLW B'00010101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO S1
MOVLW B'00000001'
MOVWF PORTC
;PASO 2
S2 MOVLW B'00010110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO S2
MOVLW B'00000111'
MOVWF PORTC
;PASO 3
S3 MOVLW B'00101010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO S3
MOVLW B'00000110'
MOVWF PORTC
;PASO 4
S4 MOVLW B'00101001'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO S4
MOVLW B'00000100'
MOVWF PORTC
;PASO 5
S5 MOVLW B'00100101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO S5
MOVLW B'00000000'
MOVWF PORTC
GOTO PRACTICA1
PRACTICA2
;;;;;;;; BANDERAS PARO PRIORITARIO ;;;;;;;;
;PASO 1
BTFSS PORTD,2
GOTO INI
F1 MOVLW B'00010101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO F1
MOVLW B'00000001'
MOVWF PORTC
;PASO 2
F2 MOVLW B'00010110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO F2
MOVLW B'00000111'
MOVWF PORTC
;PASO 3
F3 MOVLW B'00101010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO F3
MOVLW B'00000101'
MOVWF PORTC
;PASO 4
F4 MOVLW B'00100110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO F4
MOVLW B'00000000'
MOVWF PORTC
GOTO PRACTICA2
PRACTICA3
;;;;;;;; P3 2 pistones PP ;;;;;;;;
;PASO 1
BTFSS PORTD,2
GOTO INI
G1 MOVLW B'00000101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G1
MOVLW B'00000011'
MOVWF PORTC
;PASO 2
G2 MOVLW B'00001010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G2
MOVLW B'00000000'
MOVWF PORTC
;PASO 3
G3 MOVLW B'00000101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G3
MOVLW B'00000001'
MOVWF PORTC
;PASO 4
G4 MOVLW B'00000110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G4
MOVLW B'00000011'
MOVWF PORTC
;PASO 5
G5 MOVLW B'00001010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G5
MOVLW B'00000010'
MOVWF PORTC
;PASO 6
G6 MOVLW B'00001001'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO G6
MOVLW B'00000000'
MOVWF PORTC
GOTO PRACTICA3
PRACTICA4
;;;;;;;; BANDERAS PARO PRIORITARIO ;;;;;;;;
;PASO 1
BTFSS PORTD,2
GOTO INI
H1 MOVLW B'00010101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO H1
MOVLW B'00000001'
MOVWF PORTC
;PASO 2
H2 MOVLW B'00010110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO H2
MOVLW B'00000111'
MOVWF PORTC
CALL T10S
;PASO 3
H3 MOVLW B'00101010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO H3
MOVLW B'00000101'
MOVWF PORTC
;PASO 4
H4 MOVLW B'00100110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO H4
MOVLW B'00000000'
MOVWF PORTC
GOTO PRACTICA4
PRACTICA5
;;;;;;;; 2 PISTONES ;;;;;;;;
;PASO 1
BTFSS PORTD,2
GOTO INI
P1 MOVLW B'00000101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P1
MOVLW B'00000011'
MOVWF PORTC
;PASO 2
P2 MOVLW B'00001010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P2
MOVLW B'00000000'
MOVWF PORTC
CALL T10S
;PASO 3
P3 MOVLW B'00000101'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P3
MOVLW B'00000001'
MOVWF PORTC
;PASO 4
P4 MOVLW B'00000110'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P4
MOVLW B'00000011'
MOVWF PORTC
;PASO 5
P5 MOVLW B'00001010'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P5
MOVLW B'00000010'
MOVWF PORTC
;PASO 6
P6 MOVLW B'00001001'
SUBWF PORTB,W
BTFSS STATUS,Z
GOTO P6
MOVLW B'00000000'
MOVWF PORTC
GOTO PRACTICA5
T10S movlw .167 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop0 movlw .41 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .72 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
END