Pic 16F

Páginas: 23 (5717 palabras) Publicado: 4 de diciembre de 2012
EJERCICIO No. 1

OBJETIVO:

Diseñar rutinas de temporizado mediante el decremento anidado de registros y calcular el tiempo que demora la rutina.


TEORIA:

Una rutina de temporizado se utiliza para generar retardos de tiempo. La duración del retardo depende del número de registros utilizados y de la frecuencia a la cual trabaja el microcontrolador.

Una forma de realizar retardos espor medio de la instrucción NOP, la cual demora un ciclo de instrucción y no hace nada, pero para realizar un retardo de 1 segundo se necesitaría 1.000.000 de instrucciones NOP (con un oscilador de 4MHz), lo cual es prácticamente imposible.

Por esta razón, se idearon las rutinas de temporizado utilizando registros anidados, los cuales se cargan con un valor cualquiera y luego se procede adecrementarlos en forma jerárquica.

La rutina más común trabaja con tres registros, y el código es:

RETARDO MOVLW VALOR1
MOVWF REG1
UNO MOVLW VALOR2
MOVWF REG2
DOS MOVLW VALOR3
MOVWF REG3
TRES DECFSZ REG3, F
GOTO TRES
DECFSZ REG2, F
GOTO DOS
DECFSZ REG1, F
GOTO UNO
RETURN





y el diagrama de flujo es:

[pic]

La ecuación para calcular el tiempoque dura la rutina de retardo es:

T1 = (3) x (Valor3) – 1
T2 = (3 + 2 + T1) x (Valor2) – 1
T3 = (3 + 2 + T2) x (Valor1) – 1
TF = T3 + 6


DESCRIPCION DEL EJERCICIO.

Utilizando rutinas de temporizado con registros anidados se procederá a implementar un semáforo con la siguiente secuencia:

1. Luz roja, con un tiempo de 3 segundos.
2. Luz amarilla, con un tiempo de 1 segundo.3. Luz verde con un tiempo de 3 segundos.
4. Luz verde y luz amarilla con un tiempo de 2 segundos.
5. Luz amarilla con un tiempo de 1 segundo.

Esta secuencia se repetirá indefinidamente.

Se conectarán 3 leds en los pines 0, 1 y 2 del puerto B para visualizar la secuencia, tal como se muestra en el diagrama:

[pic]


El diagrama de flujo del programa es:

[pic]




Y elcódigo del programa es:

PROCESSOR 16F628
STATUS EQU 03
TRISB EQU 06
PORTB EQU 06
REG1 EQU 20
REG2 EQU 21
REG3 EQU 22
RP0 EQU 05

INICIO BSF STATUS, RP0
BCF TRISB, 0
BCF TRISB, 1
BCF TRISB, 2
BCF STATUS, RP0

BCF PORTB, 0
BCF PORTB, 1
BCF PORTB, 2

CICLO BSF PORTB, 0
CALL UN_SEG
CALL UN_SEG
CALL UN_SEG
BCF PORTB, 0
BSFPORTB, 1
CALL UN_SEG
BCF PORTB, 1
BSF PORTB, 2
CALL UN_SEG
CALL UN_SEG
CALL UN_SEG
BSF PORTB, 1
CALL UN_SEG
CALL UN_SEG
BCF PORTB, 2
CALL UN_SEG
BCF PORTB, 1
GOTO CICLO

UN_SEG MOVLW .30
MOVWF REG1
UNO MOVLW .100
MOVWF REG2
DOS MOVLW .100
MOVWF REG3
TRES DECFSZ REG3, F
GOTO TRES
DECFSZ REG2, F
GOTO DOSDECFSZ REG1, F
GOTO UNO
RETURN

END


EJERCICIO No. 2

OBJETIVOS:

1. Entender el funcionamiento de las interrupciones.
2. Diseñar rutinas de temporizado utilizando el TMR0.


TEORIA:

Al trabajar con interrupciones se debe asegurar que la subrutina de control de las mismas inicie en la dirección 04 de la memoria del programa, para esto se debe reservar esa posición, locual se hace usando la función ORG del MPLAB.

ORG 04
GOTO INTERRUPC

La función ORG le indica al compilador que la dirección que recibe como operando se debe ocupar con la instrucción que se encuentra en la siguiente línea.

Cada vez que el TMR0 se desborde generará una petición de interrupción, esto ocurrirá cada 256 us (Con un oscilador de 4MHz). Este tiempo es demasiado cortopara una rutina de retardo, razón por la cual se utiliza un divisor de frecuencia (Preescaler) el cual se encarga de demorar los impulsos de reloj que incrementan al TMR0. Según la escala que se escoja para el Preescaler (bits PS2, PS1, PS0 del registro OPTION) se pueden obtener diferentes tiempos, ejemplos:

- Si se escoge una escala de 1:2 para el preescaler, el TMR0 se desbordará cada...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Test 16f
  • Pica Pica
  • Pice
  • los picos
  • pico
  • pico
  • El pico
  • Pico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS