SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
2012/09/17 06:07 1/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital
Laboratorio de microcomputadoras - http://localhost/dokuwiki/
Configurando los puertos del
PIC16F876A/877A/886/887 como I/O digital
Sandro Caballero Rivas
En este articulo trabajamos con 4 PICS. Los PIC16F876A/877A son los que se utilizan en las tarjetas
del laboratorio. Los PIC16F886/887 son las versiones mejoradas de los PICs anteriores. El fabricante,
Microchip recomienda utilizar estas nuevas versiones. Las nuevas versiones integran significativas
mejoras a la funcionalidad interna del microcontrolador:
Oscilador interno configurable. Se pueden seleccionar varias frecuencias de reloj entre 8MHz yq
31KHz
Mas pines de input/output.q
Menos consumo de energia.q
Mayor numero de canales para el convertidor A/Dq
Perifericos mejorados: ECCP/EUSART/Enhanced-watchdog, etc.q
En esta figura se observa una comparativa de las caracteristicas principales de ambas opciones:
Los PIC16F876A/877A no se recomiendan para nuevos diseños. Es posible que el fabricante en un
futuro decida retirarlos del mercado dado que ya existen reemplazos mejorados.
En la protoboard utilizamos el PIC16F886(28 pins) cargado con el bootloader AN1310 de Microchip(
Bajando programas al PIC16F876A/877A/886/887). En la tarjeta del laboratorio utilizamos el
PIC16F877A(40 pins) cargado con el bootloader de Shane Tolmie http://www.microchipc.com/.
Puertos
A traves de los puertos de input y output(I/O) el microcontrolador se comunica con el mundo exterior.
Los puertos pueden ser utilizados como I/O digital o como I/O analogico:
I/O digital significa que el puerto recibe y transmite a traves de sus pines valores binariosq
Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio
http://localhost/dokuwiki/ Printed on 2012/09/17 06:07
exclusivamente,'0' y '1'. Los valores binarios '0' y '1' se corresponden con los voltajes de GND y VDD.
I/O analogico significa que el puerto va a ser utilizado para recibir y/o transmitir por sus pinesq
voltajes analogicos continuos entre 0 y VDD generalmente.
La datasheet especifica como configurar cada puerto y que tipo de I/O y funcion va a desempeñar.
Los puertos existentes en los PIC del articulo son:
PIC16F876A PIC16F877A PIC16F886 PIC16F887
PORT(pins,direccion) PORT(pin,direccion) PORT(pins,direccion) PORT(pins,direccion)
A(6,bidireccional) A(6,bidireccional) A(8,bidireccional) A(8,bidireccional)
B(8,bidireccional) B(8,bidireccional) B(8,bidireccional) B(8,bidireccional)
C(8,bidireccional) C(8,bidireccional) C(8,bidireccional) C(8,bidireccional)
D(8,bidireccional) D(8,bidireccional)
E(3,bidireccional) E(1,input) E(4,3 bidireccionales y 1 input)
En la siguiente figura se muestra el diagrama de pines para cada uno de los PICs:
2012/09/17 06:07 3/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital
Laboratorio de microcomputadoras - http://localhost/dokuwiki/
El diagrama de pines muestra:
El numero de pin dentro del encapsulado(DIP.SOIC,SSOP).q
La direccion del flujo de datos del pin,input o output.q
Un pin con una → indica que se puede configurar como input solamente. Un pin con una ← indica
que el pin puede ser configurado como output solamente. Un pin con una ↔ indica que es un pin
bidireccional, es decir, puede ser configurado como input o como output(no puede ser input y
output al mismo tiempo).
Los nombres que recibe el pin.q
Cada nombre de un pin esta separado por una '/'. Cada nombre se corresponde con una funcion
especifica que puede desempeñar el pin en un instante determinado. Solo puede configurarse el pin
para utilizar una de sus multiples funciones a la vez, es decir, no puede desempeñar todas sus
funciones al mismo tiempo.
Por ejemplo en la siguiente tabla se muestra para el PIC16F886 el resumen de las diferentes
funciones que puede desempeñar un pin dado:
Los nombres de las columnas resaltados en rojo se refieren a los modulos o perifericos internos que
tiene el microcontrolador:
I/O Portsq
Analog pheriferalsq
Voltage comparatorsq
Timersq
ECCPq
EUSARTq
MSSPq
Interrup.q
Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio
http://localhost/dokuwiki/ Printed on 2012/09/17 06:07
Estos circuitos no se muestran en la arquitectura general. Se muestran en la seccion especifica
'Spectial features of the CPU → interrupts' de la datasheet.
Pullup circuitsq
Estos circuitos no se muestran en la arquitectura general. Se muestran en la seccion especifca 'I/O
ports' de la datasheet.
Basic internal modules.q
Se refiere a los circuitos internos para : RESET,Programacion ICSP, OSCILADOR externo, Referencia
de voltaje.
Estos modulos o perifericos internos se muestran resaltados en rojo en la arquitectura del
microcontrolador(partes de que esta compuesto):
Por ejemplo el pin 2:
2012/09/17 06:07 5/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital
Laboratorio de microcomputadoras - http://localhost/dokuwiki/
Se llama RA0 cuando se utiliza como I/O digitalq
Se llama AN0/ULPWU cuando se utiliza con los perifericos analogicos internos(convertidor A/D(AN0)q
y circuito de ultra low power wakeup(ULPWU))
Se llama C12IN0- cuando se utiliza con los comparadores analogicos de voltajeq
El pin 1:
Se llama RE3 cuando se utiliza como Input digital.q
En este caso se deshabilita la funcion natural de reset del pin, es decir, ya no se conecta aqui el
push boton para dar reset al micro porque se deshabilito esa funcion. Eso quiere decir que el micro
ya no puede ser reseteado externamente.
Se llama MCLR/VPP cuando se utiliza como reset del microcontrolador(MCLR) o cuando se utilizaq
como pin de programacion ICSP(VPP).
El pin 20 es el VDD del microcontrolador.
Los pines 8 y 19 son el GND del microcontrolador.
La funcion que va a desempeñar cada pin se elige y configura via un conjunto de registros de funcion
especifica,SFR que tiene asignado cada uno de los modulos internos mostrados en la arquitectura del
microcontrolador.
Estos registros de configuracion tienen valores por default al darle RESET o POWER al micro. Es decir,
en RESET y POWER ON todos los pines inician su funcionamiento con la funcion seleccionada por
default.
En practicas posteriores se mostrara como configurar e utilizar cada uno de los modulos o perifericos
internos del microcontrolador.
1.0 Configuracion de los puertos como I/O digital
El presente articulo se enfoca en la configuracion del modulo 'I/O Ports'. Este modulo se refiere a los
pines de los puertos utilizados como I/O digital.
I/O digital
Los pines de algunos puertos tienen la funcion de Input analogica(modulo A/D) y de I/O digital. Estos
pines por default estan configurados para ser utilizados como input analogica en RESET. Para
poderlos utilizar como I/O digital debemos configurarlos de forma explicita con algunas instrucciones.
En la siguiente tabla se indica para cada PIC los registros SFRs necesarios para configurar al PORTX
como I/O digital y el valor que se les asigna para lograrlo:
PORT PIC16F876A PIC16F877A PIC16F886 PIC16F887
A 0x07 → ADCON1 0x07 → ADCON1 0x00 → ANSEL 0x00 → ANSEL
B 0x00 → ANSELH 0x00 → ANSELH
C
D 0 → TRISE<4>
Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio
http://localhost/dokuwiki/ Printed on 2012/09/17 06:07
E
0x07 → ADCON1
0 → TRISE<4>
0x00 → ANSEL
Las celdas vacias indican que ese puerto en RESET esta configurado con la funcion I/O digital por
default. Es decir, no se necesita configurar un SFR extra para que sea I/O digital.
Direccion del pin y acceso a su contenido
Cada puerto tiene asociados 2 SFR como minimo:
TRISX.q
En el registro TRISX se especifica si el pin 'n' del puerto X va a ser input o output.
El bit 'n' del registro TRISX,TRISX<n> configura la direcion del pin 'n' del PORTX,PORTX<n>.
Los valores del TRISX<n> son:
'1' → inputr
'0' → outputr
PORTX.q
El registro PORTX esta ligado fisicamente a los pines del PIC.
Si los pines se configuraron como input, entonces PORTX tendra el voltaje digital que esta
conectado a los pines en ese momento, por ejemplo el voltaje que entregan los dip-switches.
Si los pines se configuraron como output, entonces PORTX tendra el voltaje digital que envia el PIC
al exterior, por ejemplo a los leds.
En RESET todos los pins del PIC estan configurados como INPUT por default.
Los registros 'TRISX' y los bits que se pueden configurar se muestran en la siguiente tabla:
PORT PIC16F876A PIC16F877A PIC16F886 PIC16F887
A TRISA<5:0> TRISA<5:0> TRISA<7:0> TRISA<7:0>
B TRISB<7:0> TRISB<7:0> TRISB<7:0> TRISB<7:0>
C TRISC<7:0> TRISC<7:0> TRISC<7:0> TRISC<7:0>
D TRISD<7:0> TRISD<7:0>
E TRISE<2:0> TRISE<3> TRISE<3:0>
Las celdas vacias indican que el PIC no tiene pines fisicos en ese puerto.
La configuracion del registro TRISX generalmente solo se ejecuta una vez al inicio del programa. Por
ejemplo si se conectan 8 leds al PORTX, entonces el PORTX siempre va a ser output. Por lo cual no
hay necesidad de estar actualizando el valor del registro TRISX continuamente dentro del loop MAIN
del programa.
Nota:
- El valor que se escriba a cada pin de output permanecera fijo hasta que el programa lo sobreescriba.
- El valor leido de cada pin de input es el que este entrando del exterior en ese instante. Si no hay
nada conectado al pin se lee un '0'.
- Si la fuente de poder es de 5V: '1' → 5V , '0' → 0V
- En reset los pines PORTX<7:0> tienen valores aleatorios. Se deben inicializar a un valor conocido
antes de ser utilizados.
- El PIC16F886 tiene un PORTA de 8 pines, del pin 0 al pin 7. Sin embargo, en el sistema minimo de la
protoboard solo tenemos libres a los pines RA0 al RA5.
2012/09/17 06:07 7/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital
Laboratorio de microcomputadoras - http://localhost/dokuwiki/
Los pines RA6 y RA7 se estan utilizando en el sistema minimo de la protoborad para conectar el
oscilador externo(crystal de 20MHz). Estos pines tienen los nombres RA6/OSC1/CLKIN y
RA7/OSC2/CLKOUT. Es decir, pueden ser configurados para utilizar una de esas tres funciones.
Por default el firmware del bootloader del PIC16F886 esta configurado para utilizar la funcion de
oscilador externo(OSC1 y OSC2).
Si se deseara utilizar esos dos pines como I/O digital se tendria que programar un bootloader que
utilizara el oscilador interno del PIC16F886. Con eso se elminaria el crystal externo y sus capacitores
y podrian usarse los pines como I/O digital.
- El PIC16F886 tiene un PORTE de 1 pin, RE3.
Este pin tiene el nombre RE3/MCLR/VPP. Es decir, puede ser configurado para utilizar alguna de esas
tres funciones.
Por default el firmware del bootloader del PIC16F886 esta configurado para utilizar la funcion 'MCLR' o
de RESET del micro. Es por eso que podemos conectar un push-botton externo y darle RESET al PIC.
Esa funcion de RESET se podria deshabilitar programando otro bootloader que tuviera deshabilitada la
funcion MCLR. Con eso, el pin RE3 podria usarse como Input digital, a costa de perder la capacidad de
resetear al micro de forma externa. La unica forma que quedaria de resetear al micro seria POWER
OFF y despues POWER ON.
2.0 Ejemplos
Por lo general la configuracion de los pines como I/O digital y la configuracion de su direccion se
realiza una sola vez, en la zona donde se inicializan los modulos internos del PIC. Es decir, antes de
entrar al loop MAIN del programa. Esto se debe a que en la mayoria de las aplicaciones los pines
tienen conectado hardware que siempre se usa como outputs, como los leds o que siempre se usa
como inputs, como los dip-switches.
Sin embargo, es posible tener aplicaciones en donde se requiera que un pin sea configurado como
output en un instante dado y en otro instante como input. En esas aplicaciones seria necesario
configurar la funcion del pin(I/O digital,Input analogica) y/o su direccion (input o output) dentro del
loop MAIN.
Configurar todos los puertos del PIC16F886 como I/O digital,PORTA → input,PORTB → OUPUT,q
PORTC<7:4> → input, PORTC<3:0> → output
Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio
http://localhost/dokuwiki/ Printed on 2012/09/17 06:07
Valores para SFRs Traduccion a codigo en ensamblador
BCF STATUS,RP0 ;sel. BANK0 para registros PORTA,
BCF STATUS,RP1 ;PORTB,PORTC
0x00 -> PORTA CLRF PORTA ;inicializar a 0 a los regs. PORTA,
0x00 -> PORTB CLRF PORTB ;PORTB,PORTC. Porque en reset
0x00 -> PORTC CLRF PORTC ;tienen valores aleatorios
BSF STATUS,RP0 ;sel. BANK3 para registros ANSEL,
BSF STATUS,RP1 ;ANSELH
0x00 -> ANSEL CLRF ANSEL ;PORTA con funcion I/O digital
0x00 -> ANSELH CLRF ANSELH ;PORTB con funcion I/O digital
BSF STATUS,RP0 ;sel. BANK1 para TRISA,TRISB,TRISC
BCF STATUS,RP1
0xFF -> TRISA MOVLW H'FF' ;todos los pins del PORTA inputs
MOVWF TRISA
0x00 -> TRISB CLRF TRISB ;todos los pines del PORTB outputs
0xF0 -> TRISC MOVLW 0xF0 ;pines RC7:RC4 inputs,
MOVWF TRISC ;RC3:RC0 outputs
Configurar todos los puertos del PIC16F877A como I/O digital,PORTA → input,PORTB → OUPUT,q
PORTC<7:4> → input, PORTC<3:0> → output, PORTD → input , PORTE<2:1> → input, PORTE<0> →
output
2012/09/17 06:07 9/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital
Laboratorio de microcomputadoras - http://localhost/dokuwiki/
Valores para SFRs Traduccion a codigo en ensamblador
BCF STATUS,RP0 ;sel. BANK0 para registros PORTA,
BCF STATUS,RP1 ;PORTB,PORTC,PORTD,PORTE
0x00 -> PORTA CLRF PORTA ;inicializar a 0 a los regs. PORTA,
0x00 -> PORTB CLRF PORTB ;PORTB,PORTC,PORTD,PORTE.
0x00 -> PORTC CLRF PORTC ;porque en reset tienen valores
0x00 -> PORTD CLRF PORTD ;aleatorios
0x00 -> PORTE CLRF PORTE
BSF STATUS,RP0 ;Sel. BANK1 para registros ADCON1,
BCF STATUS,RP1 ;TRISA,TRISB,TRISC,TRISD,TRISE
0x07 -> ADCON1 MOVLW 0x07 ;PORTA y PORTE con funcion de I/O
MOVWF ADCON1 ;digital
0 -> TRISE<4> BCF TRISE,4 ;PORTD y PORTE sin funcion de
;Parallel slave port
0xFF -> TRISA MOVLW H'FF' ;Todos los pines del PORTA inputs
MOVWF TRISA
0x00 -> TRISB CLRF TRISB ;Todos los pines del PORTB outputs
0xF0 -> TRISC MOVLW 0xF0 ;RC7:RC4 inputs, RC3:RC0 outputs
MOVWF TRISC
0xFF -> TRISD MOVLW H'FF' ;Todos los pines del PORTD inputs
MOVWF TRISD
1 -> TRISE<2> BSF TRISE,2 ;RE<2> input
1 -> TRISE<1> BSF TRISE,1 ;RE<1> input
0 -> TRISE<0> BCF TRISE,0 ;RE<0> output
Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio
http://localhost/dokuwiki/ Printed on 2012/09/17 06:07
3.0 Referencias
Datasheet PIC16F886/8871.
Datasheet PIC16F876A/877A2.
Proteus . Software comercial para el desarrollo de esquematicos, simulacion virtual del prototipo y3.
creacion del circuito impreso(PCB). Se utilizo para la creacion de los esquematicos.
From:
http://localhost/dokuwiki/ - Laboratorio de microcomputadoras
Permanent link:
http://localhost/dokuwiki/doku.php?id=articles:digitalio
Last update: 2012/09/17 06:06

Más contenido relacionado

La actualidad más candente

Proyecto micro
Proyecto microProyecto micro
Proyecto microjhompix
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18fitomaster
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 
Proyecto robot mentor v1 enero_19_por_joaquin berrocal piris
Proyecto robot mentor v1 enero_19_por_joaquin berrocal pirisProyecto robot mentor v1 enero_19_por_joaquin berrocal piris
Proyecto robot mentor v1 enero_19_por_joaquin berrocal pirisjoaquinin1
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaGerardo C
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017joaquinin1
 
Construccion seguidor de línea por joaquín berrocal verano 2017
Construccion seguidor de línea por joaquín berrocal verano 2017Construccion seguidor de línea por joaquín berrocal verano 2017
Construccion seguidor de línea por joaquín berrocal verano 2017joaquinin1
 
Mi simulador obdii_2018_marzo_2018--34 pags
Mi simulador obdii_2018_marzo_2018--34 pagsMi simulador obdii_2018_marzo_2018--34 pags
Mi simulador obdii_2018_marzo_2018--34 pagsjoaquinin1
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Hamiltonn Casallas
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Hamiltonn Casallas
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 

La actualidad más candente (20)

Proyecto micro
Proyecto microProyecto micro
Proyecto micro
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
 
1. microcontrolador
1. microcontrolador1. microcontrolador
1. microcontrolador
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Proyecto robot mentor v1 enero_19_por_joaquin berrocal piris
Proyecto robot mentor v1 enero_19_por_joaquin berrocal pirisProyecto robot mentor v1 enero_19_por_joaquin berrocal piris
Proyecto robot mentor v1 enero_19_por_joaquin berrocal piris
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación práctica
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Construccion seguidor de línea por joaquín berrocal verano 2017
Construccion seguidor de línea por joaquín berrocal verano 2017Construccion seguidor de línea por joaquín berrocal verano 2017
Construccion seguidor de línea por joaquín berrocal verano 2017
 
