1. TECNOLÓGICO NACIONAL
DE MÉXICO
Instituto Tecnológico de
matamoros
Ingeniería Electrónica
Microcontroladores
Práctica Tren Pulso
Nombre(s) de alumno(s) Núm. de control
Joel Iván Terán Ramírez 15260142
Antonio Higinio Estrada Vergara 15260128
Santiago Pablo Alberto 15260144
Jesús Alejandro Cruz Contreras 15260124
Marco Antonio Salas López 15260150
Profesor: Ing. Nelson Amaro Arias
H. MATAMOROS,TAM. 18 de Abril 2018
2. Objetivos:
-Generar una onda con el Tren Pulso que realizaremos.
-Realizar la programación correctamente de manera que cumplamos los objetivos
establecidos.
Teoría:
Cada instrucción en assembler tiene un tiempo ejecución preciso, que viene dado
por 4/Fosc, dado que el oscilador es del 20 MHz, el tiempo de instrucción viene
dado es 4/20000000 = 200 ns o 0.2µs, algunas instrucciones requieren un tiempo
de ejecucion doble, como por ejemplo goto, call etc. Pero no entremos en este
detalle, la instrucción nop, como su nombre lo indica, no hace nada, simplemente
se utiliza para crear demoras.
Pulsos lo que hace es sacar los 40 pulsos por el PINB1, lo primero que hacemos
es mover un 40 a una variable, esta se utiliza como un contador del número de
pulsos a enviar.
Ahora lo que hace Bucle1 es hacer un ciclo de ese tren, la instrucción bsf pone en
alto el pin,
y luego tenemos 7 nop, que lo que hacen es crear una demora de 1.4µs, y luego
ponemos el pin en cero con bcf, entonces, desde que se pone en alto el pin b0
hasta que se pone en bajo transcurren 1.6 µs, ahora lo que hace decfsz,
disminuye en uno la variable aux, si esta llega a cero salta una instrucción, es
decir, se saltaría el goto, asi saldría del bucle. Pero preocupémonos de cuando no
salta, llama a goto y lo que hace es empezar de nuevo el ciclo. Y ahora tenemos
que el ciclo total demora 2.4us, 0.1us menos de lo que requerías, pero con este
PIC es imposible crear un retardo de 0.1us, pues la máxima velocidad que soporta
es de 20mghz.
Si hacemos un poco de cuentas, 2.4*40 = 96 us, eso tarda más o menos el tren de
pulsos, digo más o menos porque hay unos retardos del llamado call, de return
que no he tenido en cuenta. Para adaptarse a los 100us que pediste, agregué
esos 24 nop, para crear una demora, deberían ser 20 nop, con esos 20 obtengo
una demora de 4 us, haciendo que el tren dure aproximadamente 100us.
Problemática:
Generar un tren de pulso cuadrático con un circulo útil de 50% y la duración del
pulso es 1ms. Utilice el Timer 0 y el pin 0 del puerto 0 (P0.0) Para que salga la
onda en la simulación que se realizara.
3. Código:
ESCUELA:ITM
;MATERIA: MICROCONTROLADORES
;EQUIPO : EEPROM
;INTEGRANTES:JOEL IVÁN TERAN RAMÍREZ, ANTONIO HIGINIO
ESTRADAVERGARA, MARCO ANTONIO SALAS LÓPEZ,
SANTIAGO PABLO ALBERTO,JESÚS ALEJANDRO CRUZ
CONTRERAS
; PROFESOR: ING. NELSON AMARO ARIAS
---------------------TREN PULSO--------------------------
list p=16f690
#include<P16F690.inc>
__CONFIG (_INTRC_OSC_NOCLKOUT &_WDT_OFF &
_PWRTE_OFF & _MCLRE_OFF& _CP_OFF & _BOR_OFF &
_IESO_OFF & _FCMEN_OFF)
ORG 00H
BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISA
BCF TRISA,0 ;indicador
BSF TRISA,1 ;pulso
BANKSEL PORTA ;ME UBICA EN EL PUERTO A
BCF PORTA,0 ; BORRAR BIT CERO DEL PUERTO
A
HERE BTFSS PORTA,1 ; HAY UN UNO}? EN EL BIT 1 DEL
PUERTO A???
GOTO $-2 ; SI NO REGRESA DOS LINEAS
4. BSF PORTA,0 ; ENCIENDE LED DEL PUERTO RA0
NOP
NOP
NOP
NOP
BCF PORTA,0 ; APAGA LED DEL PUERTO RA0
NOP
NOP
NOP
NOP
GOTO HERE
END
Conclusiones:
Hacer el Tren de Pulso fue muy bueno porque asi pudimos complementar
conocimientos que ya teníamos de otras materias para poder llegar a nuestra
meta deseada como fue el tener la práctica bien y que nos diera la onda querida.