Вы находитесь на странице: 1из 60

Seguidores de clase

Universidad Pontificia de Salamanca (Madrid)

Microcontrolador PIC 16F877

Microcontroladores
INDICE

Versin 1.3 27 nov. 03

pg. 1

Caractersticas generales del PIC 16F877............................................................................................................ 1 Diagrama de bloques del PIC 16F877................................................................................................................. 2 Organizacin de la memoria RAM...................................................................................................................... 3 Tipos de direccionamiento de la RAM................................................................................................................ 4 Formas de modificar el Contador de Programa.................................................................................................... 4 Registro de estado .............................................................................................................................................. 5 ALU .................................................................................................................................................................. 5 Set de instrucciones............................................................................................................................................ 5 Instrucciones de transferencia ......................................................................................................................... 7 Instrucciones aritmticas................................................................................................................................. 7 Instrucciones lgicas ...................................................................................................................................... 7 Incrementos/Decrementos............................................................................................................................... 7 Instrucciones de rotacin ................................................................................................................................ 8 Instrucciones de manipulacin de bits................................................................................................................. 8 Instrucciones de control .................................................................................................................................. 8 Instrucciones de salto incondicional ................................................................................................................ 8 Instrucciones de salto condicional................................................................................................................... 8 Proceso de ensamblado....................................................................................................................................... 9 Representacin de nmeros y cadenas .............................................................................................................. 11 Directivos del ensamblador .............................................................................................................................. 11 Programa Display.ASM (Programa absoluto).................................................................................................... 13 Mdulo CONTAR.ASM (Programa reubicable)................................................................................................ 15 Mdulo Display.ASM ...................................................................................................................................... 17 Interrupciones. ................................................................................................................................................. 18 Proceso para atencin de interrupciones............................................................................................................ 19 Plantilla de programa absoluto con atencin a interrupciones. ........................................................................... 20 Reset................................................................................................................................................................ 21 Modo Sleep...................................................................................................................................................... 22 Reloj. ............................................................................................................................................................... 22 Bits de Configuracin....................................................................................................................................... 23 Perifricos 16F877 ........................................................................................................................................... 24 Puertos programables de E/S. ........................................................................................................................... 25 Timers ............................................................................................................................................................. 26 Timer0 ......................................................................................................................................................... 26 Watch dog Timer.......................................................................................................................................... 26 Timer1 ......................................................................................................................................................... 27 Timer2 ......................................................................................................................................................... 28 CAPTURE/COMPARE/PWM ......................................................................................................................... 29 Master Synchronous Serial Port........................................................................................................................ 30 Addressable Universal Synchronous Asynchronous Receiver Transmitter (USART). ........................................ 30 Analog/Digital Converter. ................................................................................................................................ 30 Microcontrolador 16F876................................................................................................................................ 31 PICMIN........................................................................................................................................................... 32 PIC-ENT1........................................................................................................................................................ 35 Placa de circuito impreso. ............................................................................................................................. 36 Lista de componentes ................................................................................................................................... 37 Herramienta: ................................................................................................................................................ 37 Identificacin de algunos componentes ......................................................................................................... 38 Componentes electrnicos ................................................................................................................................ 41 Fuente de alimentacin..................................................................................................................................... 41 Transformador:............................................................................................................................................. 41 Rectificador:................................................................................................................................................. 42 Filtro:........................................................................................................................................................... 42 Regulador:.................................................................................................................................................... 43 Interruptores/pulsadores:............................................................................................................................... 43 Teclados....................................................................................................................................................... 43 Otros dispositivos de entrada: ....................................................................................................................... 44

Microcontroladores

Versin 1.3 27 nov. 03

pg. 2

Dispositivos de salida:...................................................................................................................................... 45 Diodos LED ................................................................................................................................................. 45 Displays 7 segmentos ................................................................................................................................... 45 Displays LCD............................................................................................................................................... 46 Transistores:..................................................................................................................................................... 50 BC107.......................................................................................................................................................... 51 BD 139 ........................................................................................................................................................ 51 TIP122......................................................................................................................................................... 52 2N3055 ........................................................................................................................................................ 52 TRIACS........................................................................................................................................................... 53 MOTORES ...................................................................................................................................................... 54 Motores CC.................................................................................................................................................. 54 Servocontrol................................................................................................................................................. 55 Motores paso a paso ..................................................................................................................................... 55 Control de motores paso a paso..................................................................................................................... 56 Circuitos especficos: SAA1027.................................................................................................................... 57

Microcontroladores

Versin 1.3 27 nov. 03

pg. 1

Caractersticas generales del PIC 16F877


Procesador Descripcin Ncleo Interrupciones Reloj Reset Instrucciones M. de programa M. de datos RAM M. de datos EEPROM Pila M. de datos ext. EEPROM Puertos programables de E/S Timers/Counters Puertos de captura/comparacin de datos Moduladores de ancho de pulso (PWM) Conversor Analgico/Digital de 10 bits Puerto serie sncrono USART Parallel Slave Port Caractersticas RISC, Arq. Harvard, 20 MHz. 5 MIPS 14 fuentes posibles de interrupcin 0-20 MHz. Master Clear, Brown Out, Watchdog 35 instrucciones de 14 bits 8 K palabras de 14 bits 368 registros de 8 bits 256 registros de 8 bits 8 palabras de 13 bits Hasta 256 KBytes Hasta 33 bits, pueden ser usados por otros perifricos Dos de 8 bits y uno de 16 bits Dos de 8 bits Dos de 8 bits Con un MPX de 8 canales para 8 entradas diferentes Configurable en modo SPI e I2C Para conexiones RS 232 8 bits + 3 bits de control

Memoria

Perifricos

Tabla 1 Caractersticas generales del PIC 16F877

Microcontroladores

Versin 1.3 27 nov. 03

pg. 2

Diagrama de bloques del PIC 16F877

Figura 1 Diagrama de bloques del PIC 16F877

Microcontroladores

Versin 1.3 27 nov. 03

pg. 3

Organizacin de la memoria RAM


Registro
Indirect. addr.(*) TMR0 PCL STATUS FSR PORTA PORTB PORTC PORTD PORTE PCLATH INTCON PIR1 PIR2 TMR1L TMR1H T1CON TMR2 T2CON SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG CCPR2L CCPR2H CCP2CON ADRESH ADCON0
Dir. 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH 1EH 1FH 20H

Registro
Indirect. addr.(*) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC TRISD TRISE PCLATH INTCON PIE1 PIE2 PCON

SSPCON2 PR2 SSPADD SSPSTAT

TXSTA SPBRG

ADRESL ADCON1

Dir. 80H 81H 82H 83H 84H 85H 86H 87H 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH 90H 91H 92H 93H 94H 95H 96H 97H 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH A0H

Registro
Indirect. addr.(*) TMR0 PCL STATUS FSR PORTB

PCLATH INTCON EEDATA EEADR EEDATH EEADRH

Registros de propsito general 96 bytes

Dir. 100H 101H 102H 103H 104H 105H 106H 107H 108H 109H 10AH 10BH 10CH 10DH 10EH 10FH 110H 111H 112H 113H 114H 115H 116H 117H 118H 119H 11AH 11BH 11CH 11DH 11EH 11FH 120H

Registro
Indirect. addr.(*) OPTION_REG PCL STATUS FSR TRISB

PCLATH INTCON EECON1 EECON2

Registros de propsito general 96 bytes

Dir. 180H 181H 182H 183H 184H 185H 186H 187H 188H 189H 18AH 18BH 18CH 18DH 18EH 18FH 190H 191H 192H 193H 194H 195H 196H 197H 198H 199H 19AH 19BH 19CH 19DH 19EH 19FH 1A0H

Registros de propsito general 96 bytes

Registros de propsito general 80 bytes

EFH F0H

16FH 170H

1EFH 1F0H

Acceso a 70H-7FH
7FH FFH

Acceso a 70H-7FH
17FH

Acceso a 70H-7FH
1FFH

Banco 0

Banco 1

Banco 2

Banco 3

(*) No es un registro fsico, sino el indicador de acceso indirecto a memoria

Tabla 2 Organizacin de la memoria RAM

Microcontroladores

Versin 1.3 27 nov. 03

pg. 4

Tipos de direccionamiento de la RAM

Figura 2 Tipos de direccionamiento para apuntar a los registros de la RAM

Formas de modificar el Contador de Programa

Figura.3 Formas de modificar el Contador de Programa.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 5

Registro de estado
Registro de estado
7 0

IRP

RP1

RP0

TO

PD

DC
Flags ALU

Direccionamiento

Reset

Tabla.3 Bits del registro de estado.


DC= Flag de acarreo intermedio, indica en las sumas y restas desbordamiento entre los bits tres y cuatro. C= Flag de Carry. Si vale 1 despus de una suma indica desbordamiento, Si vale 1 despus de una resta indica que NO ha habido desbordamiento.

ALU

Figura.4 ALU y elementos directamente conectados a ella.

Set de instrucciones.
Formato de una instruccin: [etiqueta] mnemnico [operando1[, operando2]] [; comentario] Tipos de operandos en una instruccin: f: Indica un n de registro dentro de un banco de la RAM. Es un valor de 7 bits. d: Operando destino. Es un bit que si vale 0 indica que el resultado debe almacenarse en W y si vale 1 en el registro usado como primer operando. b: Es usado en las instrucciones que afectan a un nico bit, y apunta al bit destino de la instruccin. k: Constante. Las instrucciones van a manejar dos tipos de constantes, si la instruccin es CALL o GOTO la constante es de 11 bits (k11) y hace referencia a la direccin a la que se va a saltar. En cualquier otro caso se trata de un valor de 8 bits (k8) que se usar como valor inmediato en una operacin que siempre involucra a la ALU y al acumulador.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 6

Instruccin ADDLW ADDWF ANDLW ANDWF BCF BSF BTFSC BTFSS CALL CLRF CLRW CLRWDT COMF DECF DECFSZ GOTO INCF INCFSZ IORLW IORWF MOVF MOVLW MOVWF NOP RETFIE RETLW RETURN RLF RRF SLEEP SUBLW SUBWF SWAPF XORLW XORWF k8 f, d k8 f, d f, b f, b f, b f, b k11 f

Descripcin W+k8 W Si d=0, W+f W. si d=1 W+ff Wk8 W Si d=0, Wf W. si d=1 Wff 0 bit(b) de f 1 bit(b) de f Comprobar bit b en f, saltar si es 0 Comprobar bit b en f, saltar si es 1 PC pila, bits 4,3 de PCLATH + k11 PC 0f 0W Poner a 0 el Watch Dog Timer. f,d Si d=0, Ca1(f) W. si d=1 Ca1(f)f f, d Si d=0, f-- W. si d=1 f-- f f, d Si d=0, f-- W, si d=1 f-- f, saltar si cero k11 bits 4,3 de PCLATH + k11 PC f, d Si d=0, f++ W. si d=1 f ++f f, d Si d=0, f++ W, si d=1 f++ f, saltar si cero k8 Wk8 W f, d Si d=0, Wf W. si d=1 Wff f, d Si d=0, f W. si d=1 ff k8 k8 W f W f No operar pila PC, 1 GIE k8 pila PC; k8 W pila PC Rotacin a la izquierda a travs de carry de f, f, d dejando el resultado en W o f segn d Rotacin a la derecha a travs de carry de f, f, d dejando el resultado en W o f segn d Pasar a modo standby k8 k8 -W W f, d Si d=0, f-W W. si d=1 f-Wf Intercambia los dos nibbles (4 bits) de f, f, d dejando el resultado en W o f segn d k8 Wk8 W f, d Si d=0, Wf W. si d=1 Wff

Flags modif.. C, DC, Z C, DC, Z Z Z Ninguno Ninguno Ninguno Ninguno Ninguno Z Z TO , PD Z Z Ninguno Ninguno Z Ninguno Z Z Z Ninguno Ninguno Ninguno GIE Ninguno Ninguno C C TO , PD C, DC, Z C, DC, Z Ninguno Z Z

Tabla 4 Set de instrucciones del PIC 16F877 ordenadas alfabticamente.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 7

Instrucciones de transferencia
CLRF CLRW MOVLW MOVWF MOVF SWAPF f k8 f f, d f, d 0f 0W k8 W W f Si d=0, f W. si d=1 ff Intercambia los dos nibbles (4 bits) de f, dejando el resultado en W o f segn d Flags modif.. Z Z Ninguno Ninguno Z Ninguno

Instrucciones aritmticas
ADDLW ADDWF SUBLW SUBWF k8 f, d k8 f, d W+k8 W Si d=0, W+f W. si d=1 W+ff k8-W W Si d=0, f-W W. si d=1 f-Wf Flags modif.. C, DC, Z C, DC, Z C, DC, Z C, DC, Z

Instrucciones lgicas
ANDLW ANDWF COMF IORLW IORWF XORLW XORWF k8 f, d f,d k8 f, d k8 f, d Wk8 W Si d=0, Wf W. si d=1 Wff Si d=0, Ca1(f) W. si d=1 Ca1(f)f Wk8 W Si d=0, Wf W. si d=1 Wff Wk8 W Si d=0, Wf W. si d=1 Wff Flags modif.. Z Z Z Z Z Z Z

Incrementos/Decrementos
DECF INCF f, d f, d Si d=0, f-- W. si d=1 f-- f Si d=0, f++ W. si d=1 f ++f Flags modif.. Z Z

Microcontroladores

Versin 1.3 27 nov. 03

pg. 8

Instrucciones de rotacin
Flags modif.. RLF RRF f, d f, d Rotacin a la izquierda a travs de carry de f, dejando el resultado en W o f segn d Rotacin a la derecha a travs de carry de f, dejando el resultado en W o f segn d C C

Instrucciones de manipulacin de bits


BCF BSF f, b f, b 0 bit(b) de f 1 bit(b) de f Flags modif.. Ninguno Ninguno

Instrucciones de control
Flags modif.. CLRWDT SLEEP Poner a 0 el Watch Dog Timer. Pasar a modo standby TO , PD TO , PD

Instrucciones de salto incondicional


Flags modif.. Ninguno k11 PC pila, bits 4,3 de PCLATH + k11 PC k11 bits 4,3 de PCLATH + k11 PC Ninguno GIE pila PC, 1 GIE k8 pila PC; k8 W Ninguno Ninguno pila PC

CALL GOTO RETFIE RETLW RETURN

Instrucciones de salto condicional


BTFSC BTFSS DECFSZ INCFSZ f, b f, b f, d f, d Comprobar bit b en f, saltar si es 0 Comprobar bit b en f, saltar si es 1 Si d=0, f-- W, si d=1 f-- f, saltar si cero Si d=0, f++ W, si d=1 f++ f, saltar si cero Flags modif.. Ninguno Ninguno Ninguno Ninguno

Microcontroladores

Versin 1.3 27 nov. 03

pg. 9

Proceso de ensamblado

Figura 5 Proceso de ensamblado de un programa absoluto.

Figura Error! No hay texto con el estilo especificado en el documento..6 Proceso de ensamblado de un programa con cdigo reubicable.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 10

Figura 7 Entradas y salidas para las herramientas de desarrollo MPLAB

Microcontroladores

Versin 1.3 27 nov. 03

pg. 11

Representacin de nmeros y cadenas


Base Binario Octal Decimal Hexadecimal Carcter String Sintaxis B'dgitos binarios' O'gitos octales' D'dgitos decimales' H'dgitos hexadecimales' 0xdgitos hexadecimales Los caracteres se almacenan en cdigo ASCII de 7 bits Los caracteres se almacenan en cdigo ASCII de 7 bits Ejemplo B'101' O'123' D'123' H'12AB' 0x12AB A'a' 'a' "cadena de caracteres"

Directivos del ensamblador


