Estoy teniendo problemas para obtener ciertos pines en mi microcontrolador ( PIC16F1933 ) trabajando como salidas . He estado simulando el código en Proteus Design Suite por Labcenter Electronics y no alterna todos los pines correctamente, lo que supongo que es un problema con el código. Los pines con los que más tengo problemas son PB1, PC0 y amp; PC3. He revisado la hoja de datos y he intentado apagar todos los periféricos que podrían estar causando el problema, pero nada parece haberlo resuelto.
LIST p=16F1933 ; Tell assembler what chip we are using
include "P16F1933.inc" ; Include the defaults for the chip
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_ON & _IESO_OFF & _FCMEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _VCAPEN_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_19 & _LVP_ON
ORG 0x0000 ; Processor reset vector
PAGESEL START
GOTO START ; When using debug header, first inst.
ORG 0x0005
START ; Turn on 16MHz OSC and select 8MHz
banksel OSCCON
bsf OSCCON, IRCF3 ; 1110 = 8MHz HF
bsf OSCCON, IRCF2
bsf OSCCON, IRCF1
bcf OSCCON, IRCF0
bsf OSCCON, SCS1 ; Internal osc block
; Wait for the internal oscillator to stablise
btfss OSCSTAT, HFIOFS ; HFIOFS: stable (0.5%)
goto OSCWAIT
; Initialize I/O pins
INITPIC
movlw b'00000000' ; Least significant bits [3..0] to be set as outputs
movwf TRISA ; Set as Port A lower four pins as output for L198 - 1
movwf TRISB ; Set as Port B lower four pins as output for L198 - 2
movwf TRISC ; Set as Port C lower four pins as output for LEDs
movlw b'00000000' ; Set all pins to not be analogue inputs
movwf ANSELA ; Set PORTA pins not be analogue input
movwf ANSELB ; Set PORTB pins not be analogue input
clrf PORTA ; Clear port A house keeping
clrf PORTB ; Clear port B house keeping
clrf PORTC ; Clear port C house keeping
movlw b'11111111' ; Default OUTPUT
movwf LATA ; Set intial output values of pins on port A to 0
movwf LATB ; Set intial output values of pins on port B to 0
movwf LATC ; Set intial output values of pins on port C to 0
LOOP
movlw b'11111111' ; Output set one used to test port C
movwf LATA ; Move test value to Port C output pins
movwf LATB ; Move test value to Port C output pins
movwf LATC ; Move test value to Port C output pins
movlw b'00000000' ; Output set two used to test port C
movwf LATA ; Move test value to Port C output pins
movwf LATB ; Move test value to Port C output pins
movwf LATC ; Move test value to Port C output pins
goto LOOP
END
Todo lo que estoy tratando de hacer en este momento es poner los pines a alto / bajo con el registro LAT relevante para cada puerto.