Vous êtes sur la page 1sur 8

PRÁCTICA 2

Generador de Frecuencia 1 KHZ


Dispositivos Digitales Programables
Omar Méndez Jiménez
Ulises Lain Romero Pérez
Enrique Campos Zamora
10°A
MORENO GUZMÁN JAVIER ANDREY
Contenido
Marco teórico ............................................................................................................................ 3
DESARROLLO ............................................................................................................................. 4
BASIC ......................................................................................................................................... 4
C................................................................................................................................................. 4
ENSAMBLADOR ......................................................................................................................... 7
CONCLUSIONES ......................................................................................................................... 8
Marco teórico

Definimos genéricamente como Frecuencia a una medición de una cantidad de repeticiones en


un lapso determinado, aplicable a una gran cantidad de fenómenos, desde movimientos
ondulatorios (como puede ser, por ejemplo, las Ondas Sonoras) hasta la realización de Cálculos
Matemáticos por parte de un dispositivo electrónico. Esta medición es mensurable y puede ser
referenciada mediante la unidad establecida por el Sistema Internacional de Unidades siendo
entonces la establecida como Hertzios (También denominada Hercio o Hertz) llevando este
nombre en honor al físico alemán Heinrich Rudolf Hertz, quien realizó un estudio pionero en las
Ondas Electromagnéticas y su forma en la cual se propagan a través de distintos medios, y el
fenómeno oscilatorio que éstas realizan.

En lo que es su representación, un Hercio representa a un Ciclo por segundo, contemplándose


a todo hecho que ocurra en forma repetitiva, y aplicado no solo a las Ondas Sonoras o a las
Ondas Electromagnéticas, sino también a fenómenos marítimos (contemplando el Oleaje en un
tiempo determinado) o bien hasta el fenómeno Vibratorio de distintos elementos que se
encuentren en estado sólido.

Esta frecuencia es equivalente a un número determinado, sobre una fracción de tiempo


mensurable en Un Segundo, siendo utilizado en Informática no solo para la cantidad de
Operaciones Matemáticas simples que puede realizar la Unidad Central de Procesamiento (CPU,
por sus siglas en inglés, también conocida como Procesador o Microprocesador) sino también
para los refrescos que realiza la Pantalla del Monitor.

En el caso de los Procesadores, esto representa a la cantidad de Operaciones Aritméticas e


inclusive Operaciones Lógicas de una alta simpleza, siendo realizadas la Suma, Resta,
Multiplicación y Cociente además algunas operaciones binarias que permiten interpretar los
datos bajo el código de ceros y unos que representa la transmisión o no-transmisión de energía
eléctrica, y su respectivo ordenamiento y procesamiento para que sea transformada en una
Información que puede ser percibida a través de los sentidos con la ayuda de un Periférico de
Salida.

Como este número suele ser muy superior en el caso de los Procesadores y Memorias donde las
capacidades son muy altas, ya no se utiliza a la unidad básica para referenciar, sino que se
recurre a sus múltiplos equivalentes, encontrándose los siguientes, en una equivalencia:

Hz - Hertzios: 1

KHz - Kilohertzios: 1000 Hz

MHz - Megahertzios : 1000000 Hz

GHz - Gigahertzios: 1000000000 Hz

THz - Terahertzios: 10000000000000 Hz


DESARROLLO
Se procedió a programar la práctica 1 con un pic16f84a, y en tres diferentes lenguajes de
programación:

BASIC
Código en Basic

inicio:

HIGH portb.1

PAUSE 500

LOW portb.1

PAUSE 500

GOTO inicio

END

Simulación con lenguaje en Basic

C
Código en C

#include <18f4550.h>
#fuses
HS,MCLR,CCP2B3,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NO
DEBUG,NOWRT,NOVREGEN

#use delay(clock=20000000)

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

////////////////////////////////////////////////////////////////////////////////////

//

// Defines y Constantes

//

////////////////////////////////////////////////////////////////////////////////////

#define LED PIN_E0 // Defino el Pin del Led

#define OUT PIN_B3

////////////////////////////////////////////////////////////////////////////////////

//

// Interrupción por Externa por Cambio de Flanco en RB0

//

////////////////////////////////////////////////////////////////////////////////////

#int_rtcc

void handle_rtcc_int(){

Output_Toggle(OUT); // Conmuto PIN de Salida;

Set_timer0(181);

Output_Toggle(LED); // Conmuto PIN de Led;

Main

void main() {

delay_ms(333); // Espero a que todo se estabilice e ...


disable_interrupts(global); // Inicializo el Micro y ...

disable_interrupts(int_timer1); // deshabilitando todo lo no necesario ...

disable_interrupts(int_rda);

disable_interrupts(int_ext);

disable_interrupts(int_ext1);

disable_interrupts(int_ext2);

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_spi(FALSE);

setup_psp(PSP_DISABLED);

setup_counters(RTCC_INTERNAL,RTCC_DIV_2);

setup_timer_0(RTCC_OFF);

setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);

setup_timer_2(T2_DISABLED,0,1);

setup_timer_3(T3_DISABLED);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

port_b_pullups(FALSE);

delay_ms(333);

setup_timer_0(RTCC_DIV_16 | RTCC_8_BIT); // Ajusto divisor de TMR1 para RTC cada 0.25 ms

enable_interrupts(int_rtcc);

enable_interrupts(global); // Habilito las interrupciones necesarias

do {

} while (TRUE);

Capturas de simulación con Código C


ENSAMBLADOR
Código

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


LIST P=16F84A
INCLUDE <P16F84A.INC>

CBLOCK 0x0C
ENDC

#DEFINE Salida PORTB,3

; ZONA DE CÓDIGOS
********************************************************************

ORG 0
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
bcf Salida ; Esta línea se configura como
salida.
movlw b'00000000'
movwf OPTION_REG ; Prescaler de 2 para el TMR0
bcf STATUS,RP0 ; Acceso al Banco 0.
Principal
bsf Salida ; La salida pasa a nivel alto
call Timer0_500us ; durante este tiempo.
nop ; Dos ciclos mediante "nop" para
compensar
nop ; la instrucción "goto
Principal" del nivel bajo.
bcf Salida ; La salida pasa a nivel bajo
call Timer0_500us ; durante este tiempo.
goto Principal
;
; Subrutina "Timer0_500us" -------------------------------------------
------------
;
; Con el simulador se comprueba que se obtienen unos tiempos para la
onda cuadrada
; de 1kHz exactos, 500 µs tanto para el nivel alto como para el bajo.
;
TMR0_Carga500us EQU -d'242' ; Este valor se ha obtenido
experimentalmente
; con ayuda del simulador del
MPLAB.
Timer0_500us
nop ; Algunos "nop" para ajustar a
500 µs exactos.
nop
movlw TMR0_Carga500us ; Carga el Timer 0.
movwf TMR0
bcf INTCON,T0IF ; Resetea el flag de
desbordamiento del TMR0.
Timer0_Rebosamiento
btfss INTCON,T0IF ; ¿Se ha producido
desbordamiento?
goto Timer0_Rebosamiento ; Todavía no. Repite.
return

END
Capturas de simulación de programa en Lenguaje Ensamblador

CONCLUSIONES
El retomar en el decimo cuatrimestre el lenguaje de programación C ha sido interesante, sin
embargo, ha sido un reto programar en ensamblador puesto que durante toda la carrera no se
había tocado ese lenguaje de programación, así mismo basic.

Durante el tsu no se tocaron los lenguajes de programación ya mencionados, solamente


lenguaje C, pero ha sido interesante aprender nuevos lenguajes de programación. Por lo que se
espera aprender mucho más con las siguientes prácticas.

Vous aimerez peut-être aussi