Ir al contenido

Registros principales del PIC18F4550

Esta pagina es el catalogo de registros del PIC18F4550. Si aun no leiste Arquitectura basica, empieza por ahi: explica que son SFR, GPR, WREG, STATUS, BSR y PC con ejemplos en ensamblador.

Aqui veras que registros existen, para que sirve cada uno y como se usan en codigo.

La RAM de datos mezcla dos tipos de posiciones:

TipoQue esEjemplos
SFRControlan hardware internoTRISB, LATB, INTCON, TMR0
GPRVariables de tu programacontador, temp (declaradas con RES)

El PIC18F4550 organiza esa RAM en 16 bancos (0 a 15). El registro BSR indica el banco activo. Muchos SFR importantes estan en el banco de acceso (ACCESS): puedes leerlos y escribirlos sin cambiar BSR.

Estos registros no controlan un periferico concreto; son parte del nucleo del procesador. En Arquitectura estan explicados con ejemplos; aqui el resumen de consulta:

RegistroFuncion
WREGAcumulador de 8 bits. Origen/destino de muchas instrucciones.
STATUSBanderas Z, C, DC, OV, N tras operaciones aritmeticas/logicas.
BSRSelecciona banco de memoria (0–15).
PCContador de programa. Apunta a la siguiente instruccion en Flash.
STKPTR / PilaApila direcciones de retorno en CALL/RETURN e interrupciones.

Cada puerto (A, B, C, D, E) tiene tres SFR con roles distintos:

RegistroLectura / escrituraFuncion
TRISxEscrituraDireccion del pin: 1 = entrada, 0 = salida
LATxEscrituraValor de salida escrito al latch (no lee el pin fisico)
PORTxLecturaNivel real en el pin (util para entradas y lectura de switches)

Puertos del PIC18F4550 (40 pines PDIP):

PuertoPinesNotas del curso
ARA0–RA5Algunos pines analogicos
BRB0–RB7RB0 = INT0; RB4–RB7 = interrupcion por cambio
CRC0–RC7RC6/RC7 = UART (TX/RX)
DRD0–RD7LCD en practicas
ERE0–RE2Entradas analogicas
BCF TRISB, 0 ; RB0 como salida (bit 0 de TRISB = 0)
BSF LATB, 0 ; RB0 en alto → enciende LED
BSF TRISB, 3 ; RB3 como entrada (bit 3 de TRISB = 1)
BTFSS PORTB, 3 ; salta si RB3 esta en 1 (boton suelto, segun cableado)
GOTO boton_presionado ; si RB3 = 0 → salta al destino
; boton suelto (RB3 = 1) ...
GOTO fin_boton
boton_presionado:
; boton presionado (RB3 = 0) ...
fin_boton:

Mas ejemplos en GPIO y en la guia rapida de registros.

Las interrupciones usan varios SFR en cadena: habilitardetectar banderaatender en ISRlimpiar banderaRETFIE.

Registro / bitFuncion
INTCON.GIEGlobal Interrupt Enable — interruptor maestro (1 = interrupciones activas)
INTCON.PEIEHabilita interrupciones perifericas (timers, UART, ADC…)
INTCON.TMR0IFBandera: Timer0 desbordo
INTCON2 / INTCON3Externas INT0–INT2, RB puerto, prioridades
FamiliaPara que sirve
PIE1, PIE2Peripheral Interrupt Enable — habilita la fuente (ej. TMR0IE)
PIR1, PIR2Peripheral Interrupt Request — bandera de que ocurrio el evento
IPR1, IPR2Prioridad alta/baja de cada fuente (PIC18 con prioridades)

Flujo tipico para Timer0:

BSF INTCON, GIE ; enciende interruptor global
BSF INTCON, PEIE ; permite interrupciones perifericas
BSF PIE1, TMR0IE ; habilita interrupcion de Timer0
; ... en la ISR ...
BCF INTCON, TMR0IF ; limpia bandera antes de RETFIE
RETFIE

Detalle completo en Interrupciones.

Resumen por modulo — la tabla completa esta en Guia rapida de registros:

ModuloRegistros claveTema
Timer0T0CON, TMR0L, TMR0HTimer 0
Timer1/2T1CON, T2CON, PR2Timers
ADCADCON0, ADCON1, ADCON2, ADRESH/LADC
UARTTXSTA, RCSTA, SPBRG, TXREG, RCREGUART
PWM/CCPCCP1CON, CCPR1L, PR2PWM y CCP
SPI/I2CSSPSTAT, SSPCON1SPI/I2C
; Zona de variables (ej. tras UDATA o al final del archivo):
contador RES 1 ; define nombre + reserva 1 byte
; Uso:
INCF contador, F
MOVF contador, W

El nombre es tu variable; el SFR tiene nombre fijo del fabricante.

¿Que diferencia hay entre leer PORTB y escribir LATB?

PORTB refleja el nivel electrico en los pines (util para entradas). LATB modifica el valor de salida del latch sin leer el pin fisico.

¿Que hace BSR?

Selecciona el banco de RAM (0–15) al acceder a una direccion. Muchos SFR no lo necesitan porque estan en banco ACCESS.

¿Para que sirve INTCON.GIE?

Habilita o deshabilita todas las interrupciones globalmente.

Examen interactivo

Registros del PIC18

Basado en: Clase Tema 2 y 3 (1).pdf

0 de 0 respondidas

¿Que registro define si un pin es entrada o salida?
Para escribir un valor de salida sin leer el pin fisico conviene usar...
En TRISB, un bit en 1 significa que el pin es...
¿Que hace INTCON.GIE?
PIR1 y PIR2 contienen...
¿Que registro selecciona el banco de memoria RAM?
Para leer el estado de un boton conectado a RB3 usas...
Un registro SFR como TRISB se diferencia de un GPR porque...