A.4. Experimentos con la gama mejorada
A.4.2. Experimento 7: Modulación Ancho de Banda (PWM) controlado
list p=18c452
#include <P18C452.INC>
OP1 equ 0x000
OP2 equ 0x001
org 00000h ; Vector de Reset goto Inicio
org 00020h
Inicio
clrf LATB ; Borrado de posibles Latchs del puerto B clrf LATC ; Borrado de posibles Latchs del puerto B clrf TRISB ; Todo el puerto B salidas
movlw 0xff
movwf TRISC ; Todo el puerto C entradas Bucle
movf PORTC,W ; Se almacena la lectura del puerto C en w movwf OP2 ; OP2 <- Los 8 bits leídos
andlw0x0f ; los 4 bits de + peso de w a 0 movwf OP1 ; OP1 <- primer operando
movlw 0xf0 ; Se elimina la parte baja de la lectura andwf OP2,F
movlw 0xf0
xorwf OP2,F ; Se complementan lo 4 bits de más peso swapf OP2,F ; Se intercambian los nibbles
movf OP1,W
mulwf OP2 ; Se realiza la multiplicación movff PRODL,PORTB ; Se muestra el producto en puerto B
goto Bucle
end
Figura A.20. Experimento 6 implementado en el PIC School.
programa será necesario contar con un osciloscopio conectado al canal PWM, o en su defecto co- nectar un periférico, como por ejemplo un motor, que nos permita ver el funcionamiento de este re- curso.
El esquema de conexionado es el siguiente, sabiendo además que la salida RC1, deberá conec- tarse a la sonda del osciloscopio.
Figura A.21. Esquema de conexión del Experimento 7 en el PIC School.
Es necesario configurar el módulo CCP para realizar funciones de modulado de ancho de ban- da, lo cual se lleva a cabo en la rutina Inicio_PWM. Dado que sólo vamos a utilizar una salida PWM utilizamos el módulo CCP estándar, es decir el CCP2.
Además como el ciclo activo del periodo PWM viene marcado por la lectura de un canal analó- gico es necesario realizar la configuración del mismo por medio de la rutina Inicio_ADC. Sólo AN0 actúa como analógico y como tensión de referencia utilizamos los 5 Vcc con los que se alimenta el microcontrolador.
Una vez configurados todos los recursos, se procede a la lectura del canal analógico, volcando los 10 bits en los que convierte la entrada, en los 10 que controlan los ciclos del periodo PWM. Ade- más se visualiza la lectura del canal AN0 en la pantalla LCD por medio de la rutina LCD_AD.
El código fuente de este experimento es el siguiente:
list p=18f4520
#include <P18F4520.INC>
cont equ 0x000
temp equ 0x001
Lcd_var equ 0x002
org 00000h ; Vector de Reset
goto Inicio
org 00020h
#include <lcd_18F.inc>
Inicio
clrf LATA ; Borrado de posibles Latchs del puerto A clrf LATB ; Borrado de posibles Latchs del puerto B clrf LATC ; Borrado de posibles Latchs del puerto C clrf LATD ; Borrado de posibles Latchs del puerto D clrf TRISB ; Todo el puerto B salidas (LCD datos) movlw b‘11110001’
movwf TRISD ; RD1,RD2,RD3 salidas (LCD control) movlw 0xff
movwf TRISA ; RA0 <- AN0 como entrada call Inicio_ADC ; Configuración del convertidor A-D call Inicio_LCD ; Inicialización del LCD
call Inicio_PWM ; Configuración del módulo CCP para PWM Principal
bsf ADCON0, GO ; Comienzo conversión A-D
btfss PIR1,ADIF ; Mientras no finalice conversión, espera goto Principal
movff ADRESH,CCPR2L ; los 8 bits MSB del ADC a los 8 de PWM btfsc ADRESL,7
bsf CCP2CON,5 ; Bit de menos peso ADC a PWM btfss ADRESL,7
bcf CCP2CON,5
btfsc ADRESL,6 ; Bit de peso 2 de ADC a PWM (total 10 bits)
bsf CCP2CON,4
btfss ADRESL,6
bcf CCP2CON,4
call LCD_AD ; Mostramos en el LCD el resultado del ADC bcf PIR1, ADIF ; Se borra el flag del ADC para la próxima conversión goto Principal ; Vuelta al bucle
;******************************************************************
;* Esta rutina muestra los 10 bits obtenidos tras realizar una *
;* conversión A-D en la pantalla LCD. Téngase en cuenta que como *
;* se ha configurado el ADC con justificación a la izquierda, *
;* el registro ADRESH contiene los 8 bits de más peso y el ADRESL *
;* los 2 de menos peso. *
;******************************************************************
LCD_AD
movlw 0x02 ; Borrado LCD y Home
call LCD_REG
movlw ‘A’
call LCD_DATO
movlw ‘N’
call LCD_DATO
movlw ‘:’
call LCD_DATO ; Mostramos en LCD “AN:”
clrf cont ; Inicializamos Contador LCD_Bucle
btfsc cont,3 ; si contador = 8 (1000)
goto LCD_Fin ; entonces, 8 bits de ADRESH ya mostrados rlcf ADRESH ; si no, movemos al Carry el siguiente bit btfsc STATUS,C ; de ADRESH y si éste es un 1
call LCD_1 ; entonces mostramos un 1 en LCD btfss STATUS,C ; si en cambio es un 0
call LCD_0 ; mostramos un 0 en el LCD incf cont,F ; incrementamos contador goto LCD_Bucle ; pasamos al siguiente bit LCD_Fin
btfsc ADRESL,7 ; una vez mostramos los 8 bits de ADRESH call LCD_1 ; se muestran los 2 de ADRESL
btfss ADRESL,7
call LCD_0
btfsc ADRESL,6
call LCD_1
btfss ADRESL,6
call LCD_0
return
;******************************************************************
;* Muestra un “0” en la pantalla LCD. *
;******************************************************************
LCD_0
movlw ‘0’
call LCD_DATO return
;******************************************************************
;* Muestra un “1” en la pantalla LCD. *
;******************************************************************
LCD_1
movlw ‘1’
call LCD_DATO
return
;******************************************************************
;* Esta rutina configura el convertidor A-D. Para ello configura *
;* el puerto A con sólo RA0 como entrada analógica, y justifica- *
;* ción a la izquierda. Además selecciona y activa el canal AN0 *
;******************************************************************
Inicio_ADC
movlw b‘00001110’
movwf ADCON1 ; Sólo AN0 analógico movlw b‘00010010’
movwf ADCON2 ; Tiempo de captura movlw b‘00000001’
movwf ADCON0 ; Selección y activación del canal AN0 return
A.4.3. Experimento 8: Visualización de dos canales analógicos a través del USART A través de este experimento vamos a visualizar el valor digitalizado de dos entradas analógicas en el PC a través de un programa Terminal. Utilizaremos como entradas analógicas las líneas AN0 y AN1 del puerto A, utilizando como tensión de referencia la alimentación de 5Vcc aplicada al PIC. Cada vez que pulsemos uno de los dos pulsadores conectados a las líneas RC0 y RC1 del puerto C se enviarán al PC, por medio del USART, los diez bits en los que el convertidor ADC ha digitalizado la entrada AN0 en caso de activar el pulsador conectado a RC0, o AN1 si el pulsado es el cableado a RC1.
Aquellos lectores que no dispongan de un programa Terminal propio, pueden utilizar el hiper- terminal®incluido en todas las versiones de Windows®. Recuerde que hemos configurado el USART con una velocidad de 9600 baudios, 8 bits de datos y uno de parada, luego la ventana de configuración del programa deberá quedar tal y como se indica en la Figura A.22.
El esquema de conexión del PIC School es el que se muestra en la Figura A.23.
A la hora de realizar el programa comenzaremos configurando los recursos utilizados. Con este propósito la rutina Inicio_UART configura las líneas RC7/Rx y RC6/Tx como entrada y salida res-
;******************************************************************
;* Esta rutina inicializa el LCD. Anteriormente ya se han confi- *
;* gurado las 8 líneas del puerto B y RD1,RD2 y RD3 como salidas *
;******************************************************************
Inicio_LCD
call UP_LCD ;Configura puertos para LCD call LCD_INI ;Secuencia de inicio del LCD
movlw b‘00001100’ ;Envía cmd: LCD On, Cursor Off y blink Off
call LCD_REG
return
;******************************************************************
;* Rutina que configura el módulo CCP1 para actuar como modulador *
;* de ancho de banda. *
;******************************************************************
Inicio_PWM
movlw b‘00001100’
movwf CCP2CON ;Configuración CCP1 como PWM movlw .255
movwf PR2
bcf TRISC, 1 ;Puerto RC1 como salida movlw 0x00
movwf CCPR2L movlw b‘00000100’
movwf T2CON ;Borrado de T2CON
clrf TMR2 ;Borrado del Timer2
bsf T2CON,TMR2ON ;Activación del Timer2 return
end
Figura A.22. Configuración del programa hiperterminal.
Figura A.23. Esquema de conexión del Experimento 8 en el PIC School.
pectivamente, además habilita el USART para que se establezca una comunicación asíncrona con el PC a 9600 baudios, con 8 bits de datos y uno de parada. A su vez, la rutina Inicio_ADC configura las líneas RA0/AN0 y RA1/AN1 como analógicas manteniendo el resto del puerto A como líneas digitales. Por último, la rutina Inicio_TMR0 configura el Timer 0 con 8 bits como temporizador y le asocia el preescaler que divide la frecuencia interna del PIC entre 256.
Una vez realizadas las tareas de configuración, el programa comienza testeando la activación de los dos pulsadores conectados a las líneas de menos peso del Puerto C. Téngase en cuenta que los pulsadores del PIC School introducen un 1 en reposo y un 0 cuando son pulsados. En el momento en que se detecta la pulsación en uno de ellos, y tras esperar 10 ms para eliminar los posibles rebo- tes que se puedan generar, se activa el canal analógico correspondiente y se procede con la conver- sión analógica-digital. Posteriormente se lanza por el USART los 10 bits en los que ha resultado la conversión. El programa fuente sería el siguiente:
list p=18f4520
#include <P18F4520.INC>
cont equ 0x000
temp equ 0x001
org 00000h ; Vector de Reset
goto Inicio
org 00020h
Inicio
clrf LATA ; Borrado de posibles Latchs del puerto A clrf LATB ; Borrado de posibles Latchs del puerto B clrf LATC ; Borrado de posibles Latchs del puerto C clrf LATD ; Borrado de posibles Latchs del puerto D movlw b‘10111111’
movwf TRISC ; RC6 como salida (Tx)
movlw 0xff
movwf TRISA ; RA0 <- AN0 RA1 <- AN1 como entradas call Inicio_UART ; Se configura el USART
call Inicio_TMR0 ; Se configura el TMR0
call Inicio_ADC ; Se configura el Convertidor A-D
Evalua_Pulsadores ; Se comprueba si las líneas RC0 o RC1 están btfss PORTC,0 ; activadas. Mientras por ambas líneas llegue call Pulsador_0 ; un 1 se permanece en el bucle. Al detectar btfss PORTC,1 ; un 0 en una de ellas se llama a la rutina call Pulsador_1 ; Pulsador_0 o Pulsador_1.
goto Evalua_Pulsadores
;*********************************************************************
;* Esta rutina, que es llamada cuando se detecta la activación del *
;* pulsador conectado a RC0, espera que este sea soltado eliminando *
;* los rebotes que esto pueda generar, realiza la lectura de la línea *
;* AN0 y la manda por el USART *
;*********************************************************************
Pulsador_0
call Espera_10_ms ; Espera 10 ms para eliminar posibles rebotes btfss PORTC,0 ; Se ha soltado ya el pulsador?
goto Pulsador_0 ; No, pues espera
call Espera_10_ms ; Elimina los rebotes generados al soltar call Lectura_AN0 ; Realiza la lectura de la línea AN0 call Visualiza ; Muestra la conversión A-D por el USART return
;*********************************************************************
;* Esta rutina, que es llamada cuando se detecta la activación del *
;* pulsador conectado a RC1, espera que este sea soltado eliminando *
;* los rebotes que esto pueda generar, realiza la lectura de la línea *
;* AN1 y la manda por el USART *
;*********************************************************************
Pulsador_1
call Espera_10_ms ; Espera 10 ms para eliminar posibles rebotes btfss PORTC,1 ; Se ha soltado ya el pulsador?
goto Pulsador_1 ; No, pues espera
call Espera_10_ms ;Elimina los rebotes generados al soltar call Lectura_AN1 ; Realiza la lectura de la línea AN0 call Visualiza ; Muestra la conversión A-D por el USART return
;*********************************************************************
;* Esta rutina manda por el USART la cadena de caracteres formada por*
;* “AN” un “0” o un “1” en función de la línea analógica leida y los *
;* 10 bits resultantes de la conversión *
;*********************************************************************
Visualiza movlw ‘A’
call Tx_Dato ; Se manda “A”
movlw ‘N’
call Tx_Dato ; Se manda “N”
clrf temp
btfsc ADCON0,2 ; Evaluando el conversor activo mandamos incf temp ; un “0” o un “1” por el USART
movlw 0x30 addwf temp,W call Tx_Dato movlw ‘:’
call Tx_Dato ; Se manda “:”
clrf cont
Visualiza_1
clrf temp ; Se manda los 8 bits de ADRESH
rlcf ADRESH
btfsc STATUS,C
incf temp,F
movlw 0x30 addwf temp,W call Tx_Dato incf cont,F movlw .8 cpfseq cont goto Visualiza_1
clrf temp
btfsc ADRESL,7
incf temp,F
movlw 0x30 addwf temp,W call Tx_Dato
clrf temp
btfsc ADRESL,6
incf temp,F
movlw 0x30 addwf temp,W
call Tx_Dato ; y los otros dos de ADRESL movlw .13
call Tx_Dato return
;*********************************************************************
;* Esta rutina selecciona la línea AN0 e inicia la conversión *
;*********************************************************************
Lectura_AN0
movlw b‘00000001’
movwf ADCON0 ; Selección y activación del canal AN0 bcf PIR1, ADIF
bsf ADCON0, GO ; Comienzo conversión goto Lectura_Fin
;*********************************************************************
;* Esta rutina selecciona la línea AN1 e inicia la conversión *
;*********************************************************************
Lectura_AN1
movlw b‘00000101’
movwf ADCON0 ; Selección y activación del canal AN0 bcf PIR1, ADIF
bsf ADCON0, GO ; Comienzo conversión goto Lectura_Fin
Lectura_Fin
btfss PIR1,ADIF ; ¿Ha producido interrupción el CAD?
goto Lectura_Fin return
;*********************************************************************
;* Esta rutina envía el carácter contenido en W por el USART *
;*********************************************************************
Tx_Dato
movwf TXREG
Tx_Dato_1
btfss TXSTA,TRMT goto Tx_Dato_1 return
;*********************************************************************
;* Rutina que temporiza 10 ms a través del Timer 0. Dado que se le ha *
;* conectado un divisor de frecuencia entre 256 y que 256*39=9984 *
;* el Timer 0 debe temporizar 39 incrementos *
;*********************************************************************
Espera_10_ms
movlw ~.39 ; Inicializa para temporizar 39 incrementos
movwf TMR0L
bcf INTCON,TMR0IF ; Borra el flag del Timer 0 bsf T0CON,TMR0ON ; Se activa el Timer 0
Espera_10_ms_1
btfss INTCON,TMR0IF ; Se espera hasta desborde goto Espera_10_ms_1
bcf T0CON,TMR0ON ; Se para el temporizador return
;*********************************************************************
;* Esta rutina inicializa el USART para establecer una comunicación *
;* asíncrona a 9600 baudios con 8 bits de datos y 1 de parada *
;*********************************************************************
Inicio_UART
bcf TRISC,6 ; RC6/Tx Salida
bsf TRISC,7 ; RC7/Rx Entrada
clrf SPBRGH
movlw .103
movwf SPBRG ; 9600 baudios a 4MHz
bcf TXSTA,SYNC ; comunicación asíncrona
bsf TXSTA,BRGH
bsf BAUDCON,BRG16
bcf TXSTA,TX9
bsf RCSTA,SPEN
bsf TXSTA,TXEN ;Comienza la transmisión return
;*********************************************************************
;* Esta rutina configura el Timer 0 con 8 bits y preescaler 1/256 *
;*********************************************************************
Inicio_TMR0
movlw b‘01000111’
movwf T0CON
return
;*********************************************************************
;* Esta rutina configura el convertidor A-D estableciendo AN0 y AN1 *
;* como canales analógicos. La selección y activación de los mismos *
;* se realiza en Lectura_AN0 y Lectura_AN1 respectivamente *
;*********************************************************************
Inicio_ADC
movlw b‘00001101’
movwf ADCON1 ; Sólo AN0 y AN1 analógico
movlw b‘00010010’
movwf ADCON2 ; Tiempo de captura
return end
A.5. EL COMPILADOR DE C
Para la realización de este último experimento vamos a emplear uno de los compiladores de C para microcontroladores PIC más empleados: el compilador PCWHde la empresa CCS.
Entre las principales ventajas de este compilador destacan las siguientes:
●
● Compatibilidad. Es el único compilador compatible con todas las gamas y modelos de microcontroladores PIC, permitiendo siempre, la utilización del microcontrolador más adecuado a cada proyecto
●
● Precio. Es uno de los compiladores más económicos permitiendo además la adquisición por separado de cada una de las gamas de microcontroladores PIC.
●● Facilidad de uso. Gracias al enorme número de funciones preconstruidas que incluye, ca- paces de controlar a cada uno de los recursos incluidos en los microcontroladores, es sin duda el compilador de alto nivel más potente y sencillo de utilizar no exigiendo grandes conocimientos de programación a alto o bajo nivel.
Existe una versión de evaluación que permite, durante 30 días, desarrollar aplicaciones basadas únicamente en el microcontrolador PIC 18F4520. Esta versión se puede descargar desde la página http://www.ccsinfo.com.
A continuación indicamos el código fuente, programado en lenguaje C, para el desarrollo del ex- perimento 8.
#include <18F4520.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) main() {
int res;
set_tris_c(b’10111111’); //Configuración Puerto C
setup_port_A(ALL_ANALOG); //Configuración Puerto A setup_adc( ADC_CLOCK_INTERNAL);
While (TRUE) {
if (input(PIN_C0)==0) // Si RC0 es un 0 (Pulsador activo) {
delay_ms(10); // Espera 10 ms.
while (input(PIN_C0) == 0) // Mientras esté pulsado
{} // no hacer nada
delay_ms(10); // Espera 10ms set_adc_channel(0);
res = read_adc(); //Lectura de Puerto AN0 printf(“AN0:\%un”,res); //Muestra resultado por USART }
if (input(PIN_C1)==0) {
delay_ms(10);
while (input(PIN_C1) == 0) {}
A través de este código esperamos que el lector se pueda hacer una idea de las ventajas que im- plica la utilización de este tipo de herramientas.
En su contra debemos advertir que la optimización del código generado mediante cualquier com- pilador de alto nivel es muy inferior a la obtenida mediante lenguaje ensamblador, en lo referente a la capacidad de memoria que se precise y en la velocidad de ejecución.
También se pueden encontrar en el sitio de Internet de Microchip demos y versiones de bajo cos- te para estudiantes de compiladores en C.
delay_ms(10);
set_adc_channel(1);
res = read_adc();
printf(“AN1:\%un”,res);
} } }
LIBROS
ôMICROCONTROLADORES PIC. Diseủo prỏctico de aplicacionesằ,
(Primera parte: PIC16F84). Incluye un CD con aplicaciones y tutoriales multimedia.
Angulo, J. Mê. y Angulo, I.
Editorial McGraw-Hill, 3ê ediciún, 2003.
ôMICROCONTROLADORES PIC. La clave del diseủoằ, Angulo, J. Mê., Martớn, E. y Angulo, I.
Editorial Thomson, 2004.
ôDISEẹO PRÁCTICO CON MICROCONTROLADORESằ, Angulo, J. Mê., Romero, S. y Angulo, I.
Editorial Thomson, 2004.
ôLABORATORIO DE PRÁCTICAS DE MICROELECTRểNICAằ, Angulo, J. Mê.
Editorial McGraw-Hill, 2 volúmenes, 2002.
REVISTAS
ôRevista Espaủola de Electrúnicaằ
ôElektorằ
ôElectronicsằ
ôCircuit Cellarằ
ôElectrúnica Prỏctica Actualằ
ôResistorằ
ôPC Hardwareằ
ôNueva Electrúnicaằ
369
Bibliografía y direcciones de interés relacionadas con los PIC
EMPRESAS
ôMICROCHIP TECHNOLOGY INC.ằ
2355 West Chandler Blv., Chandler, AZ 85224-6199, EE.UU., Tel: 602.786.7200.
ôSAGITRONằ
Montún de Trigo, 2, 28760 TRES CANTOS (MADRID), Espaủa E-mail: sagitron@sagitron.es
ôINGENIERÍA DE MICROSISTEMAS PROGRAMADOS S. L.ằ
Alda. Mazarredo 47-1º, 48009 BILBAO (Espaủa), Tel/Fax: 94-4230651 E-mail: info@microcontroladores.com
INTERNET
MICROCHIP: http://www.microchip.com INGENIERÍA DE
MICROSISTEMAS
PROGRAMADOS: http://www.microcontroladores.com PARALLAX, INC: http://www.parallaxinc.com ITU TECHNOLOGIES: http://www.itutech.com SAGITRON: http://www.sagitron.es
12C, 303, 331 Acceso a Banco, 241 ACK, 178
AD15-AD0, 256 ADC, 100 ADCON0, 144, 301 ADCON1, 82, 144, 301 ADCON2, 301 ADDWFC, 270 ADFM, 146 ADON, 145 ADRESH, 146 ADRESL, 146 AGUX, 327 ALE, 256 Alineamiento, 147 Alta prioridad, 259 ALU, 36
Anchura de pulsos, 131 Anchura del impulso, 124 Aproximaciones sucesivas, 143 Arbitraje, 181
Arizona Microchip, 329 Arquitectura, 311 ASCII, 332 ASM, 26 Bajo consumo, 94 Banco, 15, 238
Banco de Registro de Propósito General, 36
Banco de Registro Específico, 36 Bancos, 39, 237
Basic, 332
Baudios, 207 BC, 278 BODEN, 58, 87 Bootloader, 250 BOR#, 88 BOR, 58 BRA, 278 Breakpoint, 333 BRG, 207 BSR, 237 BTFSC, 278 BTFSS, 278 BUS 12C, 191 C, 59, 332 CALL, 38, 39, 277 CAN, 325, 331 Canales, 143 Captura, 122
Captura y mantenimiento, 143, 318
CCP, 104, 119, 126, 296 CCP1, 119, 126, 296 CCP1CON, 119 CCP2, 62, 119, 296 CCP2CON, 120 CCPxCON, 296 CCPxIF, 297 CCS, 365 CHS2-0, 145 CLRWDT, 91, 279 CMCON, 90, 305 CODEC, 320
Codificador de Cuadratura, 325 Colisiones, 190
Comparación, 122 Compatibilidad, 322, 366 Compilador de C, 365 Compiladores, 332 CONFIG1H, 235 Consumo, 91 Contador
asíncrono, 102 de Programa, 36 síncrono, 102, 121 Controlador
de ADM, 325 de DMA, 21, 324 de programa, 249 Controladores Digitales de
Seủales, 20, 317 Conversor
A/D, 143, 300, 318, 325 analógico/digital, 150 CORCON, 313 CP0, 66 CP1, 66 CPD, 87 CPFSEQ, 270 CPFSGT, 270 CPFSLT, 270 Cristal de cuarzo, 75 CRT, 205
CVRCON, 90 DAC, 100 DAW, 279 DC, 59 DCFSNZ, 271 DEBUG, 87
371
Índice
Debugger, 338 Despertar, 91 Diagrama
de conexión, 322 de conexionado, 232 Direccionamiento directo, 240,
241
Divisor de frecuencia, 59 DSC, 20, 317
DSP, 20, 317 dsPIC30F, 21, 320 dsPIC30F5013, 323 dsPIC30F6010, 325, 326 dsPIC30F6014, 323 dsPIC33F, 21, 22, 324 Duty Cycle, 123 EADDR, 244 EADDRH, 244 EBDIS, 255 ECO, 215 Edición, 332
EECON1, 63, 65, 244, 245, 252 EECON2, 63, 244, 252 EEDATA, 244 EEIF, 245
EEPROM, 39, 62, 67, 244 Emisor, 201
Emulador, 333 Enanos, 5
Encapsulados, 42, 227, 324 Encoger, 80, 131
Ensamblador, 26 Entradas analógicas, 360 EQ, 105
Esclavo, 174
Escritura de Tabla, 256 Espacio X, 327 Fase
de depuración, 333 de programación, 334 de prueba, 334 Firmware, 92
FLASH, 33, 38, 62, 64, 67 Formatos, 269
FOSC1:0, 87 Fournier, 319 Frecuencímetro, 347 FSR, 42
FSRn, 241
Fuentes de interrupción, 259
Full duplex, 205 Futaba, 53 Gama
Base, 5 Media, 5, 6
Mejorada, 5,15, 221, 225 Generador lógico, 331 GIEH, 261
GIEL, 261 GO/DONE#, 145 GOTO, 39, 277 GPR, 238 Half duplex, 205 Harvard, 36, 221, 325 Hiperterminal, 360 I2C, 167, 173 iButton, 331 ICD2, 333 INDFn, 241 INFSNZ, 271
Ingeniería de Microsistemas Programados S. L., 27, 139, 329
Ingeniería Informática, 140 Instrucciones, 267, 268
con literales, 273 control, 275 orientadas al bit, 272 orientadas al byte, 269 INTCON, 61, 85, 260 INTCON2, 261 INTCON3, 262 Inteligencia Artificial, 72 IPEN, 261, 264 IPR1, 264 IPR2, 265 IPR3, 265 IRP, 42, 58 L293B, 53, 55, 79 Laplace, 319 LAT, 281 LB#, 256
LCD, 151, 159, 345 LCD-CON, 159 LDR, 30 Lenguaje C, 366 LFSR, 274 LM336z-2.5V, 78
LM35, 31 LVP, 87 MAC, 327 Maestro, 174 MCLR#Vpp, 83, 93 MCU, 1, 20 MEMCON, 255 Memoria
de programa, 249 externa, 253, 286 Flash, 253
Micro´PIC I/0, 74, 113, 126 Micro´PIC Trainer Plus, 97 Micro´PIC Trainer, 27, 50, 74,
126
Microbótica, 138 Microbots, 138 Microchip, 1, 307 Microcontroladores, 1 Microrruptores, 117 Migrabilidad, 2, 8 MIPS, 307
Modelo de procesador, 310 Modo
captura, 120, 297 comparación, 121, 298 de 16 bis, 256 SLEEP, 34
Modos de direccionamiento, 46, 239
Modulación, 131
de Anchura de Pulsos, 299 Módulo, 122
comparador, 304 de Comparación, 325 PWM, 124
Motor DC, 75, 79 DSP, 20, 325, 327 Motores
DC, 52, 53 PAP, 52, 54 MOVFF, 271 MOVLB, 274 MPASM, 26 MPASMWIN, 333 MPLAB IDE, 329 MPLAB SIM, 338 MSERX, 200 MSETX, 200
MSSP, 167, 195, 205, 303
MSx84, 114 Multiplicador, 327
8x8, 232 de 8 bits, 355 MULWF, 272
Nacional Semiconductor, 78 NANOWAT, 223
NEGF, 270
Nomenclatura, 15, 225, 321 NOP, 72, 279
NRZ, 206 Onda cuadrada, 77 OPTION, 101 Optoacoplador, 75 Opto-triac, 79 Organigrama, 23 OSCCON, 235 Oscilador, 77, 233
de cristal, 234 OST, 89 Palabra
de configuración, 66, 86, 87 de identificación, 87 Pantalla LCD, 331 Pascal, 332 PCF 8583P, 100 PCF8574A, 100 PCF8583, 163 PCON, 88 PCWH, 365 PD#, 58 PEIE, 264
Perro Guardián, 91, 94 PFM, 54
Philips, 163 PIC School, 340 PIC, 1
PIC16F62x
PIC16F84, 23, 30, 117 PIC16F87, 37 PIC16F873A, 48, 50 PIC16F874A, 37 PIC16F876A, 50 PIC16F877A, 37 PIC16F87X, 187
PIC16F87x, 33, 38 42, 44, 81 PIC18C242, 226
PIC18C252, 226 PIC18F, 221
PIC18F1220, 223 PIC18F2331, 225 PIC18F4520, 354 PIC18F650, 229 PIC18F8722, 223 PIC18F8X20, 231 PIC18FXX20, 229 PIC18FXXKXX, 222 PIC18FXXXX, 222 PIC18XXJXX, 222 PIC18Xxxx, 15 PIC24, 307 PIC24F, 16, 19 PIC24FJ128GA, 314 PIC24FjxxxGA, 307 PIC24H, 20 PIC24HJxxxGP, 307 PIC-BOT3, 139 PICBUS, 114 PICBUS, 75 PICME-TR, 28, 73 PIC-TR, 51 PIE1, 62, 264 PIE2, 62, 63 PIE3, 264 Piezoeléctrico, 77 Pila, 38, 249 PIR1, 62, 63, 263 PIR2, 62, 63, 245, 263 PIR3, 263
POP, 278 POP.S, 310 POR#, 88 POR, 58, 84 PORT, 281 PORTA, 81 Postdivisor, 104 PPICBUS, 76 PR2, 123 Predivisor, 104 Prioridad, 259
Procesadores Digitales de Seủales, 317
PRODH, 229 PRODL, 229
Protección de Código, 66 PSP, 86
PSPIE, 61 PSPMODE, 86 PSV, 313, 315 Puerta A, 81, 143, 28 Puerta B, 59, 83, 283
Puerta C, 85, 283 Puerta D, 85, 284 Puerta E, 86, 284 Puerta F, 285 Puerta G, 286 Puerta H, 286 Puerta J, 287 Puerto de Tabla, 250 pull-up, 59 PUSH, 278 PUSH.S, 310
PWM, 54, 79, 124, 299, 325,356
PWRT, 89 PWRTE#, 78 RA0/AN0, 81 RA1/AN1, 81 RA2/AN2, 81 RA4/T0CKI, 81 RA5/AN4/SS#, 81 Radio frecuencia, 200 RAM, 39, 40, 41 RB<7-4>, 84 RB0/INT, 85 RB3/PGM, 83, 93 RB6/PGC, 83 RB7/PGD, 83 RBIF, 85 RBO/INT, 59 RBPU#, 84 RCALL, 277 RCON, 243, 260 RCSTA, 212, 213 Recepción, 193 Receptor, 203
asíncrono, 212 Reconocimiento, 179,193 Registro
de control de interrupciones, 61
de Estado, 39, 57, 313 de permiso de interrupciones
2, 62, de Trabajo W, 36 OPTION, 60 Registros
Específicos, 39 sombra, 310 Relés, 79
Reloj/calendario, 163 Repertorio, 47