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.
Mapa de memoria de datos
Sección titulada «Mapa de memoria de datos»La RAM de datos mezcla dos tipos de posiciones:
| Tipo | Que es | Ejemplos |
|---|---|---|
| SFR | Controlan hardware interno | TRISB, LATB, INTCON, TMR0 |
| GPR | Variables de tu programa | contador, 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.
Registros de la CPU
Sección titulada «Registros de la CPU»Estos registros no controlan un periferico concreto; son parte del nucleo del procesador. En Arquitectura estan explicados con ejemplos; aqui el resumen de consulta:
| Registro | Funcion |
|---|---|
WREG | Acumulador de 8 bits. Origen/destino de muchas instrucciones. |
STATUS | Banderas Z, C, DC, OV, N tras operaciones aritmeticas/logicas. |
BSR | Selecciona banco de memoria (0–15). |
PC | Contador de programa. Apunta a la siguiente instruccion en Flash. |
STKPTR / Pila | Apila direcciones de retorno en CALL/RETURN e interrupciones. |
Puertos GPIO — TRISx, PORTx, LATx
Sección titulada «Puertos GPIO — TRISx, PORTx, LATx»Cada puerto (A, B, C, D, E) tiene tres SFR con roles distintos:
| Registro | Lectura / escritura | Funcion |
|---|---|---|
TRISx | Escritura | Direccion del pin: 1 = entrada, 0 = salida |
LATx | Escritura | Valor de salida escrito al latch (no lee el pin fisico) |
PORTx | Lectura | Nivel real en el pin (util para entradas y lectura de switches) |
Puertos del PIC18F4550 (40 pines PDIP):
| Puerto | Pines | Notas del curso |
|---|---|---|
| A | RA0–RA5 | Algunos pines analogicos |
| B | RB0–RB7 | RB0 = INT0; RB4–RB7 = interrupcion por cambio |
| C | RC0–RC7 | RC6/RC7 = UART (TX/RX) |
| D | RD0–RD7 | LCD en practicas |
| E | RE0–RE2 | Entradas analogicas |
Salida — encender LED en RB0
Sección titulada «Salida — encender LED en RB0»BCF TRISB, 0 ; RB0 como salida (bit 0 de TRISB = 0)BSF LATB, 0 ; RB0 en alto → enciende LEDEntrada — leer un boton en RB3
Sección titulada «Entrada — leer un boton en RB3»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_botonboton_presionado: ; boton presionado (RB3 = 0) ...fin_boton:Mas ejemplos en GPIO y en la guia rapida de registros.
Registros de interrupciones
Sección titulada «Registros de interrupciones»Las interrupciones usan varios SFR en cadena: habilitar → detectar bandera → atender en ISR → limpiar bandera → RETFIE.
Control global — INTCON, INTCON2, INTCON3
Sección titulada «Control global — INTCON, INTCON2, INTCON3»| Registro / bit | Funcion |
|---|---|
INTCON.GIE | Global Interrupt Enable — interruptor maestro (1 = interrupciones activas) |
INTCON.PEIE | Habilita interrupciones perifericas (timers, UART, ADC…) |
INTCON.TMR0IF | Bandera: Timer0 desbordo |
INTCON2 / INTCON3 | Externas INT0–INT2, RB puerto, prioridades |
Por periferico — PIEx, PIRx, IPRx
Sección titulada «Por periferico — PIEx, PIRx, IPRx»| Familia | Para que sirve |
|---|---|
PIE1, PIE2 | Peripheral Interrupt Enable — habilita la fuente (ej. TMR0IE) |
PIR1, PIR2 | Peripheral Interrupt Request — bandera de que ocurrio el evento |
IPR1, IPR2 | Prioridad 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 RETFIEDetalle completo en Interrupciones.
Otros SFR que veras en el curso
Sección titulada «Otros SFR que veras en el curso»Resumen por modulo — la tabla completa esta en Guia rapida de registros:
| Modulo | Registros clave | Tema |
|---|---|---|
| Timer0 | T0CON, TMR0L, TMR0H | Timer 0 |
| Timer1/2 | T1CON, T2CON, PR2 | Timers |
| ADC | ADCON0, ADCON1, ADCON2, ADRESH/L | ADC |
| UART | TXSTA, RCSTA, SPBRG, TXREG, RCREG | UART |
| PWM/CCP | CCP1CON, CCPR1L, PR2 | PWM y CCP |
| SPI/I2C | SSPSTAT, SSPCON1 | SPI/I2C |
Variables GPR — declarar en ensamblador
Sección titulada «Variables GPR — declarar en ensamblador» ; Zona de variables (ej. tras UDATA o al final del archivo):contador RES 1 ; define nombre + reserva 1 byte
; Uso:INCF contador, FMOVF contador, WEl nombre es tu variable; el SFR tiene nombre fijo del fabricante.
Preguntas tipo parcial
Sección titulada «Preguntas tipo parcial»¿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.
Registros del PIC18
Basado en: Clase Tema 2 y 3 (1).pdf
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS