material 1 de consulta microcontroladores temporizar por prog

10

Click here to load reader

Upload: mauricio-diaz-garcia

Post on 06-Jul-2015

423 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 1 de 10

INSTRUCTOR: MAURICIO DIAZ GARCIA INTITUCION EDUCATIVA: ________________________

GRUPO: ________________________ NOMBRE:_____________________________________

CIUDAD Y FECHA:____________________________________,

Listado de instrucciones:

Page 2: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 2 de 10

SUBRUTINAS DE RETARDO. Un retardo, es una forma de control de tiempo en la programación del PIC,Las instrucciones'normales' utilizan un ciclo de máquina para ejecutarse, un ciclomáquina es la unidad básica de tiempo de ejecución de un programa en un PIC ydepende de la velocidad del oscilador. Hay instrucciones llamadas de salto como goto,return, call, btfssetc que necesitan2 ciclos máquina para ejecutarse. Si contamos los ciclos máquina de una determinada parte de instrucciones de unprograma,podremos controlar los tiempos de retardo. Como sabemos que F=1/T, siendo F=frecuencia y T=tiempo, podemos determinarcuánto tiempo consumirá una instrucción en el microcontrolador, sabiendo quepara ejecutar una instrucción el microcontrolador utiliza 4 pulsos de reloj. Ej : Si un microcontrolador funciona a 4MHz, ¿qué tardará en ejecutar unainstrucción?

F=1/4T -> T=1*4/F Si F=4MHz

T=1/F = 1*4/4000000 =1useg

Page 3: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 3 de 10

Es decir que para un reloj de 4 MHz, cada instrucción simple tardará 1 useg, ypara las instrucciones de salto tardará 2useg. ;____________Programabucle simple__________________ list p=16f84A contador equ h'10'; contador de bucle org ;_______________________________________________ bsf h'03',5; Bank 1 clrf h'06; PortB salidas bcf h'03'5; Bank 0 ;___________________________________________ inicio movlw h'ff' ; cargamos 11111111 en w movwf h'06' ; enviamos todo '1' al port B call retardo ; subrutina retardo clrf h'06' ; Borramos el puerto B call retardo ; llamada subrutina retardo goto inicio ; repetimos el programa ;_______________________________________________ retardo movlw d'249' ;cargamos contador, la llamada al retardo son dos ciclos de maquina (cm) movwf contador ;con con el valor de 249 (1cm) ;______________________________________________ bucle nop ; consume un ciclo (1cm) decfsz contador,1 ; 1 cm si no hay salto 2 cm si salta goto bucle ; consume 2cm return ; 2 cm ;__________________________________________________ end ;_______________________________ ; el retardo se calcula de la siguiente forma: ; 2+1+1+(249)*1+2+(249-1)*2+2 ; 1001 useg = 1 seg Compilamos en Mplab

Page 4: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 4 de 10

Ahora creamos un proyecto así:

Page 5: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 5 de 10

Configuramos el pic en el Mplab

Adicionar el archivo en assembler al proyecto:

Page 6: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 6 de 10

Compilamos el programa para ver que este bien escrito en lenguaje Assembler

Reporte de errores de Compilacion

Page 7: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 7 de 10

Con

Con esto generamos el archovo *.hex que necesitamos para grabar el Pic Lo ubicamos en la misma carpeta del proyecto.

Page 8: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 8 de 10

Práctica: Montar el siguiente circuito y grabar el Pic con el ejercicioanterior.

Podemos realizar mas retardos con bucles anidados, es decir uno dentro del otropara conseguir retardos de milisegundos y de segundos dependiendo del valor quepodamos cargar a loscontadores. Veamos un ejemplo ;------------------------------------------------------------ ;-- Subrutinas retardo mediante bucles ;-- leemos port A y realizamos un menu ;-- con los valores leidos de la siguiente forma: ;-- Si porta=0 retardo 200ms ;-- si porta=1 retardo 1 seg ;-- si porta=2 retardo 5 seg ;-- si porta=3 retardo 10 seg ;------------------------------------------------------------ list p=16f84 contador1 equh'10' ;Variable contador contador2 equ h'11' contador3 equ h'12'

