Escolar Documentos
Profissional Documentos
Cultura Documentos
EL MICROCONTROLADOR PIC16F84 Y SU
APLICACION EN LAS COMUNICACIONES
TESIS
PARA OBTENER EL GRADO DE
INGENIERO EN COMUNICACIONES Y ELECTRONICA
P R E S E N T A N
ALVARADO CORONA RAFAEL
BOLAOS RODRGUEZ BEATRIZ ANGELICA
URZUA OSORIO DAGOBERTO
DIRECTOR DE TESIS
DR. PRIMITIVO REYES LOPEZ
Mxico, DF.
INGENIERO EN COMUNICACIONES Y
ELECTRONICA
SEMINARIO DE TITULACIN
C. ALVARADO CORONA RAFAEL
C. BOLAOS RODRGUEZ BEATRIZ
ANGELICA
C. URZUA OSORIO DAGOBERTO
EL MICROCONTROLADOR PIC16F84 Y SU
APLICACION EN LAS COMUNICACIONES
OBJETIVO:
Mostrar el marco terico sobre el amplio campo de aplicacin de este
microcontrolador y destacar sus posibilidades de uso en las Comunicaciones.
INTRODUCCIN
JUSTIFICACIN
CONCEPTOS BASICOS Y FUNDAMENTOS GENERALES
PROGRAMADORES
DESARROLLO DE CIRCUITOS
REFERENCIAS BIBLIOGRAFICAS
INTRODUCCIN AL MICROCONTROLADOR
Qu es un microcontrolador?
Un microcontrolador es un dispositivo electrnico capaz de llevar a cabo procesos
lgicos. Estos procesos o acciones son programados en lenguaje ensamblador
por el usuario, y son introducidos en este a travs de un programador. A lo largo
de esta tesis veremos todos los reglas y trucos de este lenguaje complicado por su
sencillez.
Un poco de historia
Inicialmente cuando no existan los microprocesadores las personas se ingeniaban
en disear sus circuitos electrnicos y los resultados estaban expresados en
diseos
que
implicaban
muchos
componentes
electrnicos
clculos
Objetivo.
El objetivo del presente trabajo es proporcionar un panorama amplio para conocer
estos dispositivos y en particular del PIC16F84 que por sus relevantes
caractersticas, bajo costo y facilidad de programacin nos brinda la oportunidad
de crear un sinfn de aplicaciones cuyo nico lmite es la imaginacin. Adems se
pretende dar un enfoque prctico, mostrando sus aplicaciones en diferentes reas
y particularmente en el rea de Comunicaciones, donde se mostrar el uso del
microcontrolador PIC16F84 para la modulacin por ancho de pulso (PWM).
Cabe hacer la aclaracin que el PIC16F84 requiere de algunos mnimos
componentes externos dependiendo de la aplicacin que se pretenda darle. Como
ejemplo podemos mencionar el uso de un cristal de cuarzo y capacitores o
resistencias dependiendo del tipo de oscilador que se elija para hacerlo operar.
En cuanto a las condiciones actuales se mencionan tambin algunos otros
microcontroladores de otras empresas como los COP de NATIONAL, AVRs de
ATMEL, la serie 8031 de INTEL, etc. Para as comprarlos con el PIC16F84 de
MICROCHIP y darnos cuenta de las superiores cualidades y caractersticas con
respecto a sus competidores mas cercanos. Se cree conveniente que para que se
pueda conocer ms a fondo este dispositivo y trabajar con l primero debemos
definir que es y para que sirve un microcontrolador, sus caractersticas generales,
un amplio panorama de aplicaciones y mencionar el caso particular del PIC16F84
con los bloques que lo integran basndose en la familia 16X84 para as saber que
es la memoria de datos, la memoria de programas, el perro guardin, el registro
STATUS, etc, se aborda tambin el tema del diseo del conjunto de instrucciones
y estos temas son presentados en el capitulo II.
En el capitulo III y habiendo descrito los recursos con que cuenta el PIC16F84 en
el capitulo I, son presentadas las 35 instrucciones del set RISC de esta familia,
dando algunos ejemplo de uso en ciertos casos. Se hablar tambin de cmo
fin
de
aplicaciones,
esto
es
de
vital
importancia
pues
existen
fue
mencionado
anteriormente
existen
otros
modelos
de
** INDICE **
INTRODUCCION
CAPITULO 1.- CONCEPTOS BASICOS Y FUNDAMENTOS GENERALES
1.1.- LA COMPUTADORA
1.2.- EL PROCESADOR
1.3.- LAS INSTRUCCIONES
1.4.- DESARROLLO DE LA COMPUTACION
1.5.- CLASIFICACION DE LAS COMPUTADORAS
01
02
04
07
09
13
15
15
17
18
19
23
35
36
39
40
43
44
57
70
70
77
82
BIBLIOGRAFIA
96
10
Introduccin.
En el campo de la electrnica existen diversos dispositivos programables, tal
es el caso de los microcontroladores que estn ocupando un lugar de privilegio
dentro de la industria electrnica. En particular los microcontroladores de la
empresa Microchip, en los cuales se puede implementar fcilmente una gran
variedad de programas con un set reducido de instrucciones, y estos dispositivos
son conocidos como PIC.
11
computadora y el exterior.
Unidad de
Procesamiento
Central
Entrad
a
Salida
Memori
a
(a)
Princip
al
(b)
Figura 1-1. Componentes principales (a) Cmputo humano (b) Cmputo de una mquina.
1.1
LA COMPUTADORA
Las computadoras actuales an siguen la filosofa y conceptos que
introdujo John von Neumann, tales como el uso de una Memoria, que consiste en
un lugar donde se guardan ordenadamente las instrucciones que sern realizadas
por la mquina, as como los datos y resultados. De esta forma se tena la
posibilidad de alterar el programa de instrucciones, es por esto que se denominan
mquinas de programa almacenado. Von Neumann tambin introdujo el uso del
sistema binario.
La mquina programada de von Neumann se compone de bloques
electrnicos digitales, que reciben, guardan y procesan informacin binaria,
comunicndose entre ellos por lneas digitales, conocidas como buses.
12
13
1.2
EL PROCESADOR
Un procesador de propsito general es un autmata de estados finitos
de la
14
Unidad de control.
Unidades funcionales, las cuales pueden ser ALUs (que ejecutan la suma,
resta y operaciones lgicas), desplazadores (shifters) o multiplicadores.
15
hardware especfica, la cul es la que dicta la duracin del ciclo de reloj, y esta
determinado por los circuitos ms lentos que operan durante un periodo de ciclo
de reloj, por lo que es el procesador quien lo determina. Adems de que ocupa la
mayor parte de los transistores y del rea del procesador.
Unidad de Control
Se encarga de interpretar, coordinar, y realizar la transferencia de datos
entre la unidad aritmtico-lgica, memoria y dispositivos de entrada y salida.
Analiza e interpreta los bits de los campos que componen a una instruccin,
posteriormente genera las seales de control adecuadas para especificar al
Camino de datos la operacin que debe realizar, los operandos de entrada y el
lugar donde debe guardar el resultado. Adems determina la direccin de la
siguiente instruccin a ejecutar.
Existen dos mtodos para el diseo de la unidad de control:
Control
cableado y microprogramado.
Control cableado. Se basa en un circuito lgico secuencial o mquina de
estado finito, que genera secuencias especficas de seales de control en
respuesta a instrucciones externas. Su objetivo es minimizar el nmero de
componentes usados y maximizar la velocidad de operacin. Una vez construida
la unidad de control, la nica manera de implementar cambios es rediseando
totalmente la unidad, es por esta caracterstica que se conoce como Cableado o
Hardwired.
Microprogramacin.
Se
construye
en
torno
una
unidad
de
16
(a)
1.3
(b)
(b) Microprogramado.
LAS INSTRUCCIONES
Dependiendo de la estructura de la computadora, se tiene un tamao de
bits en el que se trabajan las instrucciones. Este tamao se conoce como palabra
y suele ser de 8, 16, 32 64 bits. Las instrucciones como los datos pueden ser de
una o varias palabras.
Una instruccin especifica sus parmetros por medio de campos, los
cuales suelen ser: Cdigo de operacin (codifica el tipo de operacin lgica o
aritmtica que realizar la instruccin), Operando fuente y destino, entre otros.
17
CDIGO
OPERANDO OPERANDO RESULTADO
OP
1
2
Figura 1-5. Campos de una instruccin.
18
1.4
DESARROLLO DE LA COMPUTACIN
El desarrollo de la tecnologa, en especial la relacionada con la
19
20
3 Etapa
El aumento de la densidad de integracin permiti construir memorias ms
rpidas, las cuales se incorporaron en la memoria principal, tratando de equilibrar
su velocidad con la del procesador. En est etapa aparece la memoria cach, la
cul se intercala entre la memoria principal y unidad de control, esta contiene la
informacin ms utilizada por el procesador. La memoria cach alcanza
velocidades de 5 a 10 veces ms que la memoria principal, su capacidad es
pequea pero su efectividad consiste en que contenga las instrucciones ms
solicitadas por el procesador.
21
1.5
23
CARACTERS-
G
Primera
Duracin
Tecnologa
Fabricante
Mquina
Sistema
Operativo
Tipo de
Memora
1950-1960
Vlvulas
electrnicas
IBM-UNIVAC
IBM 701
Tambores y cintas
magnticas
Mquina
Cuarta
Quinta
1960-1970
1970-1980
1980-1990
1990-2000
Transistores
CI SSI-MMI
CI LSI
CI VLSI
DIGITAL
APPLE
DEC-INTEL
BURROUGHS
NCR, CDC
CDC 6600
encadenamiento.
Ncleos de
Ferrita
PDP-8
PDP-11
Estructurados
bajo
multiprogramaci
n y multiproceso
Memorias en CI
Y
Memorias Cach
FORTRAM
Lenguaje
Tercera
Muy primarios
Tubos de William.
Segunda
Monitor de
Muy rudimentario
Fujitsu
M382
Cray X-MP
Alpha21164
P6
SO de
tiempo
Multiprocesamiento
compartido
Memorias
Virtuales
Alto Nivel.
COBOL
BASIC
FORTRAN
Lenguaje natural
ALGOL
PASCAL
extendido
Conexin de los
Procesador.
CI en placas de
Memoria
circuito impreso
Integrada
Gran avance en
Extensin de
los sistemas
lenguajes de
operativos
alto nivel
PL1
Aportacion
es
Hardware
Aportacion
es
Software
Producto
Registros
Indexados
Canales
Mejoras en
ensambladores y
Fuerte impulso de
macro-
FORTAN
ensambladores
Computadora
Computadora
comercial
Mini computadora
Micro
computadora
CI de alta escala de
integracin
Intento de sustituir
por hardware
Multiprocesador
24
fue
mencionado
anteriormente
existen
otros
modelos
de
25
26
AVR
Atmel
Hitachi
68HC12
H8
68HC16
Holtek
32-bit
HT8
683xx
Intel
NEC
8-bit
78K
8XC42
ST
MCS51
ST 62
8xC251
ST 7
16-bit
Texas Instruments
MCS96
TMS370
MXS296
Zilog
National Semiconductor
Z8
COP8
Z86E02
Microchip
Genrico
PIC16F84
Motorola
8-bit
68HC05
68HC08
68HC11
16 Bit
27
28
la
ejecucin
de
instrucciones
del
microcontrolador
de
reloj).
Entre
estas
lneas
se
conecta
el
cristal
29
30
D,
adems
puede
usarse
como
entrada
de
reloj
para
el
temporizador/contador 0.
Pin 9 PD5 (T1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al BIT 5 del
puerto
D,
adems
puede
usarse
como
entrada
de
reloj
para
el
temporizador/contador 1.
Pin 11 PD6 (ICP). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al BIT 6 del
puerto D, adems puede usarse como entrada de captura de cuenta del
temporizador/contador 0.
31
32
los bits 5,6,7 del puerto B, adems pueden usarse como terminales para la
comunicacin serie sncrona para la programacin de la memoria flash interna.
2.5.- Descripcin interna.
En la siguiente figura muestra el diagrama en bloques de la arquitectura interna
del AT90S2313 AVR (RISC)
Una ALU de 8 bits para el clculo aritmtico y lgico con los datos
almacenados en el banco de registros de propsitos generales.
33
mantenerse,
aun
cuando
no
este
con
alimentacin
del
microcontrolador.
Un comparador analgico
15 lneas de entrada/salida
34
35
Todas las instrucciones que operan con los contenidos de los registros tienen
acceso al conjunto del banco, salvo las instrucciones que cargan datos de forma
inmediata como SBCI, SUBI, CPI, ANDI, ORI y LDI que slo acceden a la segunda
mitad de los registros (R16..R31) Como ya se dijo con anterioridad, cada registro
est tambin mapeado en memoria, as el registro r31 ocupa la direccin $1F del
espacio de memoria de datos, etc. Los ltimos 6 registros del banco, r26-r31,
pueden tener funciones alternativas como apoyo a los modos de direccionamiento,
en ese caso, se agrupan por pares para constituir los registros X,Y,Z de 16 bits
cada uno.
36
37
38
Directo
Indirecto
Inmediato
39
40
41
Es igual al modo anterior, con la diferencia que en este caso, el registro X,Y,Z
previamente se decrementa en una unidad.
42
44
45
46
de
salto.
Rompen
la
ejecucin
ordenada
de
las
47
instrucciones.
Tipo y tamao de los operandos. se definen y se especifica el tipo y
tamao de los operandos.
De las caractersticas arriba mencionadas, el almacenamiento interno en
la CPU es lo que hace la diferencia primordial entre los procesadores.
Tipos de ISA con respecto a la forma de almacenamiento de los datos.
Existen tres tipos de ISA que son las ms comunes y son los siguientes:
Acumulador Se utiliza un registro llamado acumulador, ya que todas las
operaciones se acumulan en ste. Por ejemplo.
Instruccin
add A
Operacin
acc - acc + mem[A]
48
Operacin
top - top + next
Operacin
1 add A B
A= A+ B
2 add A B C
A= B + C
49
50
ADD R1, R2
or
R1 <- R1 + R2
ADD R1, A
(R1 <- R1 + A)
Memoria - Memoria
ADD C, A, B
(C <- A + B)
fueron
51
2.
donde uno de los operandos tambin es el destino. Esto significa que el operando
es destruido durante la operacin o se almacena antes en otro lugar.
A principios de los 80s se introdujo la idea del RISC surgiendo del
proyecto SPARC iniciado en Berkeley y el proyecto MIPS en Stanford. RISC
significa Computadora de Conjunto Reducido de
Instrucciones. El ISA es
R3, R1, R2
STORE C, R3
A pesar de que se realizan cuatro instrucciones, podemos reutilizar los
valores contenidos en los registros.
52
53
2.10.-
CONSIDERACIONES
PARA
EL
DISEO
DEL
CONJUNTO
DE
INSTRUCCIONES RISC.
Es necesario tener algunas consideraciones en el diseo del hardware,
que tambin influyen en la arquitectura del conjunto de instrucciones, y son:
1.
2.
Ms pequeo es ms rpido
3.
4.
54
Conjunto de Instrucciones
El conjunto de instrucciones consta de 14 instrucciones, las cuales se
subdividen de la siguiente manera:
Instrucciones de Salto. j
55
Formatos
El tamao de las instrucciones es de 16 bits y se manejan 4 tipos de
formatos a los que obedecen las instrucciones, y estos son los siguientes:
Instrucciones Aritmticas-Lgicas: Este tipo de instrucciones se componen
de cuatro campos, los cuales representan el cdigo de operacin (op), y tres
campos correspondientes a los registros operandos y destino (rf1, rf2 y rd),
respectivamente. Cada operando campo es representado por 4 bits, como se
muestra en el siguiente esquema.
15
12 11
op
87
rf1
43
rf2
rd
12 11
op
87
registro
direccin
bits no
12 11
op
87
xxxx
desplazamiento
12 11
op
direccin
56
Modos de Direccionamiento
Para este procesador se tienen 3 modos de direccionamiento, que son
los siguientes:
1.
12 11
87
op
rf1
43
rf2
rd
Registro
2.
12 11
op
87
registro
direccin
Memoria
11
87
R e g. P a g.
3.
12 11
op
87
xxxx
desplazamiento
Memoria
P C
57
Instrucciones
add
Sintaxis
Sintaxis
Sintaxis
Efecta la operacin lgica AND entre los registros rf1 y rf2, depositando el
resultado en rd.
or
Sintaxis
Sintaxis
Sintaxis
58
ld
Cargar palabra
Sintaxis
ld rd, dir
Almacenar palabra.
Sintaxis
st rd, dir
Sintaxis
bc
desplazamiento
Si la bandera de acarreo es 1, el PC se desplaza en el nmero de
localidades denotado por desplazamiento. Si la bandera de acarreo es 0 entonces
continua con la siguiente instruccin.
bz
Sintaxis
bz
desplazamiento
Si la bandera de cero es 1, el PC se desplaza en el nmero de localidades
denotado por desplazamiento. Si la bandera de acarreo es 0 entonces continua
con la siguiente instruccin.
j
Salto incondicional
Sintaxis
j dir
59
clr_c
Sintaxis
clr_c
Sintaxis
set_c
Cargar pgina
Sintaxis
load_p pagina
60
Bsqueda de instrucciones
El primer elemento necesario es un elemento o dispositivo que almacene las
instrucciones de un programa, para lo cual se hace uso de una unidad de
memoria que almacene y proporcione las instrucciones en base a una direccin
dada. Tambin
Incremento
Add
P
C
Memroira
de
Instrucciones
Instruccin
PC_E
Direccion
P
C
Direccion_PC
clk_PC
reset
endmodule
61
pc
Memoria
De
Instrucciones
Instruccion
rst
62
INC
parameter INC=1'b1;
Sumador PC
dir_PC
PC
incrementado
Instrucciones Aritmtico-Lgicas
Las instrucciones que se encuentran dentro de esta agrupacin son: la suma
(add), resta (sub), la operacin and (and), or (or), corrimiento a la derecha (srl), y
corrimiento a la izquierda (sll).
Para ejecutar las instrucciones se necesita primeramente obtener los datos a
procesar del banco de registros e introducirlos a una unidad lgica aritmtica,
para que realice la operacin. El datapath correspondiente se representa de la
siguiente manera.
escribir
Reg1
Reg2
EscReg
EscDato
Banco de
Registros
operacion
ALU
Resultado
Banco de registros
El ISA propuesto realiza las operaciones a travs del uso de registros, por lo
que es necesario contar con un banco de registros. El banco de registros,
permite leer o escribir un dato especificando el nmero de registro.
63
module Registros (clk, rst, we, wr, r1, r2, wd, d1, d2);
input
clk, rst;
...
output [15:0] d1;
...
reg [15:0] ram [15:0];
always @(posedge clk or posedge rst)
begin
if (rst) begin
ram[0] <= 5;
ram[1] <= 1;
.......
ram[14] <= 14; ram[15] <= 15; end
end
assign d1 = ram[r1];
assign d2 = ram[r2];
endmodule
we
r1
r2
wr
Banco de
d1
Registros
wd
d2
64
ctrl_ALU
c_en
ALU
c_sal
c_en
R
65
escribir
Reg1
Reg2
EscReg
EscDato
Banco de
Registros
Memoria
de datos
Dato
Pgina
Direccion
esc_memo
dato_e
dir
clk
Memoria
de
Datos
dato_s
rst_memo
66
pag_E
Pagina
s_Pag
Instrucciones de Control
Las instrucciones de limpiar seal de acarreo (clr_c), establecer bandera de
acarreo (set_c), cargar pgina (load_p), no necesitan un hardware especial, ya
que stas pueden ser ejecutadas por lneas de control.
Una vez que ya conocemos los caminos de datos o datapath necesarios
para realizar las instrucciones, podemos combinarlos en un slo datapath y
realizar el control necesario para que las instrucciones se lleven a cabo. Para
realizar el datapath del conjunto de instrucciones, es necesario determinar el tipo
de datapath mas adecuado para la implementacin. Esto lo veremos en el captulo
cuatro.
67
68
69
El circuito.
Este programador, basado en el Ludipipo, est adaptado a la programacin
de PICs, es simple y barato (2 euros), pero permite programar a travs del puerto
serie de cualquier PC de sobremesa (en los porttiles da problemas) una cantidad
nada despreciable de PICs distintos, y todo ello utilizando software de
programacin estndar, como ICPROG 1.4.
70
71
Figura 3.1
Realizacin prctica.
El diseo final aparece en la figura 3.2. El trazado se ha hecho sobre
un grid de una dcima de pulgada para que se pueda construir sobre una placa
board. La construccin de este circuito es bastante simple, as que slo queda
aclarar que el conector CON1 es de los que se utilizan para fabricar cables serie, y
se debe montar de forma que la placa encaje entre sus dos filas de patitas,
quedando cinco patitas en la cara de cobre y 4 en la cara de componentes (ver
figuras 3 y 4).
72
Figura 3.2
Figura 3.3
73
Figura 3.4
Para conectar el programador al PC har falta tambin un cable serie
transparente (cableado pin a pin) que tenga cableados al menos los pines que se
indican en la figura 3.5. Este cable se puede fabricar o comprarlo ya hecho (es el
tipo de cable que se utiliza para conectar un modem al PC).
Figura 3.5
Utilizacin.
Lo primero que hay que tener claro a la hora de utilizar este
programador es el orden en que se deben hacer las cosas para no estropear ni el
programador, ni el PIC, ni el puerto serie del PC. Siempre que queramos insertar o
74
extraer un PIC del zcalo hay que desconectar el programador del puerto serie,
ya que, al extraer la alimentacin del puerto serie, mientras est conectado estar
alimentado. Por tanto, el proceso a seguir consta de los siguientes pasos:
1.-Con el programador desconectado insertar el PIC en el zcalo en la
posicin correcta (figura 6).
2.- Conectar el programador al cable que viene del puerto serie del PC.
3.- Llevar a cabo las operaciones de grabacin o lectura necesarias.
4.- Desconectar el programador del cable que viene del puerto serie del PC.
5.-Extraer el PIC del zcalo.
Figura 3.6
Como software de grabacin recomiendo ICPROG 1.05A, que ha sido
probado y funciona perfectamente con este programador. Se puede bajar de su
website. Una vez instalado, en el men SETTINGS OPTIONS, en la seccin
LANGUAGE elegimos ESPAOL. A continuacin, en el men AJUSTES
escogemos TIPO HARDWARE (se puede hacer directamente pulsando F3) y
aparece la ventana de la figura 3.7. Todas las opciones deben quedar como en la
figura 3.7, salvo el puerto, en el que habr que marcar el que hayamos utilizado,
pulsando OK para finalizar.
75
Figura 3.7
Existe una prestacin en este software que permite ver la posicin en la
que habra que insertar el PIC en el zcalo, pero slo es vlida para el JDM
original, as que no hagis caso de ella. Slo queda seleccionar el modelo de PIC
que vamos a grabar o leer, y llevar a cabo las acciones deseadas. El programa
trabaja igual con ficheros .BIN .HEX. Para grabar un PIC, abrimos el fichero
mediante el men ARCHIVO y seleccionamos PROGRAMAR TODO en el men
COMANDO (o pulsamos F5). Para leer un PIC, seleccionamos LEER TODO en el
men COMANDO (o pulsamos F8) y luego podemos salvarlo a un fichero
mediante el men ARCHIVO. En la pgina de ICPROG hay instrucciones sobre el
programa.
77
78
79
80
Zener de 5.1/0.5W
Zener de 8.2/0.5W
El circuito impreso presenta este aspecto y asi como indica el grafico debe
cablearse en el protoboard, te sirve para muchos pics tipo flash o inclusive los que
no lo son, si se cablean los cinco pines; RB7,RB6,Vcc,Gnd,Vpp.
Las uniones de superficie conectan pistas por el lado de las soldaduras, las
puedes obtener de unidades de diskette malas. o circuitos de desecho que tengan
componentes de montaje superficial.
81
CAUSAS:
ASDs, PWMs, convertidores y conmutadores de seal .
Otros.
EFECTOS:
Errores de comunicacin y control.
Problemas con equipos sensibles:
82
OBJETIVO:
Disear y construir un detector de ruido de alta frecuencia que permita:
Medir y detectar una presencia de ruido de al menos el 40% de la seal
fundamental.
DECISIONES:
Seleccin de las bandas de estudio:
Filtro de capacidades conmutadas.
Seleccin del umbral de deteccin:
Tensin de referencia ajustable.
Presentacin de medida y modo de trabajo:
Pantalla de cristal lquido.
83
84
CIRCUITO DE FRECUENCIA.-
2MHz
1
VCC
820pF
GND
820pF
13
12
14
15
9
7
6
5
3
2
4
15
14
13
12
11
10
4
3
2
1
9
7
74'151
I0
I1
I2
I3
I4
I5
I6
I7
S0
S1
S2
E
FREC
FRECUENCIA AL FILTRO
VCC+
RB2
RB7
I17005
VCC+
RB6
/Z
16
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Q12
CLR
1
1
22K
4K7
74'4040
CLK
VCC
11
GND
10
16
1
2
3
4
5
6
7
I1
O1
I2
O2
I3
O3
GND
VCC
I6
O6
74'04
I5
O5
I4
O4
14
13
12
11
10
9
8
VCC+
1
2
3
4
5
6
7
E1
D1
O1 74'126
E2
D2
O2
GND
VCC
E4
D4
O4
E3
D3
O3
14
13
12
11
10
VCC+
RB5
9
8
12K
1
VCC+
12K
1
12K
1
2
3
4
S2
8
7
6
5
SWDIP -4
FILTRADO.-
Mximo orden (4) mediante dos etapas en cascada, para mayor pendiente
de cada.
85
UMBRAL.
86
SOFTWARE.EL PROGRAMA:
Limitado a 1k de memoria.
Tareas:
87
Mejorar prestaciones:
88
89
90
Sin embargo, hay importantes diferencias entre seales PTM y seales PAM.
La informacin en las seales PTM es llevada en el sincronismo de los pulsos (en
las posiciones de los flancos de los pulsos), en lugar de las amplitudes como en
PAM. Cuando el ancho de banda de canal es grande, los flancos de los pulsos son
casi verticales. Como resultado de esto, las seales PTM son menos sensitivas al
ruido que las seales PAM. Reduciendo el ancho de banda del canal se
incrementa el tiempo de subida (Tr) de los pulsos y el ruido tiene efecto en la
precisin del sincronismo de los pulsos.
PWM se utiliza a menudo donde se requiere un control remoto proporcional a
una posicin. El valor promedio de seales PWM varia directamente con la seal
mensaje y puede, por ejemplo, ser usado para controlar la velocidad de un motor.
Debido a que los pulsos en seales PPM pueden ser muy estrechos, y por lo
tanto se requiere muy baja potencia para transmitirlos, la transmisin PPM puede
ser muy eficiente. PPM es frecuentemente utilizada en sistemas pticos de
comunicacin.
La Figura 2 muestra la forma de generar seales PWM y PPT. La Figura 2 (b)
muestra las formas de onda en el generador PWM/PPM.
La seal mensaje es comparada con una seal rampa (seal de muestreo)
para producir la salida PWM. Si el nivel de voltaje de la seal mensaje es mayor
que el de la seal rampa, la salida del comparador es alta (TTL, 5V). Si la seal
mensaje es menor que la seal rampa, la salida del comparador es baja (TTL, 0V).
La salida del comparador es por tanto una seal PWM, puesto que el ancho de los
pulsos depende del nivel de la seal mensaje.
La seal PWM es aplicada a un circuito generador de pulsos, el cual general
un pulso de ancho y amplitud fijos con cada flanco de cada de los pulsos de la
seal PWM. La salida del generador de pulsos es por tanto la seal PPM, puesto
91
que la posicin de los pulsos con respecto a una seal de reloj (una seal
cuadrada de igual frecuencia que la seal rampa) depende del nivel de la seal
mensaje.
92
Las seales PPM demoduladas slo por filtrado pasabajo, pueden producir
una seal reconstruida de muy baja amplitud, si los pulsos son muy estrechos.
Por tanto, se suele recuperar el sincronismo antes del filtrado, como se ve en
la Figura 3(c). El biestable (FLIP-FLOP) entrega una seal PWM la cual es
demodulada segn se dijo anteriormente.
93
94
95
mucho con el audio del juego. Actualmente l est pensando hacer el juego
"Boulder Dash" con la misma electrnica del tetris y el pong. La msica es una
vieja meloda Rusa llamada "Karaboschka", que es una de las que sonaban en el
tetris del gameboy.
El puntaje es mostrado en el ngulo inferior derecho de la pantalla, y el
prximo bloque que vendr se ve en el ngulo superior izquierdo. Slo es posible
obtener 999 puntos, luego de ello el juego termina. Es posible que hayan algunos
"bugs" en el sistema, pero los iremos corrigiendo al tiempo.
list p=16F84,r=hex
w
equ
equ
pcl
equ
0x02
status
equ
0x03
porta
equ
0x05
portb
equ
0x06
indf
equ
0x00
fsr
equ
0x04
eedata
equ
0x08
eeadr
equ
0x09
eecon1
equ
0x08
rd
equ
rp0
equ
startspeed equ
0x18
movespeed equ
0x06
96
up1b
equ
down1b
equ
left1b
equ
right1b
equ
fire1b
equ
up2b
equ
down2b
equ
left2b
equ
right2b
equ
fire2b
equ
up1p
equ
portb
down1p
equ
portb
left1p
equ
portb
right1p
equ
portb
fire1p
equ
portb
up2p
equ
portb
down2p
equ
portb
left2p
equ
porta
right2p
equ
porta
fire2p
equ
porta
counter0
equ
0x0C
counter1
equ
0x0D
counter2
equ
0x0E
counter3
equ
0x0F
nextblocktyp
equ
0x10
blockx
equ
0x11
blocky
equ
0x12
blocktyp
equ
line
x
0x13
equ
equ
0x14
0x15
97
equ
0x16
delaycnt
equ
0x17
angle
blockstuff
equ
equ
0x18
0x19
fallcnt
equ
0x1A
points
equ
0x1B
random
equ
0x1E
stuff
equ
0x1F
m_freq
equ
0x20
m_cnt
equ
0x21
m_songcnt equ
0x22
buffer
equ
0x24
currbl
equ
0x44
x0
equ
0x4C
y0
equ
0x4D
movecnt
equ
0x4E
remline
equ
0x4F
hsfall
equ
rotate
equ
goleft
equ
goright
equ
drop
equ
rotat
equ
gameover equ
delay
MACRO
LOCAL label
movwf delaycnt
label
decfsz delaycnt
goto label
98
ENDM
dnop
MACRO
LOCAL label
label
goto
label+1
ENDM
org 0x000
goto inittetris
;------------ This table contains the 3 note lengthes for the 5 speeds -------getlength
addwf
pcl
retlw
0x0B
retlw
0x16
retlw
0x1D
retlw
0x09
retlw
0x12
retlw
0x19
retlw
0x07
retlw
0x0D
retlw
0x11
retlw
0x04
retlw
0x08
retlw
0x0C
retlw
0x02
retlw
0x04
retlw
0x06
99
setbit
call
getbit
iorwf
indf
return
;----------------------- clear bit in the gamefield --------------------------clrbit
call
getbit
xorlw
0xff
;invert bitmask
andwf
indf
;clear bit
return
;-------------------- point at byte, and return bitmask ----------------------getbit
movlw buffer
btfsc
;15 cycles
x,3
movlw buffer+1
clrc
rlf
addwf
y,w
movwffsr
100
101
Generar el dgito 1
2.
3.
Generar el dgito 2
4.
5.
Generar el dgito 3
6.
7.
Generar el dgito 4
8.
9.
102
equ
00h
;registro de indireccion
pc
equ
02h
;contador de programa
status equ
fsr
equ
03h
04h
;registro de estado
;registro de seleccion
ptoa
equ
05h
;puerto a
ptob
equ
06h
;puerto b
rota
equ
0fh
trisa equ
85h
;configuracion puerto a
trisb equ
86h
;configuracion puerto b
dig1
equ
10h
;acumulador miles
dig2
equ
11h
;acumulador centenas
dig3
equ
12h
;acumulador decenas
dig4
equ
13h
;acumulador unidades
loops equ
1dh
loops2 equ
1eh
z
ram
equ
equ
02h
05h
;flag de cero
;bit de seleccion de pagina de memoria
equ
00h
;flag de acarreo
equ
00h
103
reset org
00
goto
inicio
org
05h
retardo
;subrutina de retardo
movwf loops
top2
movlw d'110'
movwf loops2
top
nop
nop
nop
nop
nop
nop
decfsz loops2
goto
top
decfsz loops
goto
top2
retlw 0
s1000
clrf
dig2
incf
dig1
movf
dig1, w
xorlw 0ah
btfsc status, z
clrf
dig1
return
s100
dig3
104
incf
dig2
movf
dig2, w
xorlw 0ah
btfsc status, z
call
s1000
return
s10
;rutina de incremento x 10
clrf
dig4
incf
dig3
movf
dig3, w
xorlw 0ah
btfsc status, z
call
s100
return
subir
;rutina de incremento
incf
movf
dig4
dig4, w
xorlw 0ah
btfsc status, z
call
s10
movlw d'250'
;retardo de 100ms
call
retardo
return
tabla
retlw b'00111111'
;genera el 0
retlw b'00011000'
;genera el 1
retlw b'01110110'
;genera el 2
105
retlw b'01111100'
;genera el 3
retlw b'01011001'
;genera el 4
retlw b'01101101'
;genera el 5
retlw b'01101111'
;genera el 6
retlw b'00111000'
;genera el 7
retlw b'01111111'
;genera el 8
retlw b'01111101'
;genera el 9
inicio
;programa principal
bsf
status, ram
movlw b'00010000'
;configura el puerto a
movwf trisa
movlw 00h
;configura el puerto b
movwf trisb
;como salidas
bcf
status, ram
clrf
dig1
clrf
dig2
clrf
dig3
clrf
dig4
movlw 00
movwf ptoa
empe
btfss ptoa, 4
call
subir
movlw 08h
;inicializa acumuladores
movwf rota
movlw dig1
movwf fsr
disp
movlw 00h
movwf ptob
;para apagarlos
movf
rota, w
106
movwf ptoa
movf
call
indo, w
tabla
movwf ptob
movlw 03h
call
retardo
btfsc rota, 0
goto
bcf
rrf
incf
goto
empe
status, c
rota
fsr
disp
end
107