Programación de microcontroladores usos y aplicaciones. Desde Ensamblador a C. Familias 8-bit de Microchip: PIC10F, PIC12F, PIC16F y PIC18F /cursos/microchip/ Espinher Electróingeniería, S.A. de C.V. Ing. Héctor Gómez Gerente de Producto cursos@espinher.mx
El mundo gira gracias a los microcontroladores Existen miles de variedades, especificaciones, marcas y modelos.
Sistemas Integrados uc Microcontroladores Propósito específico 8-bit, 16-bit, 32-bit up Microprocesador Propósito general 32-bit a 64-bit Lenguaje Ensamblador ASM Lenguaje C o C++
Especificaciones uc up Microcontroladores Microprocesador Frecuencia de Frecuencia de operación <500MHz RAM: 1MB ROM: 4MB operación >1GHz RAM: Config > 4,096MB ROM: Config > 131,072MB
uc Microcontroladores Controlador Lógico Programable o PLC Control de Motores Control Industrial Control de LED Instrumentación Sensores y procesos Aplicaciones up Microprocesador Sistemas Operativos: Linux, Windows, RTOS Computadoras: Teléfonos o Tabletas. Comunicaciones: SATA, Bluray, Video, Datos y voz. Instrumentación
Ejemplo de aplicación OS Linux Android up uc uc uc uc uc uc uc
Universo 32-bit
Familia de ARM Exynos 5 Samsung Galaxy Nvidia Tegra, 2, 3, 4 Samsung Exynos 3110 Raspberry ssd Pi 3 PIC32MZ dspic33 Renesas Synergy SAM3X8E Arduino Due STM32 Discovery STM32 & KL25Z Freedom
Universo 8-bit a 16-bit
Familia 8-bit Microchip
Aplicación: Control y automatización industrial
Elementos de un PLC Interfaz de Usuario: Teclado matricial, tablero de operador, botonera, Teclado USB Sensores analógicos: temperatura, presión, luxes, conteo, ph, humedad. RPM, contador, tiempo, frecuencia, distancia Preso, termostatos Interruptores de límite Pantalla LCD: alfanumérica o gráfica, monocromática o color, opción táctil PLC Control de Proceso Entradas y salidas Eléctro Válvulas Comunicación: Profibus, Modbus, Fieldbus, AS-i, HART, SERCOS, Sinec, SyncNet, Ethernet, CAN Bus Contactor: Motores, calefactores, etc Otro PLC
Periféricos del 87K90 Puerto B para control de teclado matricial u otras entradas de usuario Convertidor Analógico a Digital de 12-bit con 24 canales. Temporizadores 13 canales Puerto D Puerto E Puerto J excelente para bus paralelo de 8-bit Puerto F Puerto G USART RS232, RS485 SPI I2C Ethernet* CAN Bus* WiFi* Canales PWM 6 para control trifásico Otros uc
18F87K90 VS. 18F4550 Característica PIC18F87K90 PIC18F4550 ROM, RAM, EEPROM 128KB, 4KB, 1KB 32KB, 2KB, 0.2KB Frequencia Max 64MHz (62.5ns) 48MHz* (83.3ns) Puertos E/S ó I/O 69 pines ABCDFGHJ 35 pines ABCDE* Puertos ADC 24 + 12 Diff 13 Timers 8-bit/16-bit 6 / 5 = 13 1 / 3 = 4 Canales PWM 3 (6) 1 (2) USART, SPI, I2C 2, 2, 2 1, 1, 1 Reloj Calendario A, M, S, D, H, M, s No Interrupciones Ext. 4 3 Voltaje de Op. 1.8V a 5.5V 2.0V a 5.5V USB No USB 2.0 12Mbit/s
Aplicación industrial 0% PLC PIC18F87K90
Aplicacion REAL
/cursos/microchip/
8-bit PIC10F322 PIC16F877A PIC18F4550 PIC18F87K90 Ensamblador a C
Fundamentos: Registros de Funciones Especiales SFR
PIC10F322 7 6 5 4 3 2 1 0 0x70
PIC16F877A 7 6 5 4 3 2 1 0 0xA8
PIC18F4550 7 6 5 4 3 2 1 0 0x82
Special Features of the CPU Instruction Set Summary
} {
Bits de Configuración
Bits de Configuración
Bits de Configuración
Configuración de puertos: Habilitar si es para recibir información del exterior Entrada Registro TRISn = Unos 1111,1111 1nput Habilitar si es para entregar información al exterior Salida Registro TRISn = Ceros 0000,0000 0utput
Extraer e inyectar información al microcontrolador PIC10F322 6 pines PIC16F877A 40 pines PIC18F4550 40 pines PIC18F87K90 80 pines Entrada Salida TRISA * TRISA TRISA TRISA 0xFF 0x00 TRISB TRISB TRISB 0xFF 0x00 TRISC TRISC TRISC 0xFF 0x00 TRISD TRISD TRISD 0xFF 0x00 TRISE * TRISE * TRISE 0xFF 0x00 TRISF 0xFF 0x00 TRISG 0xFF 0x00 TRISH 0xFF 0x00 TRISJ 0xFF 0x00
Extraer e inyectar información al microcontrolador PIC18F87K90 80 pines Entrada Salida Valor Binario TRISA = 0xFF DIP Switch 1111,1111 TRISB = 0x00 LEDs 0000,0000 TRISC = 0xF0 4 Entradas 4 Salidas 1111,0000 TRISD = 0xaa 4 Entradas 4 Salidas 1010,1010 TRISE = 0xFF Termostatos 1111,1111 TRISF = 0x00 Electro-Válvulas 0000,0000 TRISG = 0xFF Botones 1111,1111 TRISH = 0x00 Pantalla LCD 0000,0000 TRISJ = 0xFF Sensores 1111,1111
Extraer e inyectar información al microcontrolador TRISn PORTn Aplicación Lógica positiva 0000,0000 1111,1111 Activa todas las electro-válvulas del puerto 0000,0000 0000,1111 Activa sólo 4 electro-válvulas del puerto 0000,0000 0000,0001 Activa sólo 1 electro-válvulas del puerto 1111,1111 1111,1111 8 Termostatos están activados 1111,1111 0000,1111 Sólo 4 termostatos están activados 1111,1111 0000,0001 Sólo 1 termostato esta activado 0000,1111 0000,1111 Electro-válvulas apagadas, termostatos activos 0000,1111 0001,1110 1 electro-válvula y 1 termostato desactivado 0000,1111 1111,000 4 electro-válvulas activas y 0 termostatos
Catalogo de Instrucciones Fundamentos de Lenguaje Ensamblador Instrucción Significado Descripción movlw Move Literal to Work WREG <= 0xAA movwf Move Work to Floc OSCCON <= WREG movf Move Floc to Work WREG <= ADCON0 bcf bsf Bit Clear Floc Bit Set Floc Bit TMR0ON de T0CON <= 0 Bit 7 de T0CON <= 0 Bit TMR0ON de T0CON <= 1 Bit 7 de T0CON <= 1 btfsc Bit Test Floc Skip if Clear Brinca si el bit es 0 btfss Bit Test Floc Skip if Set Brinca si el bit es 1 call goto Es utilizado para ir a sub rutinas Es utilizado para ir a una dirección de memoria
Catalogo de Instrucciones Fundamentos de Lenguaje Ensamblador Instrucción Operador Descripción movlw 0xAA b 10101010.170 WREG <= 0xAA movwf OSCCON OSCCON <= WREG movf ADCON0 WREG <= ADCON0 bcf bsf T0CON,TMR0ON T0CON,7 T0CON,TMR0ON T0CON,7 Bit TMR0ON de T0CON <= 0 Bit 7 de T0CON <= 0 Bit TMR0ON de T0CON <= 1 Bit 7 de T0CON <= 1 btfsc ADCON0,2 Brinca si el bit 2 de ADCON0 es 0 btfss ADCON0,2 Brinca si el bit 2 de ADCON0 es 1 call PERRO Ejecuta la instrucción debajo de PERRO goto 0xaff Se posiciona en dicha dirección
Operaciones orientadas a BYTES y Literales Instrucción Operador Descripción Instrucción addwf Operador ADRESL WREG <= Descripción WREG + ADRESL addwf addlw addlw subwf ADRESL 0xAA 0xAA TMR0 WREG WREG <= <= WREG WREG + + ADRESL 0xAA WREG <= WREG TMR0 + - 0xAA WREG subwf sublw sublw andwf TMR0 0x8F PERRITO 0x8F WREG <= TMR0 0x8F - WREG WREG WREG <= <= wreg 0x8F & - PERRITO WREG andwf andlw andlw iorwf PERRITO 0xC5 GATITO 0xC5 WREG WREG <= <= wreg wreg & & PERRITO 0xC5 WREG <= <= wreg & GATITO 0xC5 iorwf iorlw iorlw xorwf GATITO 0x01 OSCCON 0x01 WREG WREG <= <= wreg wreg GATITO 0x01 WREG <= <= wreg ^ OSCCON 0x01 xorwf xorlw xorlw clrf OSCCON 0x87 T0CON 0x87 WREG WREG <= <= wreg wreg ^ ^ OSCCON 0x87 WREG T0CON <= wreg <= 0x00 ^ 0x87 clrf decf ADRESH T0CON Limpia Decrementa con ceros en el 1 el registro T0CON decfsz ADRESH PERRO Decrementa y en brinca 1 el si registro es cero decfsz incf GATITO PERRO Decrementa Incrementa y en brinca 1 el si registro es cero incfsz CONTADOR GATITO Incrementa y en brinca 1 el si registro es cero incfsz swapf CONTADOR TRISC Intercambia Incrementa nibbles y brinca el registro si es cero TRISC comf PORTB Invierte cada bit del registro PORTB
Operaciones orientadas a BYTES y Literales Instrucción Operador Descripción setf ADRESH ADRESH <= 0xFF btg PORTD,RD0 Cambia el estado del bit RD0 cpfseq PERRITO Compara PERRITO, brinca si es = cpfsgt GATITO Compara GATITO, brinca si es > cpfslt T0CON Compara T0CON, brinca si es < decfsz PERRO Decrementa y brinca si no es cero incfsz CONTADOR Incrementa y brinca si no es cero movff CONTA1,CONTA2 CONTA2 <= CONTA1 mulwf PORTC PRODH:PRODL <= PORTC * WREG mullw 0xF1 PRODH:PRODL <= 0xF1 * WREG tstfsz PORTE Brinca si PORTE es 0 negf PRODH Negativo de PRODH tblrd tblwt Instrucción para lectura de tablas Instrucción para escritura de tablas
Operaciones orientadas a BYTES 10F322 16F877A 18F4550 18F87K90