Page 9: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 9 de 10

portbequ h'06' portaequ h'05' statusequ h'03' pclequ h'02' ;Contador programa org 0 ;----------------Configuracion ports -------------------- bsf status,5 ;bank1 clrfportb;portb salidas movlw b'00011111' movwf porta ;porta entradas bcf status,5 ;bank0 ;-------------------------------------------------------- ;-- Programa principal -- ;-------------------------------------------------------- progmovf porta,0 andlw b'00000011' ;Solo 3 ultimos bits addwf pcl,1 goto prog0 ;Si porta=0 ->prog0 goto prog1 ;Si porta=1 ->prog1 goto prog2 ;Si porta=2 ->prog2 goto prog3 ;Si porta=3 ->prog3 gotoprog;Bucle principal ;------------------- Subprogramas retardos --------------- prog0 ;-- Subprograma 0 (200ms) movlw b'00000001' ;enviamos un 1 movwfportb;al puerto b movlw d'200' ;cargamos contador1 con 200 callmiliseg;llamamos subrutina milisegundos (tiempo enon) clrfportb;enviamos un 0 al portB movlw d'200' ;cargamos contador1 con 200 callmiliseg;volvemos a llamar subrutina (tiempo en off) gotoprog prog1 ;--Subprograma 1 1 seg movlw b'00000001' movwfportb movlw d'10' ;cargamos contador3 con 10 call segundo ;llamada subrutina segundo (tiempo en on) clrfportb movlw d'10' ;cargamos contador3 con 10 call segundo ;llamada subrutina segundo (tiempo en off) gotoprog prog2 ;--Subprograma 2 (5 seg) movlw b'00000001' movwfportb movlw d'50' callsegundo

Page 10: Material 1 de consulta microcontroladores temporizar por prog

Sistema de Gestión

de la Calidad

Servicio Nacional de Aprendizaje – SENA

REGIONAL CUNDINAMARCA CENTRO DE DESARROLLO AGROEMPRESARIAL

Programa de formación: INSTALACIONES ELECTRICAS EN BAJA TENSION

MATERIAL DE APOYO GUIA No. 2 (MICROCONTROLADORES)

Fecha: AGOSTO 2011

Versión 1.0

Página 10 de 10

clrfportb movlw d'50' call segundo gotoprog prog3 ;-- Subprograma 3 (10 seg) movlw b'00000001' movwfportb movlw d'100' call segundo clrfportb movlw d'100' call segundo gotoprog ;------------------- Subrutinas de retardo con bucles anidados -------------- ;------------------- Retardo milisegundos con 2 bucles anidados-------------- ;---------------------------------------------------------------------------- miliseg;-- Subrutina Retardo milisegundos movwf contador2 ;cargamos contador2 con 200 bucle1 movlwd'249' ;y contador 1 con 249 movwf contador1 ;Aprox 200 ms bucle2 nop;NoOperation (no hace nada,pasa un ciclo de maquina) decfsz contador1,1 ;Decrementamos contador 1 goto bucle2 ;Si contador1 distinto 0 repite operacion decfsz contador2,1 ;Si contador1=0 decrementados contador2 goto bucle1 ;Si contador2 no es cero -> vamos a bucle1 return;Si contador2=0 finaliza subrutina ;------------------- Retardo en segundos con 3 bucles anidados ---------------- ;------------------------------------------------------------------------------ segundo;-- Subrutina Retardo segundos movwf contador3 ;cargamos contador3 con valor de prog1,prog2,prog3 bucle3 movlwd'100' ;y contador 2 con 100 movwf contador2 bucle4 movlwd'249' ;cargamos contador1 con 249 movwf contador1 bucle5 nop;NOP (un ciclo de maquina 1u segundo) decfsz contador1,1 goto bucle5 decfsz contador2,1 goto bucle4 decfsz contador3,1 goto bucle3 return ;------------------- Final de subrutinas de retardo ----------------------------- end