360 likes | 665 Views
PROGRAMACION DEL MICROCONTROLODADOR PIC16F877. Ing. Carlos Guerra Cordero. INTRODUCCION Los Microcontroladores son utilizados en muchas áreas de la actividad humana como: electrónica de consumo, telecomunicaciones, automotriz, domótica, etc.
E N D
PROGRAMACION DEL MICROCONTROLODADOR PIC16F877 Ing. Carlos Guerra Cordero
INTRODUCCION Los Microcontroladores son utilizados en muchas áreas de la actividad humana como: electrónica de consumo, telecomunicaciones, automotriz, domótica, etc. El microprocesador esta diseñado para buscar, decodificar y ejecutar instrucciones sin detenerse. La diferencia entre un microcontrolador y un microprocesador, es que en este ultimo la memoria es externa requiriendo de un bus de datos y direcciones. Un microcontrolador es un dispositivo que integra el CPU, la memoria y los puertos de entrada y salida.
Objetivos • Determinar las características de los microcontroladores • Determinar las instrucciones de la arquitectura de la gama media • Programar instrucciones aplicados a sistemas digítales del uCo. 16F877
Características de los uCo. PIC16F877 Arquitectura es Harvard Usa arquitectura en la Gama Baja, Media y Alta Lenguaje de Maquina Interpreta las instrucciones, que indican el código de operación y los operandos Usa el software MPLAB para la programación Usa el PROTEUS como herramienta de simulación
ARQUITECTURA DE LA GAMA MEDIA C = 2{13} x 14 Bit’s = 8192 Instrucciones = 8 KBytes
Determinar las instrucciones de la arquitectura de la gama media • Instrucciones con Inmediato: • Aritmético: • ADDLW INMED ; (W ← INMED + W) • SUBLW INMED ; (W ← INMED – W) • Lógicos: • ANDLW INMED ; (W ← INMED AND W) • IORLW INMED ; (W ← INMED OR W) • XORLW INMED ; (W ← INMED XOR W) • Transferencia: • MOVLW INMED ; (W ← INMED) • RETLW INMED ; (W ← INMED)
b) Instrucción con Acceso a Memoria: Aritmético: ADDWF F, d ; (d ← {dato} + W) SUBWF F, d ; (d ← {dato} – W) Lógico: ANDWF F, d ; (d ← {dato} AND W) IORWF F, d ; (d ← {dato} OR W) XORWF F, d ; (d ← {dato} XOR W) --------------------------------------------------------------------------------------------------------------------------------- INCF F, d ; (d ← {dato} + 1) DECF F, d ; (d ← {dato} – 1) MOVF F, d ; (d ← {dato}) SWAPF F, d ; (Intercambiar) COMF F, d ; (d ← {dato}’) RLF F, d ; (Rotar Izquierda) RRF F, d ; (Rotar Derecha) ---------------------------------------------------------------------------------------------------------------------------------- INCFSZ F, d ; (Incrementar y saltar cero) DECFSZ F, d ; (Decrementar y saltar cero)
c) Instrucciones para manipular bit´s: a) Escritura (Forzar) BSF F, Bit ; (poner “1” en la dirección del bit) BCF F, Bit ; (poner “0” en la dirección del bit) b) Lectura (Testear) BTFSS F, Bit ; (¿Bit = 1?) BTFSC F, Bit ; (¿Bit = 0?) ------------------------------------------------------------------------------------------------------------ d) Instrucciones de salto: GOTO Dirección CALL Dirección
Otras Instrucciones: CLRW ; Borrar Instrucción CLRF ; Borrar Dirección MOVWF F ; (Mover W → Dirección) SLEEP ; Descansa CLRWDT ; Perro Guardián NOP ; No hace nada
SFR : Son registros propios del CPU que se encuentran en la memoria de datos, y son: STATUS, INDF, FSR, INTCON, PLC y PCLATH
Hay parte de los registros del CPU que se encuentran en la memoria de datos Configuran los puertos como entrada/salida: * TRISX (A, B, C, D, E) ; Define la configuración de los puertos y determina el sentido (in/out) TRSIB { 1 = Entrada y 0 = Salida } * PORTX (A, B, C, D, E); Determina si entra “0” o “1” al puerto Registro de Control
USO DEL MPLAB: • MPLAB ← • Proyect – New ← • Configure – Select Device ← • Project – Set Language Tool Locations ← • microchip MPASM Toolsuite • Executables • MPASM Assembler (mpasmwin.exe) OK • Debugger ← • Select Tool – MPLAB SIM ← • File – New ← • Despues de copiar el archivo fuente, procedemos a guardarlo en una carpeta • Simulación en Proteus 6 Professional • C ← • Program Files – Labcenter Electronics – Proteus 6 Professional – BIN – ISIS - yes
; Activar Led LIST P=16F877 INCLUDE <P16F877.INC> ORG 0000H CLRF PORTB ; 00000000 BSF STATUS,RP0 ; BNK-1 BCF TRISB,0 ; RBO COMO SALIDA BCF STATUS,RP0 ; BNK 0 BSF PORTB,0 ; LED ON GOTO $ END
; Controlar el Led con un Boton LIST P=16F877 INCLUDE <P16f877.INC> ORG 0000H BSF STATUS,RP0 ; BNK-1 BSF TRISC,0 ; RC0 COMO ENTRADA BCF TRISB,0 ; RB0 COMO SALIDA BCF STATUS,RP0 ; BNK-0 ;------------------------------------------------------------------------------------------------------------------------------------ TESTEA BTFSS PORTC,0 ; ¿RC0=1? GOTO ACTIVAR APAGAR BCF PORTB,0 ; (LED OFF)(RB0=0) GOTO TESTEA ACTIVAR BSF PORTB,0 ; (LED ON)(RB0=1) GOTO TESTEA END
LABORATORIO # 3 Hacer un programa y simularlo y que haga lo siguiente: 1.- Hay 8 Led’s conectados al puerto “B” y que se comporte como un contador 2.- Se desea que el Led se desplace a la izquierda uno a la vez y debe retroceder y así sucesivamente. 3.- Que en el Display salga los # de 0 al 9 Problema 1 Problema 2
Problema 3 FIN