Veremos algunos de los directivos del ensamblador.

Directivos de declaracin de secciones


Tipo CODE IDATA. UDATA UDATA_ACS. UDATA_OVR. UDATA_SHR. Nombre por defecto .code .idata .udata .udata_acs .udata_ovr .udata_shr Descripcin Esta seccin contendr cdigo. El resto de secciones slo datos. Esta seccin contendr variables inicializadas. Esta seccin contendr variables no inicializadas. Esta seccin contendr variables accesibles de forma ms rpida. Esta seccin contendr variables temporales sobreescribibles. Esta seccin contendr variables accesibles en varios bancos.

Tabla 5 Directivos de declaracin de secciones.

RADIX
RADIX hex|dec|oct

CBLOCK
CBLOCK [<expresin>] <NomVar>[:<incremento>][,<NomVar>[:<incremento>][, ...]] ENDC Var1 Var2 Var3 EQU 0x20 EQU 0x21 EQU 0x22 CBLOCK 0x20 Var1, Var2, Var3 ENDC CBLOCK 0x30 DobleByte:0, DobleByteAlto, DobleByteBajo Nombre: TAM_NOMBRE Word1:2, Word2: 2 Var1, Var2, Var3 ENDC

Microcontroladores

Versin 1.3 27 nov. 03

pg. 12

RES
[<NomVar>] RES <Unidades_de_memoria>. UDATA ValorActual RES 1 Aux1 RES 1 Aux2 RES 2 Aux3 RES 1

INCLUDE
INCLUDE <Fichero_a_incluir>

LIST
LIST [<opcin>, ... , <Opcin>] Opcin n=nnn p=<tipo> r=<radix> ..... Valor por defecto 60 Ninguno hex Descripcin Lneas por pgina de listado Selecciona procesador Selecciona radix (hex, dec, oct)

LIST p=16F877, r=dec

ORG
[Etiqueta] ORG <expresin> ORG 0x20

EQU
<NomVar> EQU 0x20

#DEFINE
#define <nombre> [<cadena_de _caracteres>] #define TAM_NOMBRE 0x20 #define BitControl 0x19,7 ..... bsf BitControl ; Equivale a bsf 0x19, 7

EXTERN
EXTERN <Etiqueta> [, <Etiqueta> ... ] EXTERN Var1 ....... MOVF Var1, W

GLOBAL
GLOBAL <Etiqueta> [, <Etiqueta> ... ] UDATA RES 1 RES 2 GLOBAL Var1, Var2

Var1 Var2

Microcontroladores

Versin 1.3 27 nov. 03

pg. 13

Programa Display.ASM (Programa absoluto)


; Programa: Disp1.ASM list p=16f877 ; Indicamos cual va a ser el procesador destino #include p16f877.inc; Define gran cantidad de constantes relacionadas ; con este procesador CBLOCK 0X20 ValorActual, Aux1, Aux2, Aux3 ENDC ORG goto ORG 0 Inicio 0x10

Inicio ; En primer lugar inicializaremos el puerto C para que configure todas sus lneas ; como salidas. Se supone que a este puerto se han conectado los siete segmentos ;de un display ; Inicializamos las variables clrf ValorActual ; Configuramos los bits del BANKSEL TRISC clrf TRISC clrf STATUS Bucle movf ValorActual, call hex27seg ; movwf PORTC incf ValorActual, btfsc ValorActual, clrf ValorActual movlw 8 movwf Aux1 Espera call Espera1 ; Rutina con un retardo de 0,13 seg. Aprox. decfsz Aux1, F goto Espera goto Bucle ; Retornar al bucle principal ;******************************* Espera1 ;******************************* ; Realiza 256 llamadas a la rutina Espera2 movlw 0xff movwf Aux2 Bucle1 call Espera2 decfsz Aux2, F goto Bucle1 return ;******************************* Espera2 ;******************************* ; Recorre 256 veces el bucle Bucle2. movlw 0xff movwf Aux3 Bucle2 decfsz Aux3, F goto Bucle2 return puertoC como salidas ; Configurar pines de PORTC como salidas ; Apuntamos a la pgina 0 ; Comienzo del bucle principal W ; Muevo ValorActual a W Llamamos a rutina de conversin ; ponemos resultado en PORTC (el display) F ; Incrementamos el valor para la siguiente 4 ; iteracin, y si se activa el bit 4, hemos ; llegado a 10H, y reseteamos la variable. ; Inicializamos Aux1 a 8 para conseguir ; una espera algo mayor que 1 segundo.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 14

;**************************************** hex27seg ;**************************************** ; Subrutina hex27seg, que recibe un valor hexadecimal de un dgito en W, ; y devuelve en el mismo registro el valor correspondiente al de un ; display de 7 segmentos. ; A continuacin se muestra el nombre de cada segmento en un Display ; ----; | a | ; f| |b ; | | ; ----; | g | ; e| |c ; | | ; ----; d ; Se asignar el bit 7 al segmento 'a', el 6 al 'b', ... , el 1 al 'g' ; El bit 0 queda sin asignar. Se puede usar para el punto digital del display ; Los segmentos a iluminar para cada dgito son: ; Bits 7,6,5,4,3,2,1,0 Valor binario ; ==== =============== ============= ; 0 = a,b,c,d,e,f B'11111100' ; 1 = b,c B'01100000' ; 2 = a,b, d,e, g B'11011010' ; 3 = a,b,c,d, g B'11110010' ; 4 = b,c, f,g B'01100110' ; 5 = a, c,d, f,g B'10110110' ; 6 = a, c,d,e,f,g B'10111110' ; 7 = a,b,c B'11100000' ; 8 = a,b,c,d,e,f,g B'11111110' ; 9 = a,b,c, f,g B'11100110' ; A = a,b,c, e,f,g B'11101110' ; B = c,d,e,f,g B'00111110' ; C = a, d,e,f B'10011100' ; D = b,c,d,e, g B'01111010' ; E = a, d,e,f,g B'10011110' ; F = a, e,f,g B'10001110' ANDLW B'00001111' ADDWF PCL, F retlw B'11111100' retlw B'01100000' retlw B'11011010' retlw B'11110010' retlw B'01100110' retlw B'10110110' retlw B'10111110' retlw B'11100000' retlw B'11111110' retlw B'11100110' retlw B'11101110' retlw B'00111110' retlw B'10011100' retlw B'01111010' retlw B'10011110' retlw B'10001110' end

Microcontroladores

Versin 1.3 27 nov. 03

pg. 15

Mdulo CONTAR.ASM (Programa reubicable)


; ; Programa: CONTAR.ASM

list p=16f877 ; Indicamos cual va a ser el procesador destino #include p16f877.inc; Define gran cantidad de constantes relacionadas ; con este procesador UDATA ValorActual RES 1 Aux1 RES 1 Aux2 RES 1 Aux3 RES 1 STARTUP PROG1 CODE ; Selecciona la direccin de reset desde el script 16F877.lkr goto Inicio CODE ; Selecc la dir inic del programa desde el script 16F877.lkr extern hex27seg

Inicio ; En primer lugar inicializaremos el puerto C para que configure todas sus lneas ; como salidas. Se supone que a este puerto se han conectado los siete segmentos ; de un display ; Inicializamos las variables clrf ValorActual ; Configuramos los bits del puertoC como salidas BANKSEL TRISC clrf TRISC ; Configurar pines de PORTC como salidas Bucle BANKSEL ValorActual movf ValorActual, W ; Muevo ValorActual a W call hex27seg ; Llamamos a rutina de conversin BANKSEL PORTC movwf PORTC ; ponemos resultado en PORTC (el display) BANKSEL ValorActual incf ValorActual, F ; Incrementamos el valor para la siguiente btfsc ValorActual, 4 ; iteracin, y si se activa el bit 4, hemos clrf ValorActual ; llegado a 10H, y reseteamos la variable. movlw 8 ; Inicializamos Aux1 a 8 para conseguir movwf Aux1 ; una espera algo mayor que 1 segundo. Espera call Espera1 decfsz goto Espera goto Bucle ; Rutina con un retardo de 0,13 seg. Aprox. Aux1, F ; Retornar al bucle principal

Microcontroladores

Versin 1.3 27 nov. 03

pg. 16

;******************************* Espera1 ;******************************* ; Realiza 256 llamadas a la rutina Espera2 movlw 0xFF movwf Aux2 Bucle1 call Espera2 decfsz Aux2, F goto Bucle1 return ;******************************* Espera2 ;******************************* ; Recorre 256 veces el bucle Bucle2. movlw 0xFF movwf Aux3 Bucle2 decfsz Aux3, F goto Bucle2 return end

Microcontroladores

Versin 1.3 27 nov. 03

pg. 17

Mdulo Display.ASM
; Mdulo Display.asm. Presenta la subrutina hex27seg, que recibe ; un valor hexadecimal de un dgito, y devuelve el valor correspondiente ; al de un display de 7 segmentos. ; A continuacin se muestra el nombre de cada segmento en un Display ; ----; | a | ; f| |b ; | | ; ----; | g | ; e| |c ; | | ; ----; d ; Se asignar el bit 7 al segmento 'a', el 6 al 'b', ... , el 1 al 'g' ; El bit 0 queda sin asignar. Se puede usar para el punto digital del display ; Los segmentos a iluminar para cada dgito son: ; Bits 7,6,5,4,3,2,1,0 Valor binario ; ==== =============== ============= ; 0 = a,b,c,d,e,f B'11111100' ; 1 = b,c B'01100000' ; 2 = a,b, d,e, g B'11011010' ; 3 = a,b,c,d, g B'11110010' ; 4 = b,c, f,g B'01100110' ; 5 = a, c,d, f,g B'10110110' ; 6 = a, c,d,e,f,g B'10111110' ; 7 = a,b,c B'11100000' ; 8 = a,b,c,d,e,f,g B'11111110' ; 9 = a,b,c, f,g B'11100110' ; A = a,b,c, e,f,g B'11101110' ; B = c,d,e,f,g B'00111110' ; C = a, d,e,f B'10011100' ; D = b,c,d,e, g B'01111010' ; E = a, d,e,f,g B'10011110' ; F = a, e,f,g B'10001110' W equ 0 F EQU 1 PCL EQU 2 CODE hex27seg global hex27seg ANDLW B'00001111' ADDWF PCL, F retlw B'11111100' retlw B'01100000' retlw B'11011010' retlw B'11110010' retlw B'01100110' retlw B'10110110' retlw B'10111110' retlw B'11100000' retlw B'11111110' retlw B'11100110' retlw B'11101110' retlw B'00111110' retlw B'10011100' retlw B'01111010' retlw B'10011110' retlw B'10001110' end

Microcontroladores

Versin 1.3 27 nov. 03

pg. 18

Interrupciones.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 19

GIE 0 1 1 1 1 1 1 1 1

PEIE X 0 1 X X X X X X

T0IE X X X 0 1 X X X X

INTE RBIE xxxIE Significado X X X Todas las interrupciones deshabilitadas X X X Deshabilitadas las interrupciones de los perifricos internos salvo Timer 0 X X X Permitidas las interrupciones de los perifricos internos. Hay un bit adicional para cada perifrico. X X X Deshabilitada Int. Timer 0 X X X Habilitada Int. Timer 0 0 X X Deshabilitada Int. externa 1 X X Habilitada Int. externa X 0 X Deshabilitada Int. cambio lneas RB4,..,RB7 X 1 X Habilitada Int. cambio lneas RB4,..,RB7

Tabla 6 Bits de habilitacin de interrupciones en INTCOM


Bit TMR1IE TMR2IE CCP1IE SSPIE TXIE RCIE ADIE PSPIE CCP2IE BCLIE EEIE Reg. bit Activar interrupcin si PIE1 0 Overflow en el Timer 1 PIE1 1 Overflow en el Timer 2 PIE1 2 Captura o Comparacin en CCP1 PIE1 3 Byte recibido o transmitido por el puerto serie sncrono PIE1 4 Byte transmitido por la USART PIE1 5 Byte recibido por la USART PIE1 6 Finalizada conversin por el conversor A/D PIE1 7 Byte recibido o transmitido por el puerto paralelo esclavo PIE2 0 Captura o Comparacin en CCP2 PIE2 3 Colisin en el bus I2C PIE2 4 Fin de operacin de escritura en la EEPROM Flag TMR1IF TMR2IF CCP1IF SSPIF TXIF RCIF ADIF PSPIF CCP2IF BCLIF EEIF Reg. bit PIR1 0 PIR1 1 PIR1 2 PIR1 3 PIR1 4 PIR1 5 PIR1 6 PIR1 7 PIR2 0 PIR2 3 PIR2 4

Tabla 7 Bits de habilitacin de interrupciones para perifricos y flags activados.

Proceso para atencin de interrupciones


1 Cuando se produce la interrupcin 0 -->GIE, Dir. retorno --> Pila, 4--> Program Counter. La rutina debe: 1 Salvar en algn registro reservado al efecto el contenido del registro de Status y el acumulador. 2 Haciendo polling se detecta cual ha sido la fuente de la interrupcin. 3 Ejecutar la rutina de atencin a la interrupcin. 4 Desactivar el flag correspondiente a esa interrupcin 5 Ejecutar la instruccin RETFIE de retorno de interrupcin y que reactiva GIE.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 20

Plantilla de programa absoluto con atencin a interrupciones.


list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF

;***** VARIABLE DEFINITIONS w_temp EQU 0x70 ; variable used for context saving status_temp EQU 0x71 ; variable used for context saving ;********************************************************************* ORG 0x000 ; processor reset vector clrf PCLATH ; ensure page bits are cleared goto main ; go to beginning of program ORG movwf movf movwf CLRF BTFSC GOTO BTFSC GOTO : : BTFSC GOTO INT_ERROR_LP1 GOTO 0x004 ; interrupt vector location w_temp ; save off current W register contents STATUS,w ; move status register into W register status_temp ; save off contents of STATUS register STATUS PIR1, TMR1IF T1_INT PIR1, ADIF AD_INT ; ; ; ; ; ; ; ; ; Bank0 Timer1 overflow interrupt? YES NO, A/D interrupt? YES, do A/D thing

INTCON, RBIF PORTB_INT

NO, Change on PORTB interrupt? YES, Do PortB Change thing

INT_ERROR_LP1

; NO, do error recovery ; This is the trap if you enter the ISR ; but there were no expected ; interrupts

END_ISR

movf status_temp,w ; retrieve copy of STATUS register movwf STATUS ; restore pre-isr STATUS register contents swapf w_temp,f swapf w_temp,w ; restore pre-isr W register contents retfie ; return from interrupt T1_INT ; Routine when the Timer1 overflows : ; BCF PIR1, TMR1IF ; Clear the Timer1 overflow interrupt flag GOTO END_ISR ; Ready to leave ISR (for this request) AD_INT ; Routine when the A/D completes : ; BCF PIR1, ADIF ; Clear the A/D interrupt flag GOTO END_ISR ; Ready to leave ISR (for this request) : ; PORTB_INT ; Routine when PortB has a change : ; GOTO END_ISR ; Ready to leave ISR (for this request) main ; remaining code goes here END ; directive 'end of program'

Microcontroladores

Versin 1.3 27 nov. 03

pg. 21

Reset.
Coloca a la CPU en un estado conocido. Causas: Power On Reset POR. MCLR en estado normal. MCLR en estado SLEEP. WDT en estado normal. Brown-out Reset.

Power On Reset

Power-up Timer (PWRT) Oscillator Start-up Timer (OST)

Microcontroladores
PCON

Versin 1.3 27 nov. 03 STATUS

pg. 22

POR
0 0 0 1 1 1 1 1

BOR
X X X 0 1 1 1 1

TO
1 0 X 1 0 0 u 1

PD
1 X 0 1 1 0 u 0

Significado Power-on Reset Estado incorrecto Estado incorrecto Brown-out Reset WDT Reset WDT Wake-up MCLR reset during normal operation MCLR reset during SLEEP

Tabla 8 Bits indicativos de la ltima reinicializacin


Necesidad de la puesta a '1' de todos los bits al arrancar. Brown-out reset: Se produce al bajar la tensin de alimentacin por debajo de un umbral (~4V.) WDT:

Timer que genera un reset al desbordarse. Usa una fuente de reloj interna. Puede definirse un valor para un postscaler, que permite definir diferentes tiempos. Instrucciones CLRWDT y SLEEP.

Existen tablas indicando como se inicializan los registros de la RAM con un reset, pero se distinguen bsicamente tres situaciones: Reset generado por POR / BOR : Se inicializan prcticamente todos los registros. Reset generado por MCLR /WDT: Se inicializan los registros de algunos perifricos y algunos bsicos como el contador de programa y parte del registro de flags. Reset generado por MCLR /WDT mientras se estaba en modo SLEEP: Prcticamente ningn registro cambia su contenido.

Modo Sleep
Detiene a la CPU. Principal ventaja: el consumo de la CPU baja a niveles muy bajos. Se despierta mediante: Activacin de MCLR Activacn de INT, RB4..RB7 y algunas interrupciones asociadas a perifricos internos.

Reloj.
Existen cuatro fuentes posibles para el reloj de la CPU: LP: Low Power Crystal (32KHz. - 400 KHz.) XT: Crystal/Resonator (400 KHz. - 4 MHz.) HS: High Speed Crystal Resonator (2 MHz. - 20 MHz.) RC: Resistor/Capacitor (hasta 4 MHz.)

Microcontroladores

Versin 1.3 27 nov. 03

pg. 23

Bits de Configuracin.
A partir de la direccin 0x1FFF de la memoria de programa, se dispone de 8 palabras extras. Estas direcciones no son legibles desde el programa o la aplicacin, pero si pueden ser ledas en el aparato de grabacin. Las 4 primeras words (0x2000 a 0x2003) se denominan ID Location, sirve para almacenar un n de serie, o un n de versin de software instalada, etc. La direccin 0x2006 es de slo lectura y tiene un identificador del modelo de microcontrolador. La siguiente word (0x2007) , es la palabra de configuracin, sus bits tiene los siguiente significados:

Bits 13-12 y 5-4: Estn relacionados con varios niveles de proteccin de nuestro SW. Bit 11: DEBUG. Si vale 0 se desactiva el modo ICD, y RB6 y RB/ quedan como lneas I/O estndar. Bit 9: WRT. Permite o no, escribir en la memoria Flash de programa. Bit 8. CPD Proteccin de los datos de la EEPROM. Bit 7: LVP. Permite la grabacin a bajo voltaje. Bit 6: Habilita el control del Brown-out. Bit 3. PWRT . Permite activar o desactivar el Power-up Timer. Bit 2: WDTE. Permite activar o desactivar el Watch Dog. Bit 1- 0. Seleccin de tipo de generador de reloj:

Uso de directivos de configuracin: __CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF __IDLOCS H'1234', H'3456' Constantes predefinidas en el fichero 16F877.INC _CP_ALL _CP_HALF _CP_UPPER_256 _CP_OFF _DEBUG_ON _DEBUG_OFF _WRT_ENABLE_ON _WRT_ENABLE_OFF _CPD_ON _CPD_OFF _LVP_ON _LVP_OFF _BODEN_ON _BODEN_OFF _PWRTE_OFF _PWRTE_ON _WDT_ON _WDT_OFF _LP_OSC _XT_OSC _HS_OSC _RC_OSC EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU H'0FCF' H'1FDF' H'2FEF' H'3FFF' H'37FF' H'3FFF' H'3FFF' H'3DFF' H'3EFF' H'3FFF' H'3FFF' H'3F7F' H'3FFF' H'3FBF' H'3FFF' H'3FF7' H'3FFF' H'3FFB' H'3FFC' H'3FFD' H'3FFE' H'3FFF'

Microcontroladores

Versin 1.3 27 nov. 03

pg. 24

Perifricos 16F877
Puertos programables de E/S Timers/Counters Puertos de captura/comparacin de datos Moduladores de ancho de pulso (PWM) Conversor Analgico/Digital de 10 bits Puerto serie sncrono USART Parallel Slave Port

Circuito de 40 pines en formato. Salvo 7 pines, todos los dems estn asociados al menos con los puertos de E/S. Los 7 pines son: 4 pines para alimentacin, estn duplicados. 1 pin para MCLR y Vpp que es una tensin de 12 a 14 V. usada cuando est en modo programacin. 2 pines relacionados con entradas o salidas de reloj, en funcin del tipo de reloj utilizado.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 25

Puertos programables de E/S.


Disponemos de hasta 33 pines. A medida que se usan otros perifricos internos se detraen pines de E/S Las principales caractersticas son: Programables como entradas o salidas individualmente. Capaces de trabajar con corrientes de 25 mA. en cada lnea. No obstante la corriente total en los puertos A, B y E no puede superar los 200 mA. y en los puertos C y D otros 200 mA. Entradas tipo TTL o ST (Schmitt Trigger). Resistencias Pull-up (habilitables por programa) en el puerto B

Las lneas de E/S estn agrupadas en 5 puertos: A (6 bits), B (8 bits), C (8 bits), D (8 bits) y E (3 bits). Cada puerto de E/S tiene asociados dos registros TRISX y PORTX. El primer registro dispone de un bit por cada lnea del puerto, y controlar si funciona como entrada (Input, 1) o como salida (Output, 0). El segundo registro nos permite acceder al puerto. Con una escritura se modifican los bits configurados como salida, y con una lectura accedemos tanto a los de entrada como a los de salida. Si se realiza una escritura y de forma inmediata una lectura, puede que la salida no haya alcanzado el nivel adecuado generando incoherencias. El puerto A tiene todas sus salidas Totem pole, excepto la RA4 que es del tipo Open collector (open drain de forma ms exacta) lo que obliga a poner una resistencia de Pull Up para poder obtener '1'. Adems despus de un reset estas lneas estn configuradas como entradas analgicas (como digitales devuelven '0'). Por medio del registro ADCON se pueden convertir en entradas digitales. El puerto B dispone de resistencias Pull-up que pueden activarse por software cuando funcionan como entradas. La activacin se realiza con el bit RBPU (bit 7) del registro OPTION_REG (direcciones 81h y 181h). Adems la lnea RB0 puede funcionar como entrada de peticin de interrupcin. Para ello se debe activar el bit INTE (bit 4) del registro INTCON (direcciones 0Bh, 8Bh, 10Bh y 18Bh). Con el bit INTDEG (bit 6) de OPTION_REG (direcciones 81h y 181h) se selecciona si se activa la interrupcin con flanco de subida (1) o de bajada (0). Los puertos A y B cuando se configuran como entradas, trabaja con niveles TTL (salvo la lnea RA4) y los puertos C, D y E como Schmitt Trigger (tambin RA4).

TTL: VIL = 0,8 V., VIH = 2 V. ST: VIL = 1 V., VIH = 4 V. Permite cambios de tensin lentos en su entrada.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 26

Timers
Disponemos de 3 timers numerados del 0 al 2 y del Watch Dog Timer.

Timer0
Timer de 8 bits Puede ser ledo y escrito a travs del registro TMR0 (direcciones 1 y 101h) La entrada de reloj del temporizador puede seleccionarse que sea interna o externa. Interna: Frecuencia de reloj CPU dividida por 4. Externa: Entrada RA4/T0CKI Bit T0CS (bit 5) del OPTION_REG (direcciones 81h y 181h). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj externo, su frecuencia como mximo ser la mitad de la frecuencia de la entrada de reloj de la CPU. Si se selecciona el reloj externo, se puede utilizar como contador de pulsos en dicha entrada. En este caso se puede seleccionar si se activa la entrada por flanco de subida o de bajada: T0SE (bit 5) del OPTION_REG (direcciones 81h y 181h). 0 = flanco de subida, 1 = flanco de bajada. A este timer se le puede asociar un circuito divisor de la frecuencia de la entrada de reloj. Se le denomina Prescaler. Este circuito puede ser utilizado tambin por el Watch dog. En cualquier caso debe ser asignado a uno u otro. esto es seleccionado por el bit PSA (bit 3) del OPTION_REG (direcciones 81h y 181h). 0 = Timer 0, 1 = Watch dog. Tambin es posible seleccionar el factor de divisin. Se dispone de tres bits: PS2, PS1 y PS0, (bits 2, 1 y 0) del OPTION_REG (direcciones 81h y 181h) que introducen los factores de divisin que se muestran en la siguiente tabla: Bits PS 000 001 010 011 100 101 110 111 Timer0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 Watch dog 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupcin cada vez que se desborda el Timer0 cuando pasa de FFH a 0. Son los bits T0IE y T0IF del registro INTCON.

Watch dog Timer


Este mdulo permite inicializar la CPU cuando se rebasa el contador. Se activa por medio de los bits de configuracin del microcontrolador (en tiempo de programacin del chip) y permite recupera el sistema cuando se pierde el control del programa. El perodo con un valor de prescaler 1:1 oscila entre 7 y 33 mS. con un valor tpico de 18 mS. Esta tolerancia es debida a la imprecisin del oscilador interno que depende de la temperatura y la tensin de alimentacin bsicamente. Este perodo se puede ampliar con el prescaler hasta un factor de 1:128.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 27

Timer1
Timer de 16 bits Puede ser ledo y escrito a travs de los registros TMR1H y TMR1L. La entrada de reloj del temporizador puede seleccionarse que sea interna o externa. Interna: Frecuencia de reloj CPU dividida por 4. Externa: Entradas RC1/T1OSICCP2 y RC0/T1OSO/T1CKI Bit TMR1CS (T1CON<1>). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj externo, su frecuencia como mximo ser la mitad de la frecuencia de la entrada de reloj de la CPU. Tambin con reloj externo existen dos alternativas, colocar un cristal como fuente de reloj (hasta 200 KHz) o utilizar una seal digital. En el segundo caso solo se utiliza la lnea de entrada RC0/T1OSO/T1CKI. Para seleccionar una alternativa u otra, se dispone del bit T1OSCEN (T1CON<3>). Si vale 1 se usar el cristal activando el oscilador interno, si vale 0 se usan pulsos generados externamente. En este caso puede funcionar como contador de pulsos. Adems se dispone de un bit que permite activar y desactivar el Timer: TMR1ON (T1CON<0>) El timer dispone de un prescaler controlado por los bits T1CKPS1 y T1CKPS0 (T1CON<5:4>) cuyos factores de divisin que se muestran en la siguiente tabla: Bits T1CKPS 00 01 10 11 Timer1 1:1 1:2 1:4 1:8

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupcin cada vez que se desborda el Timer1 cuando pasa de FFFFH a 0. Son los bits TMR1IE y TMR1IF necesitando adems que estn activados los bits que habilitan las interrupciones de los perifricos (PEIE) y el general (GIE).

Microcontroladores

Versin 1.3 27 nov. 03

pg. 28

Timer2
Timer de 8 bits Puede ser ledo y escrito a travs del registro TMR2. La entrada de reloj del temporizador es interna, concretamente la frecuencia de reloj CPU dividida por 4. Se dispone de un bit que permite activar y desactivar el Timer: TMR2ON (T2CON<2>) El timer dispone de un prescaler controlado por los bits T2CKPS1 y T2CKPS0 (T2CON<1:0>) cuyos factores de divisin que se muestran en la siguiente tabla: Bits T2CKPS 00 01 1x Timer2 1:1 1:4 1:16

La salida del contador puede ser conectada a un postscaler, que dispone de 4 bits de control T2OUTPS3:T2OUTPS0 cuya salida pasa a controlar el flag de interrupcin asociado a este Timer. Los factores de divisin se muestran en la siguiente tabla:

Bits T2OUTPS 0000 0001 0010 . . . 1101 1110 1111

Salida de interrupcin 1:1 1:2 1:3 . . . 1:14 1:15 1:16

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupcin cada vez que se desborda el Timer2 cuando pasa de FFH a 0. Son los bits TMR2IE y TMR2IF necesitando adems que estn activados los bits que habilitan las interrupciones de los perifricos (PEIE) y el general (GIE).

Microcontroladores

Versin 1.3 27 nov. 03

pg. 29

CAPTURE/COMPARE/PWM
Mdulos de captura, comparacin y modulacin por ancho de pulso. Existen dos mdulos de este tipo: CCP1 y CCP2 cuyo funcionamiento es prcticamente idntico diferencindose en que el CCP2 podr comenzar una conversin en el mdulo A/D. Ambos mdulos son de 16 bits, y estn estrechamente relacionados con el Timer1. Modo captura. En este modo, el mdulo CCPx captura el contenido del Timer1 cuando se produce un evento. Los eventos posibles, se refieren a los cambios en las entradas RC1/T1OSI/CCP2 RC2/CCP1 y se distinguen las siguientes situaciones: Un flanco de bajada. Un flanco de subida. Cada 4 flancos de subida. Cada 16 flancos de subida.

En este modo se pueden calcular intervalos de tiempo entre dos sucesos de forma muy exacta. Si se han activado las interrupciones, se generar una por cada captura realizada. Modo comparacin. En este modo, el mdulo CCPx comparar el contenido de los registros de 16 bits del mdulo con el Timer1, de tal manera que cuando se produzca una coincidencia, se producir la interrupcin correspondiente cuando las interrupciones estn activadas y podr hacerse que las lneas asociadas RC1/T1OSI/CCP2 RC2/CCP1 se pongan a nivel alto, bajo o no cambien. Finalmente resetearn el Timer1 y en el caso del CCP2 adems se lanzar una conversin A/D si el conversor est activado (permite hacer muestreos peridicos) Modo PWM. En este caso se produce una salida PWM en el puerto CCPx, con una resolucin de 10 bits. Una seal PWM seal con onda rectangular de frecuencia fija, en la que se puede variar el tiempo en el que la misma permanece a 0 o a 1. Sustituye en la mayora de los casos a un conversor D/A. La frecuencia de la seal se establece por medio del Timer2 y el tiempo que permanece a 1 (Duty cycle) se controla por medio de los registros del CCP que se est utilizando.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 30

Master Synchronous Serial Port


Este mdulo implementa un interfaz de comunicaciones en serie. Existen multitud de dispositivos que permiten este tipo de comunicacin, tales como memorias EEPROM, conversores A/D, sensores de diferentes tipos (temperatura, posicin, distancia, ...), displays, otros microcontroladores, ... El mdulo puede operar en dos modos: SPI e I2C. SPI: Serial Peripheral Interface. Este interface suele ser utilizado para comunicar dos dispositivos entre si, uno se configura como master y el otro como esclavo. En este interface se definen las lneas: Serial Data Out (SDO) Serial Date In (SDI) Serial Clock (SCK) Adicionalmente se puede usar un cuarto pin en modo esclavo. Slave Select ( SS )

Permite velocidades de hasta 8 Mbps con reloj a 20 MHz. El master inicia las transferencias activando la lnea SCK, el esclavo recibe y transmite informacin cuando detecta que la lnea SCK se activa. Cada vez que recibe un byte, en modo esclavo, se puede activar la interrupcin correspondiente. I2C: Inter-Integrated Circuit. Permite la interconexin de mltiples dispositivos formando un bus. A cada dispositivo se le asigna una direccin y las tramas que se envan por el bus llevan direccionamiento para identificar los actores de la misma. En general se configura un dispositivo como master y el resto como esclavos, no obstante, se permiten buses multi-master, en este caso se dispone de mecanismos de deteccin de colisiones y gestin (arbitration) del Bus. se pueden alcanzar velocidades de 1 Mbps, y conectar hasta 128 o 1.024 dispositivos en funcin del tipo de direccionamiento utilizado..

Addressable Universal Synchronous Asynchronous Receiver Transmitter (USART).


Este mdulo implementa el popular interface de comunicaciones serie que tienen incluido gran cantidad de ordenadores. Permite comunicacin serie entre dos dispositivos, y en algunos modos de funcionamiento, permite la conexin de ms de dos dispositivos incluyendo 9 bits de direccionamiento (512 dispositivos).

Analog/Digital Converter.
Este mdulo permite la conexin de entradas analgicas para convertirlas en valores discretos obteniendo su valor. Aunque se dispone de un solo conversor, el microcontrolador dispone de un multiplexor analgico que permite la conexin de hasta ocho entradas analgicas.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 31

Microcontrolador 16F876
El 16F876 contiene el mismo ncleo que el 16F877, pero dispone de 28 pines, lo cual supone eliminar algunos de los perifricos de los presentes en su hermano mayor.

Tal y como se muestra en la figura, se puede observar que carece de los puertos D (8 bits) y E (3 bits), y en cuanto a perifricos, no existe el SPP (Slave Parallel Port) y el conversor A/D dispone de 5 entradas (frente a 8 del 16F877). Tambin se dispone de una entrada menos de alimentacin (un nico pin para VDD).

Microcontroladores

Versin 1.3 27 nov. 03

pg. 32

PICMIN

Nombre C1,2 X1 Jack Jack hembra Portapilas C7 D1 L1 R1,13 R11 R12 Pulsador PIC16F84A Zcalo Cable 0,5 Placa puntos

Descripcin Condensador cermico de 22pF Cristal de 4Mhz Jack macho para el portapilas Jack hembra circuito impreso Portapila plano de 4 unidades Condensador multicapa de 100nF Diodo 1N4148 Diodo LED 3mm Resistencia 4K7 Resistencia 330 ohmios Resistencia 100 ohmios Pulsador pequeo circuito impreso Microcontrolador PIC 16f84a Zocalo de 2x10 pines Cable de 0,5 rgido Placa de puntos pequea

USO Circuito de reloj Circuito de reloj Conector portapilas Alimentacin con jack Pilas Eliminacin de ruido Proteccin reset Circuito pruebas Pull-up Polarizacin led Proteccin reset Reset y circuito pruebas Microcontrolador Zocalo para el micro Conexionado Plano soldadura

Cantidad 2 1 1 1 1 1 1 1 2 1 1 2 1 1 1 m. 1

Material extra: Grabador TE-20 Soldador y estao opcionalmente. 4 pilas. Cable de 0,5 mm o similar. Tambin vale cable para grapinar.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 33

Microcontroladores

Versin 1.3 27 nov. 03

pg. 34

Pines en el 16F84

Microcontroladores

Versin 1.3 27 nov. 03

pg. 35

PIC-ENT1

Microcontroladores

Versin 1.3 27 nov. 03

pg. 36

Placa de circuito impreso.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 37

Lista de componentes
Componente C1 C3 D1 D2 DIS1 IC1 IC2 J1 JP1 LED1 Q1 R1, R4 R2 R3 R6 R5,7-13 S1, S2 X1 Cable Placa Conector Portapilas Valor 22p 10uF/16V. Tntalo 1N4148 1N4001 Display 7 segmentos ctodo comn Zcalo 40 pines torneados Zcalo 14 pines torneados Conector RJ11-6pines Placa CI 90 Jumper LED verde 3mm Cristal de cuarzo 4 MHz. 4K7 1/4 W. 100 1/4 W. 330 1/4 W. Potencimetro10K PT1-0V 220 1/4 W. Pulsador placa C.I.tipo P11522/2 Conector alimentacin para placa CI 90 3 m. de hilo 0,5 mm. Placa circuito impreso 100*100 mm. para prototipos, con cuadrados . Conector alimentacinareo Portapilas 4 pilas AA Cant. 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 8 2 1 3 1 1 1 0,04 0,4 0,01 0,01 0,01 0,15 0,01 0,13 0,25 0,30 4,43 0,79 0,35 Precio ud. 0,018 0,028 0,012 0,012 0,77 0,56 0,2 0,46 Total 0,036 0,028 0,012 0,012 0,77 0,56 0,4 0,46 0 0,04 0,4 0,02 0,01 0,01 0,15 0,08 0,26 0,25 0,9 4,43 0,79 0,35 9,90

Herramienta:
Alicate cortahilos. Alicate de punta plana. Soldador y estao. Polmetro.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 38

Identificacin de algunos componentes


Conector RJ11

Diodos

1N4001

1N4148

La manera ms simple de identificar los dos pines del LED es por transparencia como se muestra en la siguiente figura. Se observa que internamente el terminal 'gordo' corresponde al ctodo es decir el que se conecta hacia masa o 0V.

nodo

Ctodo

Microcontroladores

Versin 1.3 27 nov. 03

pg. 39

Cristal de cuarzo

Estos componentes no tienen polaridad.

Resistencias. Cdigo de colores.


Esta informacin ha sido extrada de http://www.unicrom.com Las dos primeras bandas dan una idea del valor base de la resistencia y la tercera banda nos indica por cuanto hay que multiplicar el valor base anterior para obtener el verdadero valor de la resistencia. La cuarta y ltima banda nos da la tolerancia.: Dorado 5%, Plateado 10%, sin color 20%.

La primera banda: Segunda banda: Tercera banda: Cuarta banda:

valor base valor base valor multiplicador Tolerancia en porcentaje

Significado de cada banda

Color
Negro Marrn Rojo Naranja Amarillo Verde Azul Violeta Gris Blanco

Valor base 0 1 2 3 4 5 6 7 8 9

Multiplicador x1 x 10 x 100 x 1,000 x 10,000 x 100,000 x 1,000,000 x 10,000,000 x 100,000,000

Microcontroladores

Versin 1.3 27 nov. 03

pg. 40

Condensadores

Condensadores de Tntalo. Atencin tienen polaridad. Junto a una de las conexiones aparece un signo '+' en miniatura.

Condensadores cermicos Usamos dos de 22 pF. No tienen polaridad

Pulsadores

Los pulsadores utilizados tienen 4 pines unidos entre s dos a dos. El 1 con el 2 y el 3 con el 4.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 41

Electrnica
Componentes electrnicos
Resistencias Condensadores Inductancias. Diodos Transistores Triacs ........ Activos Circuitos integrados Digitales Analgicos

Pasivos

Componentes electrnicos

Reguladores de tensin Amplificadores operacionales .......... Puertas Multiplexores Memoria Microcontroladores ........

Fuente de alimentacin

Esquema bsico:

Transformador:

Microcontroladores

Versin 1.3 27 nov. 03

pg. 42

Rectificador:
Media onda:

Onda completa con toma intermedia en transformador:

Onda completa sin toma intermedia en transformador:

Filtro:
Se construye con un condensador de alta capacidad entre la salida del rectificador y masa. Se recomiendan capacidades de entre 2.000 y 5.000 F por amperio que pueda proporcionar la F.A.

A la salida del regulador se suelo poner otro condensador de filtro pero de una capacidad inferior (entre 100 nF. y 10 F.)

Microcontroladores

Versin 1.3 27 nov. 03

pg. 43

Regulador:
La forma ms simple utilizar reguladores integrados tales como la familia 78xx y 79xx. Cortocircuitables. Con proteccin trmica y contra sobrecargas. Corrientes de hasta 1 A.

Dispositivos E/S
Interruptores/pulsadores:
Suelen utilizarse resistencias de Pull-up o Pull-down. Se debe disponer de un sistema de supresin de rebotes que puede ser HW. (biestable, red RC, ...) o SW.

Teclados
Tambin necesitan resistencias pull-up o Pull-down. Pueden conectarse de dos formas:

Tambin es necesario resolver el problema de los rebotes.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 44

