PIC16F1933 Los pines de salida no funcionan

1

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.

    
pregunta Deaths_Follower

1 respuesta

1

Solo miré su código brevemente, pero su falta total de respeto por la configuración del banco, excepto por el lugar donde escribe a OSCCON, puede tener algo que ver con su problema.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas