Академический Документы
Профессиональный Документы
Культура Документы
Carlos Romero D.
Ingeniero en Electrnica
Principales Caractersticas
Los Microcontroladores poseen caractersticas que los hacen nicos, ya que integran una arquitectura y funcionamiento que los hace superiores a los microprocesadores tradicionales
Que es un microcontrolador?
Es un computador completo, aunque de limitadas prestaciones, que esta contenido en el chip de un circuito integrado y se destina a gobernar una sola tarea
Un microcontrolador por el hecho de que los componentes internos son fijos, se puede decir, de que se trata de un sistema cerrado y su configuracin no es del tipo variable
Microcontrolador
El microcontrolador es un sistema cerrado. Todas sus partes estn contenidas en su interior y solo salen al exterior las lneas que gobiernan los perifricos
Procesador o CPU
Temporizadores Puertas en serie y paralelo Convertidores A/D y D/A Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema
Todas las instrucciones del PIC se realizan en un ciclo de instruccin menos las de salto que se tardan el doble
Ciclo de instruccin formado por 4 seales (Q1-Q4 asociadas al reloj externo OSC1)
Q1: Se incrementa el contador de programa Q4: Se busca el cdigo de la instruccin en la memoria del programa y se carga en el registro de instrucciones Q2 Q3: Se produce la descodificacin y la ejecucin de la instruccin.
La segmentacin permite ejecutar en el mismo ciclo la instruccin y la bsqueda excepto en las instrucciones de salto
Osciladores
La variedad de trabajo del PIC depende del oscilador a emplear, pueden ser del tipo RC, LP, XT y HS.
Oscilador tipo RC: Formado por una resistencia y un condensador. El rango del oscilacin depende del valor de R y C Oscilador tipo LP: Formado por un cristal de cuarzo y 2 condensadores. Opera entre 35 a 200 KHZ. Bajo consumo Oscilador tipo XT: Formado por un cristal de cuarzo y 2 condensadores. Opera entre 100 KHZ y 4 MHZ. Oscilador tipo HS: Formado por un cristal de cuarzo y 2 condensadores. Opera entre 4 y 10 MHZ.
El procesador
Es el corazn del sistema y por la concepcin de su arquitectura lo hace ms rpido en la ejecucin de cada instruccin.
En la arquitectura de Harvard la memoria de instruccin y de los datos son independientes, lo que permite optimizar sus caractersticas y propiciar el paralelismo
PIC 16F877
A continuacin se presenta la arquitectura tipo Harvard simplificada para los PIC 16F87x
PIC 16F877
PIC 16F877
En el siguiente esquema se presenta con ms detalle la arquitectura correspondientes a los modelos PIC 16F87x
Principales Caractersticas
Set reducido de 35 instrucciones 14 fuentes de interrupciones disponibles Proteccin para cdigo de programa Frecuencia de operacin hasta 20 Mhz. Memoria FLASH de programa 8k (con palabras de 14 bit) Memoria de datos 368 bytes. Memoria de datos EEPROM 256 bytes
Principales Caractersticas
Puertos de Entrada/Salida: Puerto A : 6 bit Puerto B : 8 bit Puerto C : 8 bit Puerto D : 8 bit Puerto E : 3 bit 3 Timers 2 Mdulos de captura/Comparacin/PWM Comunicacin Serial Comunicacin Paralelo Conversor Anlogo Digital de 10 bit, 8 canales
Definiciones
Registros: Posiciones de memoria que poseen 8 bits de datos. El contenido de un registro se puede expresar en formato decimal (d128), formato Hexadecimal (0x80) o en binario (b10000000).
W: Registro especial llamado Acumulador y se utiliza en la mayora de las operaciones
Tablas
Tablas
Tablas
Tablas
Instrucciones
Instrucciones que manejan bits dentro de un registro cualquiera 1.- Instruccin BCF bcf f,b Coloca un 0 en una posicin especfica de un registro f definida por b bcf REGISTRO,3
Resultado
Instrucciones
2.- Instruccin BSF bsf f,b
Coloca un 1 en una posicin especfica de un registro f definida por b
bsf
REGISTRO,5
Resultado
Ejemplo
Ejemplo : Transformar el contenido de REGISTRO (0xF8) en 0x91
Instrucciones de salto
3.- Instruccin BTFSC btfsc f,b Explora el bit cuya posicin esta definida por b, dentro del registro f y se salta la siguiente instruccin si y solo si el valor de dicho bit es cero. Btfsc REGISTRO,3
bsf REGISTRO,0
bcf
REGISTRO,5
Instrucciones de salto
4.- Instruccin BTFSS btfss f,b Explora el bit cuya posicin esta definida por b, dentro del registro f y se salta la siguiente instruccin si y solo si el valor de dicho bit es uno. Btfss REGISTRO,3
bsf REGISTRO,0
bcf
REGISTRO,5
Instrucciones de GOTO
5.- Instruccin GOTO goto l Salta automaticamente al lugar que se le indica en l (Etiqueta de salto).
bcf bsf goto bsf bcf bcf bsf bsf REGISTRO,3 REGISTRO,2 SALTAR REGISTRO,0 REGISTRO,1 REGISTRO,4 REGISTRO,8 REGISTRO,7
SALTAR
Ejemplo
Ejemplo : Verificar que el primer nible del REGISTRO es igual a 1011, de lo contrario borrarlo
btfss REGISTRO,0 goto SALIR btfss REGISTRO,1 goto SALIR btfsc REGISTRO,2 goto SALIR btfss REGISTRO,3 goto SALIR goto OK SALIR bcf REGISTRO,0 bcf REGISTRO,1 bcf REGISTRO,2 bcf REGISTRO,3 OK RETURN
Instruccin DECFSZ
6.- Instruccin DECFSZ decfsz f,d Decrementa el registro f y se salta la siguiente instruccin cuando el registro adquiere el valor cero. Si d=0,el resultado se almacena en W, si d=1 se almacena en f.
Instruccin DECFSZ
6.- Instruccin DECFSZ decfsz f,d Decrementa el registro f y se salta la siguiente instruccin cuando el registro adquiere el valor cero. Si d=0,el resultado se almacena en W, si d=1 se almacena en f.
Instruccin INCFSZ
7.- Instruccin INCFSZ incfsz f,d Incrementa el registro f y se salta la siguiente instruccin cuando el registro adquiere el valor cero. Si d=0,el resultado se almacena en W, si d=1 se almacena en f.
movlw
0x30
addlw
d10
sublw
d20
b10101010
b01010101
iorlw
b01010101
Resultado : en W se almacena el resultado final de la operacin : 0xFF
Ejemplo
Ejemplo : Si el valor de W es igual a 0XAA, entonces borrar W, de lo contrario mantener el valor
movlw
movwf
0x55
CUENTA
movlw
movwf
0x4A
CONTADOR
clrf
CONTADOR
Resultado : 0X00 en W
nop
movwf
swapf
ADC
ADC,1
0X0F PORTB
PORTB,1
0X0F
PORTB PORTB,1
addwf
PORTB,F1
andwf
VALOR,1
xorwf
VALOR,1
Instrucciones especiales
30.- Instruccin CALL Llama a una subrutina call l
Instrucciones especiales
33.- Instruccin RETFIE retfie Retorna del llamado de interrupcin 34.- Instruccin SLEEP sleep Coloca en reposo el microcontrolador 35.- Instruccin RETLW retlw Retorna de una subrutina volviendo con un literal en el acumulador
Ejemplo
Ejemplo : Cargar el numero 3 en el registro VALOR y multiplicarlo por 4 movlw movwf bcf rlf rlf goto d3 VALOR STATUS,C VALOR,F VALOR,F SALIR
Registro de status
Registro de status
PD# : Se pone a 0 con la instruccin SLEEP, pasa a 1 con la instruccin CLRWDT o tras la conexin de alimentacin. TO# : Se pone a 0 con el rebalse del WDT, pasa a 1 con la instruccin CLRWDT y SLEEF o tras la conexin de alimentacin. RP1, RP0 : Se utilizan para seleccionar un banco en la RAM
Registro TRIS
Registro utilizado para configurar los puertos de entrada/salida a nivel de bit, en el caso de PIC16F877, se tiene TRISA, TRISB, TRISC, TRISD y TRISE. 1 : Entrada Digital 0 : Salida Digital
Ejemplo
Configurar los puertos de E/S del uC para trabajar con el circuito de la figura.
Solucin
bsf clrf bsf movlw movwf bcf bcf STATUS,RP0 TRISB TRISE,2 0xFF TRISD TRISD,0 STATUS,RP0 ; Banco 1 ; Puerto B Salida ; Bit 2 puerto E, entrada ; Mover 0XFF al W ; Puerto D entrada ; Bit 0 puerto D, salida ; Banco 0
Ejercicios prcticos
1.- Mover un literal directamente al puerto B.
2.- Encender un led conectando al puerto RB0, en funcin del estado de un switch conectado a RB7.
3.- Copiar el puerto C al puerto B 4.- Encender todos los leds del puerto B y cambiar su estado cuando se presione el pulsador. 5.- Incrementar el contenido del puerto B cada vez que se presione el pulsador.
1.- OPTION_REG (Configuracin) 2.- TMR0 (Valor del contador), registro 8 bits. 3.- INTCON (Banderas)
Registro OPTION_REG
Es el encargado de configurar el timer 0 y el watchdog.
Bit 7: bit de resistencia pull-up PDRTB. 1=desactivadas 0= activadas Bit 6: 1=flanco ascendente en pin RBO/INT 0=flanco descendente en pin RBO/INT Bit 5: bit selector de tipo de reloj para el TMRO 1=pulsos introducidos a travs de TOCK1 (contador) 0=pilsos de reloj interno. Fosc/4 (temporizador) Bit 4: 1=incremento de transicin de alto a bajo pin TOCK1 0=incremento de transicin de bajo a alto pin TOCK1 Bit 3: selector de preescaler. 1= preescaler asignado al WDT. 0= preescaler asignado al timer 0 Bits 2-0: bits de seleccin del divisor de frecuancia
Registro OPTION_REG
Es el encargado de configurar el timer 0 y el watchdog.
Registro INTCON
BIT 7, GIE : Bit de activacin global de interrupciones
1= concedido el permiso de interrupciones 0= no est activado para interrupciones
Registro INTCON
BIT 4, INTE: Bit de activacin interna
1= concedido el permiso de interrupcin 0= interrupcin desactivada.
Registro INTCON
BIT 1, INTF : bit indicador de interrupcin externa
1= interrupcin activa. Se borra por software. 0= no hay peticin de interrupcin
Calculo de la temporizacion:
1.2.3.4.5.-
T1CON (configuracin) PIR 1 (banderas) PIE 1 (interrupciones) TMR 1 H (carga byte mas significativo de TMR1) TMR 1 L (carga byte menos significativo de TMR1)
Registro T1CON
Es el encargado de configurar TMR1
bit 5 y 4: TICK PS1 TICK SO: bit de seleccin del preescaler bit 3: T1 OSEN, bit de control de habilitacin del oscilador de TM R1 1= oscilador habilitado 0= oscilador no habilitado bit 2: T1SYNC, bit de sincronismo con clock externos 1= modo asncrono 0= modo sncrono
Registro T1CON
TICK PS 1 0 0 1 1 TICK PSO 0 1 0 1 VALOR DEL PREESCALER 1:1 1:2 1:4 1:8
bit 1: TMR1CS, bit de seleccin del clock 1= cloc externo (contador) 0= clock interno (temporizador)
Registros
REGISTRO PIR 1
Registros
REGISTRO PIE 1
Bit 0: TMR1IE, habilita interrupcin del desbordamiento del TMR1 1= habilita 0= no habilita
1.2.3.4.5.-
T2CON (configuracin) PIR 1 (banderas) PIE 1 (interrupciones) TMR 2 (registro del modulo del TIMER TMR2) PR2 (registro de periodo del TIMER TMR2)
Registro T2CON
T2SKPS1 0 0 1
T2SCKPS0 0 1 X
TOUTPS3 0 0 0 . 1
TOUTPS2 0 0 0 . 1
TOUTPS1 0 0 1 . 1
TOUTPS0 0 1 0 .. 1
REGISTROS
REGISTRO PIR 1 BIT 1: TMR2IF, bit sealizador de interrupcin cuando TMR2 coincide con PR2 1= TMR2 coincide con PR2 0= TMR2 no coincide con PR2
REGISTRO PIE 1
BIT 1: TMR2IE, habilita interrupcin si TMR2 coincide con PR2 1= habilita 0= deshabilita