Академический Документы
Профессиональный Документы
Культура Документы
GESTIN DE PUERTOS
NO SE LE PUEDE
ENSEAR NADA A
NADIE, SOLO SE LE
PUEDE AYUDAR A
ENCONTRAR LA
RESPUESTA DENTRO
DE SI MISMO
Galileo Galilei
Analizar las formas para manejar los
puertos microcontrolador PIC
para utilizarlos como entrada y
salida
FUSE DESCRIPCIN
LP Low power osc < 200 kHz
XT Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
HS High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
RC Resistor/Capacitor Osc with CLKOUT
RC_IO Resistor/capacitor osc
RC Resistor/Capacitor Osc with CLKOUT
INTRC_IO Internal RC Osc, no CLKOUT
INTRC Internal RC Osc
PUT Power up timer
NOPUT No power up timer
BROWNOUT Reset when brownout detected
NOBROWNOUT No brownout reset
NOWDT No watch dog timer
WDT Watch dog timer
NOPBADEN PORTB pins are configured as digital I/O on RESET
PBADEN PORTB pins are configured as analog input channels on RESET
LPT1OSC Timer1 configured for low-power operation
NOLPT1OSC Timer1 configured for higher power operation
NOMCLR Master Clear pin used for I/O
MCLR Master Clear pin enabled
STVREN Stack full/underflow will cause reset
NOSTVREN Stack full/underflow will not cause reset
NOLVP No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
LVP Low Voltage Programming on B3(PIC16) or B5(PIC18)
PROTECT Code protected from reads
NOPROTECT Code not protected from Reading
Sixto Reinoso V
Definiendo la posicin de la memoria RAM
como una variable C para los registros
TRISX y PORTX. El registro TRIS permite
configurar el puerto como entrada o salida.
El registro PORT escribe o lee en el puerto X
un valor.
Usando la directivas especficas del
compilador (#USE FAST_IO, #USE FIXED_IO,
#USE STANDARD_IO)
Sixto Reinoso V
#BYTE tris_n = Dir
#BYTE port_n = Dir
REGISTRO TRIS DIRECCIN DE MEMORIA REGISTRO PORT DIRECCIN DE MEMORIA
A 0xF92 A 0xF80
B 0xF93 B 0xF81
C 0xF94 C 0xF82
D 0xF95 D 0xF83
E 0xF96 E 0xF84
Ejemplo:
#BYTE tris_b = 0xF93
#BYTE port_b = 0xF81
Sixto Reinoso V
tris_a = 0xFF ; Define todo el puerto a como entrada
tris_b = 0x00; Define todo el puerto b como salida
tris_d = 0x0F; Define los 4 primeros bits del puerto d
como entrada y los 4 bits (MSB) como salida.
Sixto Reinoso V
#include <18F4550.h> //Librera para usar el PIC18F4550.
#fuses HS,NOWDT,NOPROTECT,PUT, NOPBADEN //Configuracin de fusibles.
#use delay (clock=12000000) // FOSC =12MHz.
#byte tris_b = 0xF93 //Define el registro tris b en la localidad 0xF93.
#bit b0= 0xF81.0 //Define el bit b0 en la localidad 0xF81.0.
Sixto Reinoso V
Sixto Reinoso V
output_x (value); por el puerto indicado saca el
valor correspondiente a 0 a 255.
input_x(); se obtiene el valor del puerto.
set_tris_x(value); configura el puerto x como
entrada o salida dependiendo de la variable value.
Ejemplo:
set_tris_b(0x00); el puerto b es de salida.
set_tris_b(0xFF); el puerto b es de entrada.
get_tris_x(); devuelve el valor del registro tris_x.
x, es el smbolo correspondiente a los puertos A,
B, C, D, E.
Sixto Reinoso V
Las funciones asociadas al terminal o pin son:
output_low (PIN_n); pin a 0.
output_high (PIN_n); pin a 1.
output_bit (PIN_n,value); pin al valor especificado.
output_toggle (PIN_n); complemento el valor del pin.
output_float (PIN_n); pin de entrada, quedando a tensin
flotante. Simula salida de drenador abierto.
output_state (PIN_n); lee el valor del pin.
input_state(PIN_n); lee el valor del PIN sin cambiar el sentido
del terminal.
input(PIN_n); lee el valor del PIN.
n, se refiere al nombre del puerto y/o del PIN.
Sixto Reinoso V
Directiva #use standard_io (puerto)
Es la directiva por defecto. Las funciones output_x e
input_x, modifican el registro TRIS asegurando que los
terminales usados sean de salida o entrada
respectivamente.
Si no se incluye ninguna directiva, el programa tomar por
defecto #use standard_io(puerto), que reprogramar cada
vez al pin como entrada o salida aumentando el cdigo
generado por el compilador.
Al usar las directivas no es necesario identificar las
direcciones que ocupan los registros PORT y TRIS, porque
estos ya estn definidos en las directivas.
Sixto Reinoso V
#include <18f4550.h> //Librera para usar el PIC18F4550.
#fuses HS,NOWDT,NOPROTECT,PUT, NOPBADEN //Configuracin de fusibles.
#use delay (clock=12000000) //FOSC=12MHz.
#use standard_io(b) //Directiva usado por el compilador por defecto.
//Es opcional llamarla en el programa.
void main(void) //Funcin principal main.
{
disable_interrupts(GLOBAL); //Todas las interrupciones desactivadas.
Sixto Reinoso V
b. Directiva #use fast_io(port)
Esta directiva define a los puertos como entradas o salidas
digitales. La variable port puede tomar los valores de a, b, c, d, e,
o all para sealar que todos los puertos se utilizarn como
entradas y salidas digitales. Las funciones output_x e input_x, no
modifican el registro TRIS, por lo cual se debe colocar
necesariamente la instruccin para definir que los terminales
usados sean de salida o entrada respectivamente.
Al utilizar esta directiva, el compilador optimiza el cdigo
generado y ahorra memoria de programa. El uso de las funciones
output e input no reprograman los puertos ya que quedan
definidos en la instruccin TRIS. Por tanto, la respuesta de los
puertos para conmutaciones rpidas se ve mejorado con el uso el
uso de la directiva #use fast_io(port).
Sixto Reinoso V
#include <18f4550.h> //Librera para usar el PIC18F4550.
#fuses HS,NOWDT,NOPROTECT,PUT, NOPBADEN //Configuracin de fusibles.
#use delay (clock=12000000) //FOSC=12MHz.
#use fast_io(b) //Define el puerto b como i/o digital.
Sixto Reinoso V
c. Directiva #use fixed_io(puerto_outputs=pinx)
Sixto Reinoso V
#include <18F4550.h> //Librera para usar el PIC18F4550.
#fuses HS,NOWDT,NOPROTECT,PUT, NOPBADEN //Configuracin de fusibles.
#use delay (clock=12000000) //FOSC=12MHz.
#use fixed_io(b_outputs=pin_b0) //Define el puerto b0 como salida.
Sixto Reinoso V