Otros dispositivos de entrada:


Existen mltiples dispositivos que permiten obtener informacin del 'exterior'. Sensores de temperatura, luz, presin, y un largo etc. Es necesario acudir a los manuales de los fabricantes para conocer sus caractersticas, modo de conexin, etc. Un ejemplo de dispositivo es el CNY70, que contiene un emisor y un receptor de luz. Permite detectar por reflexin de la luz, si est en la proximidad de un objeto de color claro.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 45

Dispositivos de salida:
Diodos LED
Funcionan a 1,8 V. 10-20 mA. Tienen polaridad

Displays 7 segmentos
Varios diodos LED agrupados con el nodo o el ctodo comn.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 46

Displays LCD

Microcontroladores

Versin 1.3 27 nov. 03

pg. 47

Microcontroladores

Versin 1.3 27 nov. 03

pg. 48

Microcontroladores

Versin 1.3 27 nov. 03

pg. 49

Microcontroladores

Versin 1.3 27 nov. 03

pg. 50

Transistores:
Existen enormes tratados sobre las diferentes maneras de conectar los transistores, y las diferentes formas en las que pueden trabajar. Nosotros nos vamos a centrar en una forma de conectarlos (Emisor comn) y dos zonas de trabajo (corte y saturacin). Trabajando en estas condiciones, son muy pocas las cosas que debemos tener en cuenta para decidir que transistores utilizar y que componentes conectar asociados a los mismos. Seleccionar un transistor: Los elementos a tener en cuenta son Ic, hFE y VCEO. Ic: Define la mxima corriente que se puede controlar a partir de ese transistor. Ser algo mayor que la corriente mxima del circuito que vamos a conectar. hFE: Define la ganancia. hFE = IC/IB. A partir de la ganancia, obtendremos la corriente que circular por la Base, que es la que suministraremos para activar el transistor. VCEO Define la mxima diferencia de potencial entre colector y emisor, es decir la mxima tensin de trabajo. Esquema bsico:

IB es la corriente que suministrar nuestro circuito de control. Por ejemplo la salida mxima de un pin de I/O de un PIC es de 25 mA: aunque no es conveniente llegar a las corrientes mximas. La carga es el dispositivo que queremos controlar con el transistor: Un rel, un motor, una lmpara, ... Es importante conocer la corriente mxima que circular por el dispositivo, para seleccionar un transistor adecuado. Transistores comerciales: Existen miles de referencias diferentes. Mostraremos aqu solamente 4 referencias de transistores muy conocidos.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 51

BC107
Es un transistor de baja potencia. Su IC es de 100 mA, su hFE es 110 y VCEO es de 45 V. El transistor complementario (mismas caractersticas salvo que es PNP, es el BC177).

Es muy adecuado para pequeas cargas, tales como: el terminal comn de un display de 7 segmentos, un rel, ... Por ejemplo supongamos que se debe activar un rel de 12 V. 80 mA. desde un PIC. El circuito sera: En el circuito vemos que la tensin aplicada al rel es de 12 V. mientras que la que llega a RB es de 5 V. Esto no supone ningn problema mientras no se sobrepasen los valores mximos del transistor (VCEO). La IC ser la del rel, es decir 80 mA. La ganacia del transistor es 110, por lo que bastara con una corriente de base IB = 80/110= 0,72 mA. No obstante para asegurar que se entra en saturacin vemos a hacer que IB= 1 mA. R=V/I, V=5V. - 0,7 V. (0,7 V. de la unin Base Emisor del transistor). RB= 4,3/0,001=4300 . El valor comercial ms prximo por debajo es 3.900 El diodo que aparece en el esquema, elimina los picos de tensin que produce la bobina del rel al conectarla y desconectarla.

BD 139
Es un transistor de media potencia. Su IC es de 2 A, su hFE vara entre 25 y 60 en funcin de IC y VCEO es de 80 V. El transistor complementario (mismas caractersticas salvo que es PNP, es el BD140).

Microcontroladores

Versin 1.3 27 nov. 03

pg. 52

TIP122
Es un transistor de potencia darlington (dos transistores conevtados en cascada para aumentar la ganancia). Su IC es de 5 A, su hFE es de 1.000 y VCEO es de 100 V. El transistor complementario (mismas caractersticas salvo que es PNP, es el TIP 127). Su elevada ganancia permite conectar la base al microcontrolador, y el colector a circuitos de elevada potencia, sin ninguna etapa previa.

2N3055
Es un transistor de potencia. Su IC es de 15 A, su hFE vara entre 2 y 100 en funcin de IC y VCEO es de 60 V. El transistor complementario (mismas caractersticas salvo que es PNP, es el MJ2955).

Microcontroladores

Versin 1.3 27 nov. 03

pg. 53

TRIACS
Circuitos que pueden ser clasificados como rels para corriente alterna de estado slido. Permiten conducir o bloquear el paso de la corriente alterna.

Microcontroladores

Versin 1.3 27 nov. 03

pg. 54

MOTORES
Motores CC

S1

S3 VCC

MOTOR GND

S2

S4

ON OFF ON OFF OFF Circuito L293

OFF ON ON OFF OFF

OFF ON OFF ON OFF

ON OFF OFF ON OFF

IZQUIERDA DERECHA PARADO PARADO PARADO

EN1 IN1 OUT1 GND GND OUT2 IN2 v+ motor

16

Vcc TTL IN4 OUT4 GND GND OUT3 IN3 EN2

1
O N/OFF 1 CO NT RO L 1 M OT O R 1 EN1 IN1 OUT 1 GND GND CO NT RO L2 OUT 2 IN2

L293B
VCC IN4 O UT 4 G ND G ND O UT 3 IN 3 EN2

VCC T T L

CON T ROL4 MO T OR 2

CON T ROL3 ON /O FF 2

v+ motor V+ MO T OR

CONTROL 1 ON ON OFF OFF X

CONTROL 2 ON OFF ON OFF X

ON / OFF 1 ON ON ON ON OFF

ESTADO MOTOR1 PARADO DERECHA IZQUIERDA PARADO PARADO

Microcontroladores

Versin 1.3 27 nov. 03


VCC TTL

pg. 55

1
ON/OFF 1 DIR1 MOTOR 1 EN1 IN1 OUT1 GND GND OUT2 IN2

L293B
VCC IN4 OUT4 GND GND OUT3 IN3 EN2

DIR2 MOTOR 2

v+ motor V+ MOTOR

ON/OFF 2

DIRECCIN 1 OFF ON X

ON / OFF 1 ON ON OFF

ESTADO MOTOR 1 IZQUIERDA DERECHA PARADO

Servocontrol
Discos/codificadores

Motores paso a paso

Motores Unipolares

Microcontroladores

Versin 1.3 27 nov. 03

pg. 56

Motor Bipolar

Control de motores paso a paso


Motor Unipolar

1 2 3 4

A -

B -

C -

S1 ON OFF OFF ON

S2 OFF ON ON OFF

S3 ON ON OFF OFF

S4 CA OFF 1 OFF 0 ON 0 ON 1

CB 0 1 1 0

CC 1 1 0 0

CD 0 0 1 1

Motor bipolar

1 2 3 4

A + + -

B + +

C + +

D + + -

S1 OFF ON ON OFF

S2 ON OFF OFF ON

S3 ON OFF OFF ON

S4 OFF ON ON OFF

S5 OFF OFF ON ON

S6 ON ON OFF OFF

S7 ON ON OFF OFF

S8 CA OFF 1 OFF 0 ON 0 ON 1

CB 0 1 1 0

CC 1 1 0 0

CD 0 0 1 1

Microcontroladores

Versin 1.3 27 nov. 03

pg. 57

Circuitos especficos: SAA1027


+12 v Reloj

N.C Reset Sentido Reset Sentido RX GND GND 1 A N.C B

1 2 3 4 5 6 7 8

16 15 14 13 12 11 10 9

N.C Clock VCC 1 VCC 2 GND 2 D

A N.C C

Вам также может понравиться