Ttl 74 ls221
Ttl 74 ls221Ttl 74 ls221
Ttl 74 ls221
 
Mi simulador obdii_2018_marzo_2018--34 pags
Mi simulador obdii_2018_marzo_2018--34 pagsMi simulador obdii_2018_marzo_2018--34 pags
Mi simulador obdii_2018_marzo_2018--34 pags
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Comunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccsComunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccs
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Cap6
Cap6Cap6
Cap6
 

Similar a Digitalio config 16f887a_886

⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886Victor Asanza
 
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Hamiltonn Casallas
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009Jair BG
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Alejandro Garcia
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009Jair BG
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...Victor Asanza
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Leccion3 y4
Leccion3 y4Leccion3 y4
Leccion3 y4Jair BG
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercanteDaniel Remondegui
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 

Similar a Digitalio config 16f887a_886 (20)

⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Microcontrolador PIC 16F84A.pdf
Microcontrolador PIC 16F84A.pdfMicrocontrolador PIC 16F84A.pdf
Microcontrolador PIC 16F84A.pdf
 
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Lab 01 micro
Lab 01 microLab 01 micro
Lab 01 micro
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, TALLER RESUELTO 1ra EVALUACIÓN (2019 2do ...
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Leccion3 y4
Leccion3 y4Leccion3 y4
Leccion3 y4
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 

Más de luisvargasquinto

Más de luisvargasquinto (6)

Las 100 mejores rokas
Las 100 mejores rokasLas 100 mejores rokas
Las 100 mejores rokas
 
Circuito cargadors
Circuito cargadorsCircuito cargadors
Circuito cargadors
 
Rtc ds1307
Rtc ds1307Rtc ds1307
Rtc ds1307
 
Programa pic.asm
Programa pic.asmPrograma pic.asm
Programa pic.asm
 
Instalacion
InstalacionInstalacion
Instalacion
 
Instalacion
InstalacionInstalacion
Instalacion
 

Digitalio config 16f887a_886

  • 1. 2012/09/17 06:07 1/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Laboratorio de microcomputadoras - http://localhost/dokuwiki/ Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Sandro Caballero Rivas En este articulo trabajamos con 4 PICS. Los PIC16F876A/877A son los que se utilizan en las tarjetas del laboratorio. Los PIC16F886/887 son las versiones mejoradas de los PICs anteriores. El fabricante, Microchip recomienda utilizar estas nuevas versiones. Las nuevas versiones integran significativas mejoras a la funcionalidad interna del microcontrolador: Oscilador interno configurable. Se pueden seleccionar varias frecuencias de reloj entre 8MHz yq 31KHz Mas pines de input/output.q Menos consumo de energia.q Mayor numero de canales para el convertidor A/Dq Perifericos mejorados: ECCP/EUSART/Enhanced-watchdog, etc.q En esta figura se observa una comparativa de las caracteristicas principales de ambas opciones: Los PIC16F876A/877A no se recomiendan para nuevos diseños. Es posible que el fabricante en un futuro decida retirarlos del mercado dado que ya existen reemplazos mejorados. En la protoboard utilizamos el PIC16F886(28 pins) cargado con el bootloader AN1310 de Microchip( Bajando programas al PIC16F876A/877A/886/887). En la tarjeta del laboratorio utilizamos el PIC16F877A(40 pins) cargado con el bootloader de Shane Tolmie http://www.microchipc.com/. Puertos A traves de los puertos de input y output(I/O) el microcontrolador se comunica con el mundo exterior. Los puertos pueden ser utilizados como I/O digital o como I/O analogico: I/O digital significa que el puerto recibe y transmite a traves de sus pines valores binariosq
  • 2. Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio http://localhost/dokuwiki/ Printed on 2012/09/17 06:07 exclusivamente,'0' y '1'. Los valores binarios '0' y '1' se corresponden con los voltajes de GND y VDD. I/O analogico significa que el puerto va a ser utilizado para recibir y/o transmitir por sus pinesq voltajes analogicos continuos entre 0 y VDD generalmente. La datasheet especifica como configurar cada puerto y que tipo de I/O y funcion va a desempeñar. Los puertos existentes en los PIC del articulo son: PIC16F876A PIC16F877A PIC16F886 PIC16F887 PORT(pins,direccion) PORT(pin,direccion) PORT(pins,direccion) PORT(pins,direccion) A(6,bidireccional) A(6,bidireccional) A(8,bidireccional) A(8,bidireccional) B(8,bidireccional) B(8,bidireccional) B(8,bidireccional) B(8,bidireccional) C(8,bidireccional) C(8,bidireccional) C(8,bidireccional) C(8,bidireccional) D(8,bidireccional) D(8,bidireccional) E(3,bidireccional) E(1,input) E(4,3 bidireccionales y 1 input) En la siguiente figura se muestra el diagrama de pines para cada uno de los PICs:
  • 3. 2012/09/17 06:07 3/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Laboratorio de microcomputadoras - http://localhost/dokuwiki/ El diagrama de pines muestra: El numero de pin dentro del encapsulado(DIP.SOIC,SSOP).q La direccion del flujo de datos del pin,input o output.q Un pin con una → indica que se puede configurar como input solamente. Un pin con una ← indica que el pin puede ser configurado como output solamente. Un pin con una ↔ indica que es un pin bidireccional, es decir, puede ser configurado como input o como output(no puede ser input y output al mismo tiempo). Los nombres que recibe el pin.q Cada nombre de un pin esta separado por una '/'. Cada nombre se corresponde con una funcion especifica que puede desempeñar el pin en un instante determinado. Solo puede configurarse el pin para utilizar una de sus multiples funciones a la vez, es decir, no puede desempeñar todas sus funciones al mismo tiempo. Por ejemplo en la siguiente tabla se muestra para el PIC16F886 el resumen de las diferentes funciones que puede desempeñar un pin dado: Los nombres de las columnas resaltados en rojo se refieren a los modulos o perifericos internos que tiene el microcontrolador: I/O Portsq Analog pheriferalsq Voltage comparatorsq Timersq ECCPq EUSARTq MSSPq Interrup.q
  • 4. Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio http://localhost/dokuwiki/ Printed on 2012/09/17 06:07 Estos circuitos no se muestran en la arquitectura general. Se muestran en la seccion especifica 'Spectial features of the CPU → interrupts' de la datasheet. Pullup circuitsq Estos circuitos no se muestran en la arquitectura general. Se muestran en la seccion especifca 'I/O ports' de la datasheet. Basic internal modules.q Se refiere a los circuitos internos para : RESET,Programacion ICSP, OSCILADOR externo, Referencia de voltaje. Estos modulos o perifericos internos se muestran resaltados en rojo en la arquitectura del microcontrolador(partes de que esta compuesto): Por ejemplo el pin 2:
  • 5. 2012/09/17 06:07 5/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Laboratorio de microcomputadoras - http://localhost/dokuwiki/ Se llama RA0 cuando se utiliza como I/O digitalq Se llama AN0/ULPWU cuando se utiliza con los perifericos analogicos internos(convertidor A/D(AN0)q y circuito de ultra low power wakeup(ULPWU)) Se llama C12IN0- cuando se utiliza con los comparadores analogicos de voltajeq El pin 1: Se llama RE3 cuando se utiliza como Input digital.q En este caso se deshabilita la funcion natural de reset del pin, es decir, ya no se conecta aqui el push boton para dar reset al micro porque se deshabilito esa funcion. Eso quiere decir que el micro ya no puede ser reseteado externamente. Se llama MCLR/VPP cuando se utiliza como reset del microcontrolador(MCLR) o cuando se utilizaq como pin de programacion ICSP(VPP). El pin 20 es el VDD del microcontrolador. Los pines 8 y 19 son el GND del microcontrolador. La funcion que va a desempeñar cada pin se elige y configura via un conjunto de registros de funcion especifica,SFR que tiene asignado cada uno de los modulos internos mostrados en la arquitectura del microcontrolador. Estos registros de configuracion tienen valores por default al darle RESET o POWER al micro. Es decir, en RESET y POWER ON todos los pines inician su funcionamiento con la funcion seleccionada por default. En practicas posteriores se mostrara como configurar e utilizar cada uno de los modulos o perifericos internos del microcontrolador. 1.0 Configuracion de los puertos como I/O digital El presente articulo se enfoca en la configuracion del modulo 'I/O Ports'. Este modulo se refiere a los pines de los puertos utilizados como I/O digital. I/O digital Los pines de algunos puertos tienen la funcion de Input analogica(modulo A/D) y de I/O digital. Estos pines por default estan configurados para ser utilizados como input analogica en RESET. Para poderlos utilizar como I/O digital debemos configurarlos de forma explicita con algunas instrucciones. En la siguiente tabla se indica para cada PIC los registros SFRs necesarios para configurar al PORTX como I/O digital y el valor que se les asigna para lograrlo: PORT PIC16F876A PIC16F877A PIC16F886 PIC16F887 A 0x07 → ADCON1 0x07 → ADCON1 0x00 → ANSEL 0x00 → ANSEL B 0x00 → ANSELH 0x00 → ANSELH C D 0 → TRISE<4>
  • 6. Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio http://localhost/dokuwiki/ Printed on 2012/09/17 06:07 E 0x07 → ADCON1 0 → TRISE<4> 0x00 → ANSEL Las celdas vacias indican que ese puerto en RESET esta configurado con la funcion I/O digital por default. Es decir, no se necesita configurar un SFR extra para que sea I/O digital. Direccion del pin y acceso a su contenido Cada puerto tiene asociados 2 SFR como minimo: TRISX.q En el registro TRISX se especifica si el pin 'n' del puerto X va a ser input o output. El bit 'n' del registro TRISX,TRISX<n> configura la direcion del pin 'n' del PORTX,PORTX<n>. Los valores del TRISX<n> son: '1' → inputr '0' → outputr PORTX.q El registro PORTX esta ligado fisicamente a los pines del PIC. Si los pines se configuraron como input, entonces PORTX tendra el voltaje digital que esta conectado a los pines en ese momento, por ejemplo el voltaje que entregan los dip-switches. Si los pines se configuraron como output, entonces PORTX tendra el voltaje digital que envia el PIC al exterior, por ejemplo a los leds. En RESET todos los pins del PIC estan configurados como INPUT por default. Los registros 'TRISX' y los bits que se pueden configurar se muestran en la siguiente tabla: PORT PIC16F876A PIC16F877A PIC16F886 PIC16F887 A TRISA<5:0> TRISA<5:0> TRISA<7:0> TRISA<7:0> B TRISB<7:0> TRISB<7:0> TRISB<7:0> TRISB<7:0> C TRISC<7:0> TRISC<7:0> TRISC<7:0> TRISC<7:0> D TRISD<7:0> TRISD<7:0> E TRISE<2:0> TRISE<3> TRISE<3:0> Las celdas vacias indican que el PIC no tiene pines fisicos en ese puerto. La configuracion del registro TRISX generalmente solo se ejecuta una vez al inicio del programa. Por ejemplo si se conectan 8 leds al PORTX, entonces el PORTX siempre va a ser output. Por lo cual no hay necesidad de estar actualizando el valor del registro TRISX continuamente dentro del loop MAIN del programa. Nota: - El valor que se escriba a cada pin de output permanecera fijo hasta que el programa lo sobreescriba. - El valor leido de cada pin de input es el que este entrando del exterior en ese instante. Si no hay nada conectado al pin se lee un '0'. - Si la fuente de poder es de 5V: '1' → 5V , '0' → 0V - En reset los pines PORTX<7:0> tienen valores aleatorios. Se deben inicializar a un valor conocido antes de ser utilizados. - El PIC16F886 tiene un PORTA de 8 pines, del pin 0 al pin 7. Sin embargo, en el sistema minimo de la protoboard solo tenemos libres a los pines RA0 al RA5.
  • 7. 2012/09/17 06:07 7/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Laboratorio de microcomputadoras - http://localhost/dokuwiki/ Los pines RA6 y RA7 se estan utilizando en el sistema minimo de la protoborad para conectar el oscilador externo(crystal de 20MHz). Estos pines tienen los nombres RA6/OSC1/CLKIN y RA7/OSC2/CLKOUT. Es decir, pueden ser configurados para utilizar una de esas tres funciones. Por default el firmware del bootloader del PIC16F886 esta configurado para utilizar la funcion de oscilador externo(OSC1 y OSC2). Si se deseara utilizar esos dos pines como I/O digital se tendria que programar un bootloader que utilizara el oscilador interno del PIC16F886. Con eso se elminaria el crystal externo y sus capacitores y podrian usarse los pines como I/O digital. - El PIC16F886 tiene un PORTE de 1 pin, RE3. Este pin tiene el nombre RE3/MCLR/VPP. Es decir, puede ser configurado para utilizar alguna de esas tres funciones. Por default el firmware del bootloader del PIC16F886 esta configurado para utilizar la funcion 'MCLR' o de RESET del micro. Es por eso que podemos conectar un push-botton externo y darle RESET al PIC. Esa funcion de RESET se podria deshabilitar programando otro bootloader que tuviera deshabilitada la funcion MCLR. Con eso, el pin RE3 podria usarse como Input digital, a costa de perder la capacidad de resetear al micro de forma externa. La unica forma que quedaria de resetear al micro seria POWER OFF y despues POWER ON. 2.0 Ejemplos Por lo general la configuracion de los pines como I/O digital y la configuracion de su direccion se realiza una sola vez, en la zona donde se inicializan los modulos internos del PIC. Es decir, antes de entrar al loop MAIN del programa. Esto se debe a que en la mayoria de las aplicaciones los pines tienen conectado hardware que siempre se usa como outputs, como los leds o que siempre se usa como inputs, como los dip-switches. Sin embargo, es posible tener aplicaciones en donde se requiera que un pin sea configurado como output en un instante dado y en otro instante como input. En esas aplicaciones seria necesario configurar la funcion del pin(I/O digital,Input analogica) y/o su direccion (input o output) dentro del loop MAIN. Configurar todos los puertos del PIC16F886 como I/O digital,PORTA → input,PORTB → OUPUT,q PORTC<7:4> → input, PORTC<3:0> → output
  • 8. Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio http://localhost/dokuwiki/ Printed on 2012/09/17 06:07 Valores para SFRs Traduccion a codigo en ensamblador BCF STATUS,RP0 ;sel. BANK0 para registros PORTA, BCF STATUS,RP1 ;PORTB,PORTC 0x00 -> PORTA CLRF PORTA ;inicializar a 0 a los regs. PORTA, 0x00 -> PORTB CLRF PORTB ;PORTB,PORTC. Porque en reset 0x00 -> PORTC CLRF PORTC ;tienen valores aleatorios BSF STATUS,RP0 ;sel. BANK3 para registros ANSEL, BSF STATUS,RP1 ;ANSELH 0x00 -> ANSEL CLRF ANSEL ;PORTA con funcion I/O digital 0x00 -> ANSELH CLRF ANSELH ;PORTB con funcion I/O digital BSF STATUS,RP0 ;sel. BANK1 para TRISA,TRISB,TRISC BCF STATUS,RP1 0xFF -> TRISA MOVLW H'FF' ;todos los pins del PORTA inputs MOVWF TRISA 0x00 -> TRISB CLRF TRISB ;todos los pines del PORTB outputs 0xF0 -> TRISC MOVLW 0xF0 ;pines RC7:RC4 inputs, MOVWF TRISC ;RC3:RC0 outputs Configurar todos los puertos del PIC16F877A como I/O digital,PORTA → input,PORTB → OUPUT,q PORTC<7:4> → input, PORTC<3:0> → output, PORTD → input , PORTE<2:1> → input, PORTE<0> → output
  • 9. 2012/09/17 06:07 9/10 Configurando los puertos del PIC16F876A/877A/886/887 como I/O digital Laboratorio de microcomputadoras - http://localhost/dokuwiki/ Valores para SFRs Traduccion a codigo en ensamblador BCF STATUS,RP0 ;sel. BANK0 para registros PORTA, BCF STATUS,RP1 ;PORTB,PORTC,PORTD,PORTE 0x00 -> PORTA CLRF PORTA ;inicializar a 0 a los regs. PORTA, 0x00 -> PORTB CLRF PORTB ;PORTB,PORTC,PORTD,PORTE. 0x00 -> PORTC CLRF PORTC ;porque en reset tienen valores 0x00 -> PORTD CLRF PORTD ;aleatorios 0x00 -> PORTE CLRF PORTE BSF STATUS,RP0 ;Sel. BANK1 para registros ADCON1, BCF STATUS,RP1 ;TRISA,TRISB,TRISC,TRISD,TRISE 0x07 -> ADCON1 MOVLW 0x07 ;PORTA y PORTE con funcion de I/O MOVWF ADCON1 ;digital 0 -> TRISE<4> BCF TRISE,4 ;PORTD y PORTE sin funcion de ;Parallel slave port 0xFF -> TRISA MOVLW H'FF' ;Todos los pines del PORTA inputs MOVWF TRISA 0x00 -> TRISB CLRF TRISB ;Todos los pines del PORTB outputs 0xF0 -> TRISC MOVLW 0xF0 ;RC7:RC4 inputs, RC3:RC0 outputs MOVWF TRISC 0xFF -> TRISD MOVLW H'FF' ;Todos los pines del PORTD inputs MOVWF TRISD 1 -> TRISE<2> BSF TRISE,2 ;RE<2> input 1 -> TRISE<1> BSF TRISE,1 ;RE<1> input 0 -> TRISE<0> BCF TRISE,0 ;RE<0> output
  • 10. Last update: 2012/09/17 06:06 articles:digitalio http://localhost/dokuwiki/doku.php?id=articles:digitalio http://localhost/dokuwiki/ Printed on 2012/09/17 06:07 3.0 Referencias Datasheet PIC16F886/8871. Datasheet PIC16F876A/877A2. Proteus . Software comercial para el desarrollo de esquematicos, simulacion virtual del prototipo y3. creacion del circuito impreso(PCB). Se utilizo para la creacion de los esquematicos. From: http://localhost/dokuwiki/ - Laboratorio de microcomputadoras Permanent link: http://localhost/dokuwiki/doku.php?id=articles:digitalio Last update: 2012/09/17 06:06