Juan

Solo disponible en BuenasTareas
  • Páginas : 9 (2203 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de noviembre de 2010
Leer documento completo
Vista previa del texto
PROGRAMACIÓN PIC (II) Microcontrolador PIC 16F84
mail : enric.serra

0 - INTRODUCCIÓN.
Este documento es una continuación al documento de programación del PIC 16f84. Este documento se puede copiar y utilizar siempre que se indique la procedencia (Escola Professional Salesians Joan XXIII) y se indique su autor Enric Serra. Todos los comentarios y bugs serán bien recibidos.

Listado deinstrucciones:

1 – 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 ciclo máquina es la unidad básica de tiempo de ejecución de un programa en un PIC y depende de la velocidad del oscilador. Hay instrucciones llamadas de salto como goto,return, call, btfss etc que necesitan2 ciclos máquina para ejecutarse. Si contamos los ciclos máquina de una determinada parte de instrucciones de un programa, podremos controlar los tiempos de retardo. Como sabemos que F=1/T, siendo F=frecuencia y T=tiempo, podemos determinar cuánto tiempo consumirá una instrucción en el microcontrolador, sabiendo que para ejecutar una instrucción el microcontrolador utiliza 4 pulsos de reloj. Ej :Si un microcontrolador funciona a 4MHz, ¿qué tardará en ejecutar una instrucción? F=1/4T -> T=1*4/F Si F=4MHz T=1/F = 1*4/4000000 =1useg Es decir que para un reloj de 4 MHz, cada instrucción simple tardará 1 useg, y para las instrucciones de salto tardará 2useg.

1.1 Práctica: Montar el siguiente circuito y grabar el pic con el ejercicio anterior.

Podemos realizar mas retardos con buclesanidados, es decir uno dentro del otro para conseguir retardos de milisegundos y de segundos dependiendo del valor que podamos cargar a los contadores. 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 1seg ;-si porta=2 retardo 5 seg ;-si porta=3 retardo 10 seg ;-----------------------------------------------------------list p=16f84 contador1 equ h'10' ;Variable contador contador2 equ h'11' contador3 equ h'12' portb equ h'06' porta equ h'05' status equ h'03' pcl equ h'02' ;Contador programa org 0 ;----------------Configuracion ports -------------------bsf status,5 ;bank1 clrf portb ;portbsalidas movlw b'00011111' movwf porta ;porta entradas bcf status,5 ;bank0

;-------------------------------------------------------;-Programa principal -;-------------------------------------------------------prog movf 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 ->prog3goto prog ;Bucle principal ;------------------- Subprogramas retardos --------------prog0 ;-- Subprograma 0 (200ms) movlw b'00000001' ;enviamos un 1 movwf portb ;al puerto b movlw d'200' ;cargamos contador1 con 200 call miliseg ;llamamos subrutina milisegundos (tiempo en on) clrf portb ;enviamos un 0 al portB movlw d'200' ;cargamos contador1 con 200 call miliseg ;volvemos a llamar subrutina (tiempoen off) goto prog prog1 ;-- Subprograma 1 1 seg movlw b'00000001' movwf portb movlw d'10' ;cargamos contador3 con 10 call segundo ;llamada subrutina segundo (tiempo en on) clrf portb movlw d'10' ;cargamos contador3 con 10 call segundo ;llamada subrutina segundo (tiempo en off) goto prog prog2 ;-- Subprograma 2 (5 seg) movlw b'00000001' movwf portb movlw d'50' call segundo clrf portb movlw d'50'call segundo goto prog prog3 ;-- Subprograma 3 (10 seg) movlw b'00000001' movwf portb movlw d'100' call segundo clrf portb movlw d'100' call segundo goto prog ;------------------- Subrutinas de retardo con bucles anidados -------------;------------------- Retardo milisegundos con 2 bucles anidados-------------;---------------------------------------------------------------------------miliseg ;--...
tracking img