Sei sulla pagina 1di 22

La creacin de una seal PWM Usando un

PIC 16F84
Hay muchos pequeos mecanismos, en particular los servomotores, que utilizan
codificacin PWM como un medio de entrada. seales PWM tambin se pueden utilizar
para variar el voltaje aplicado a un dispositivo mediante la consecucin de una tensin
media efectiva. Con tantas aplicaciones, por lo tanto, es necesario contar con un medio
confiable para generar una seal PWM.

MOTIVACIN Y PBLICO
El objetivo de este tutorial es demostrar un mtodo para generar una seal PWM utilizando
un PIC 16F84. Este tutorial le ensear:

Qu es una seal PWM.


Cmo escribir cdigo para generar una seal PWM utilizando un PIC 16F84.
Para ello, se supone que ya:

Han completado "una va rpida a la programacin del PIC" .


El resto del tutorial se presenta de la siguiente manera:

Lista de piezas y fuentes


Fondo
Programacin
aplicaciones
Ultimas palabras
LISTA DE PIEZAS Y FUENTES
Con el fin de completar este tutorial debe tener el circuito desde el tutorial "una va
rpida a la programacin del PIC" (menos los interruptores DIP y los circuitos

de resistencia LED). Este circuito ser la nica parte requerida para este tutorial. Tambin
necesitar un adaptador de corriente y el acceso a un osciloscopio para observar la seal.

FONDO

Figura 1
Una seal PWM es simplemente un impulso de longitud variable, en efecto, una onda
rectangular. Esto se ilustra en la Figura 1, que tambin muestra cmo un servo puede
reaccionar a diferentes entradas PWM. Para nuestro circuito, la tensin mxima ser
emitida +5 V CC, y la mnima ser 0 V CC. La longitud del impulso generado es algunas
veces charcterized por un ciclo de trabajo. El ciclo de trabajo es el porcentaje de la seal
que la salida permanece alta. Por ejemplo, una constante de + 5V sera equivalente a un
ciclo de trabajo del 100%. Una salida de onda cuadrada tpica de un generador de funciones
tiene un ciclo de trabajo del 50%. 0 V correspondera a un ciclo de trabajo 0%.

PROGRAMACIN
PWM.asm
;
;
;
;
;

ARCHIVO: PWM.asm
AUTH: Keith Sevcik
FECHA: 5/21/03
DESC: Este programa genera una forma de onda PWM.
NOTA: Probado en PIC16F84-04 / P

; --------------------------------------------------------------------; equipara la CPU (mapa de memoria)


Lista P = 16F84
hexagonal radix
; ---------------------------------------------------------------------

PORTB equ 0x06; b equivale puerto


0x0c equ deber; longitud del ciclo de trabajo
temp 0x0D equ; longitud del ciclo de trabajo
; -------------------------------------------------------------------c equ 0;

bit de estado para comprobar despus de la sustraccin

; -------------------------------------------------------------------org 0x000
movlw 0x00; carga W con 0x00 hacer salida del puerto B
PORTB tris; copiar de triple W a las salidas del puerto B
movlw 0x00; w llenar con ceros
PORTB movwf; Configure el puerto b salidas a la baja
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 '; Deber duracin del ciclo
deber movwf
b0loop deber MOVF, w
temp movwf
PORTB BSF, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
Goto PWMA
movlw d'255 '
temp movwf
deber MOVF, w
temp SUBWF, f
PORTB millones de pies cbicos, 0
nop pwmb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop

temp DECFSZ
pwmb Goto
Goto Rstrt
; --------------------------------------------------------------------fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On

Encabezado y equivale
La primera parte del cdigo es el encabezado y el registro equivale. Para obtener ms
informacin sobre el significado de la cabecera ver el tutorial anterior.
Lista P = 16F84
hexagonal radix
; --------------------------------------------------------------------PORTB equ 0x06; b equivale puerto
0x0c equ deber; longitud del ciclo de trabajo
temp 0x0D equ; longitud del ciclo de trabajo
; -------------------------------------------------------------------c equ 0;

bit de estado para comprobar despus de la sustraccin

; -------------------------------------------------------------------org 0x000

La nica equate de signifficance aqu es PWM. Este registro se utiliza para almacenar la
longitud de la seal PWM se genere.
INSTRUCCIONES
La siguiente porcin de cdigo contiene las instrucciones reales que cuentan la PIC qu
hacer.

iniciar movlw
PORTB
movlw
PORTB

0x00; carga W con 0x00 hacer salida del puerto B


tris; copiar de triple W a las salidas del puerto B
0x00; w llenar con ceros
movwf; Configure el puerto b salidas a la baja

Estas lneas configurar el puerto B como salidas. Todas las salidas se establecen a
continuacin, a la baja.
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 ';
deber movwf

Deber duracin del ciclo

Despus de configurar los puertos, se inicia el bucle principal. Al comienzo del bucle
principal, todos los pines del puerto B se ajustan a la baja slo en caso de que son altos
cuando no deberan ser. El ciclo de trabajo se ajusta entonces a 157 (un ciclo de trabajo del
50%. 255 corresponde a 100% y el 0 corresponde a 0%).
b0loop deber MOVF, w
temp movwf
PORTB BSF, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
Goto PWMA

El siguiente fragmento de cdigo es el bucle para la seal PWM generada con B0


pasador. El bucle pwm1a genera la parte alta de la seal PWM. El ciclo de trabajo se
almacena en la temperatura y luego el pasador est en lo alto. despus de una pausa, la
temperatura se reduce y en tanto que es imposible llegar a cero la pausa se repite y la
temperatura se reduce de nuevo. Despus de temp llega a cero, el cdigo contina.
movlw d'255 '
temp movwf
deber MOVF, w

temp SUBWF, f
PORTB millones de pies cbicos, 0
nop pwmb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
pwmb Goto
Goto Rstrt

La siguiente parte del cdigo genera la parte baja de la seal PWM. El valor 255 se
almacena en temp, y el ciclo de trabajo se resta de este. Esto le da a la longitud restante de
la seal que se genera.Temperatura se decrementa entonces de la misma manera que antes,
esta vez con el conjunto de B0 a bajo. Una vez que se ha generado toda la seal PWM, el
cdigo se repite.
Este cdigo hace que una seal de PWM para ser generado con un ciclo de trabajo
proporcional a el conjunto de valores. La frecuencia de la seal tambin se puede ajustar
mediante la variacin del retardo (el nmero de nop de utilizado).

APLICACIONES
Una aplicacin comn de las seales de PWM es control del motor. Al variar el ciclo de
trabajo de una seal PWM enviado a un motor, se puede variar la potencia efectiva de la
seal y por lo tanto reducir la velocidad del motor o acelerar el motor hasta dependiendo de
la duracin de un pulso se enva al motor. La seal generada por el PIC no se puede
conectar directamente al motor, sin embargo, debido a que el PIC es incapaz de manejar la
potencia requerida por el motor. Por tanto, es necesario utilizar un transistor para regular el
flujo de corriente al motor. Un transistor es como un interruptor elctrico. Cuando se enva
un estado lgico alto (+ 5V) para el transistor, que permite que la corriente fluya. Cuando
se enva un lgico bajo (0 V), que restringe el flujo de corriente. Para las seales digitales,
esto significa que la seal puede ser reproducido con exactitud, excepto la nueva seal se
escala hasta una corriente mucho ms grande. La figura 2 muestra un esquema de control
de un motor utilizando un transistor NPN TIP31.

Figura 2
Como muestra el esquemticas, la salida de la recogida est conectado a la base. El
terminal negativo del motor se conecta a la base y el colector est conectado a
tierra. Cuando el PWM otuput de la PIC se enva al transistor, se le dar la vuelta al
transistor encendido y apagado y posteriormente generar la misma seal PWM al motor, lo
que permite controlar el motor con una seal PWM.

ULTIMAS PALABRAS
Despus de completar esta gua debe estar familiarizado con las seales PWM y cmo
programar un PIC 16F84 para generarlos.
Si tiene alguna pregunta acerca de este tutorial que me puede enviar por correo electrnico
a Keithicus@drexel.edu .
http://www.pages.drexel.edu/~kws23/tutorials/PWM/PWM.html

Fast Track a la programacin del PIC

Usted puede saber que cuando se trata de mquinas, la programacin se utiliza a menudo
para indicar a la mquina cmo interactuar con su mundo. Pero alguna vez se pregunt
cmo se implementa realmente fsicamente esta programacin? Una forma es utilizar las
fotografas (controladores programables de interrupcin). Estos chips permiten escribir
cdigo que lee las seales de entrada, realiza funciones y enva seales a las salidas
basndose en las condiciones que se definan. Este tutorial se explica el proceso bsico de la
escritura de programas para las fotos y "quema" esos programas en el dispositivo.

MOTIVACIN Y PBLICO
El objetivo de este tutorial es conseguir rpidamente familiarizado con los PIC
para que pueda empezar a utilizarlos en sus aplicaciones. Como tal, este
tutorial te ensear cmo:

Escribir cdigo para definir salidas.


Escribir cdigo para leer las entradas y el uso de dichos insumos
para afectar a las salidas.

Escribir cdigo para reaccionar a un ciclo de reloj.


"Burn" cdigo en el dispositivo.
Para ello, se supone que usted ya sabe cmo:

Leer un esquema elctrico.


Construir y soldar un circuito elctrico sobre una placa de
prototipos.

El resto del tutorial se presenta de la siguiente manera:

Lista de piezas y fuentes


Construccin
Programacin
"Burning" cdigo en un PIC

Ultimas palabras
LISTA DE PIEZAS Y FUENTES

Se requerir la mayora de las piezas para construir un circuito para probar sus programas
en. Las piezas que se indican en la Tabla 1 son los consumibles utilizados en el circuito:
TABLA 1
PARTE DESCRIPCIN

VENDEDO
PARTE PRECIO (2002)
R

PIC16F84-04 / P

Jameco

145.1
5.95
11

40-PIN ZIF

Jameco

10402
10.95
9

Interruptor pulsador

Jameco

71642 1.49

8-POSICION DIP

Jameco

38842 0,79

4 MHz Reloj de cristal OSCILLATOR Jameco

27967 1.89

0,1 UF PAC

Jameco

15111 1.00 PARA


6
BOLSA DE 10

0.1 ENCABEZADOS PULGADAS

Jameco

160.8
0.39
81

SIPP 30-PIN SOCKET WIREWRAP

Jameco

104.0
1.95
53

T1-3 / 4 LED VERDE

Jameco

104.2
0.29
56

CANT

100 ohmios

RESISTENCIA 10 kilos OHM

220 ohmios

RESISTENCIA 3.3 KILO OHM

JUNTA DE 6 PULGADAS
PROTOTIPADO CIRCUITO

RADIO
SHACK

276170

2.99

2-3 / 4 x 3-3 / 4 PROTOTIPADO


CIRCUITOS

RADIO
SHACK

276158

2.39

El PIC vamos a utilizar (PIC16F84) fue elegido porque es un PIC muy comn y porque
puede ser programado y reprogramado sin hardware adicional (muchos PIC debe ser
expuesto a la luz UV para borrar los programas existentes).
Para construir el circuito, tambin necesitar:

un soldador con una punta fina


materiales para soldadura (soldadura, flujo, etc.)
alambre de calibre pequeo
pelacables
multmetro
Fuente de alimentacin DC
Los elementos enumerados por encima de todo se pueden comprar en una tienda de
electrnica como Radio Shack. Algunos dispositivos de hardware tales como Home Depot
llevar herramientas como pelacables y multmetros.
Hay muchas utilidades para escribir, compilar y quemar cdigo PIC. En este tutorial se
utiliza el siguiente software / hardware para programar el PIC:

MPLAB para Windows (Microchip)


Programador de dispositivos PICSTART Plus
El software MPLAB contiene el editor de texto, compilador (MPASM) y el software
programador de dispositivos (PICSTART Plus) en un solo programa, centralizando as
todas sus necesidades de programacin del PIC. El libro Fcil Pic'n por David Benson es

tambin un recurso muy valioso en el aprendizaje de cmo utilizar los PIC. En este tutorial
se refiere al libro para aclarar una parte del cdigo.
CONSTRUCCIN
El circuito utilizado para probar los programas PIC se representa en la figura 1.

Figura 1

Este circuito est configurado para probar y mostrar las funciones bsicas del CFP. En este
tutorial, Puerto B en el PIC (prendedores 6- 13) se utiliza como una salida. Los LED estn
conectados a todos los 8 de las lneas del puerto B, y se iluminarn cuando la lnea se
establece en un nivel lgico alto o "1". Port A (patillas 17, 18, 1, 2 y 3) se utiliza como una
entrada. Sus lneas estn conectadas a los interruptores DIP, que fijar la lnea a un lgico
alto cuando el interruptor est en la posicin "On".
Se recomienda que los circuitos LED y el interruptor dip ser construidos sobre una tabla
separada y conectados al PIC a travs de un cable. Esto le permite construir circuitos ms
complicados en el futuro y cambiar fcilmente entre los circuitos.
Un ZIF (fuerza de insercin cero) toma se utiliza para hacer la instalacin y retirada
repetidas de la PIC fcil, y para ayudar a prevenir las patillas de la PIC se dae.

PROGRAMACIN
Lo que sigue son unos pocos cdigos de ejemplo que ilustran la funcionalidad
del PIC. En cada caso, se le dar el cdigo, seguido de una explicacin de cmo
funciona el cdigo.

Ejemplo 1: Dar salida a los LEDs


En este ejemplo aprender cmo definir pines como salida y cmo configurar los pines a
una lgica alta o baja lgica. El siguiente cdigo establece pasadores correspondientes a
B0, B2, B4, B6 a un lgico bajo y botones correspondientes a B1, B3, B5, B7 a una cadena
lgica.
outLed.asm
;
;
;
;
;
;

ARCHIVO: outLed.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: Hace B0, B2, B4, B6 y B1 baja, B3, B5, B7 hi
NOTA: Probado en PIC16F84-04 / P.
Refs: Fcil Pic'n p. 23 (Predko p. 173 es falsa?)
Lista P = 16F84
hexagonal radix

; --------------------------------------------------------------------; equipara la CPU (mapa de memoria)


myPortB equ 0x06; (p. 10 define la direccin del puerto)
; --------------------------------------------------------------------org 0x000
iniciar movlw 0x00; carga W con 0x00 hacer salida del puerto B (p. 45)
tris myPortB; copia de triple W, salidas del puerto B (p. 58)
b'10101010 movlw '; carga W con el patrn de bits (pg. 45)
movwf myPortB; myPortB carga con el contenido de W (p. 45)
Goto crculo crculo;

hecho

fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On

Al evaluar el cdigo de seguridad, en primer lugar, es importante darse cuenta de que todo
lo que despus de un punto y coma es un comentario y es ignorado por el compilador. El
cdigo real utilizado por el compilador para programar el PIC se muestra a continuacin:
Lista P = 16F84
hexagonal radix
myPortB equ 0x06
org 0x000
iniciar movlw 0x00
tris myPortB
b'10101010 movlw '
movwf myPortB
Goto crculo crculo
fin

ENCABEZAMIENTO
La primera parte del cdigo se llama la cabecera. Esta informacin ayuda al compilador
para formatear el cdigo correctamente. En nuestro caso, cada cabecera ser idntico.
La primera lnea
Lista p = 16F84

describe el tipo de dispositivo que el programa se va a grabar a. La lnea


hexagonal radix

le dice al compilador qu nmeros estn en formato menos que se especifique lo


contrario. En este caso, el formato es hexadecimal.
equivale
La siguiente seccin del programa se llama los equipara. Esto es similar a la declaracin de
variables en otros lenguajes de programacin. Las etiquetas se asignan a las
direcciones. Ms tarde, cada vez que la etiqueta se hace referencia en el programa, el
compilador busca su direccin.
La lnea

PORTB equ 0x06

cesionarios 'PORTB' en el registro de archivo que se encuentra en el 0x06. Puerto B se


encuentra siempre en este registro de archivos.
ORG
En la linea
org 0x000

org es sinnimo de origen. La funcin org tiene algunos usos especiales, pero este tutorial
slo se utiliza la sentencia org como se muestra. Cuando se utiliza de esta manera, la
declaracin org define el principio del cdigo.
INSTRUCCIONES
La siguiente porcin de cdigo contiene las instrucciones reales que cuentan la PIC qu
hacer.
iniciar movlw 0x00

Esta lnea est etiquetado como el inicio del cdigo. La funcin 'movlw' mueve un literal
(un nmero) al registro W. archivo No se puede asignar directamente los valores de
presentar registros. Todos los valores deben primero pasar a travs del registro W.
tris myPortB

Este comando es obsoleto, aunque an es compatible con la versin de software en uso. El


comando 'tris' le dice al compilador que el valor W actual mapa de las lneas del puerto
seleccionado como entradas o salidas (un '1' en W significa de entrada, un '0' en W significa
salida).
b'10101010 movlw '

Este comando mueve el nmero binario '10101010' al registro W.


movwf myPortB

El contenido del registro W se asignan ahora al puerto B, el establecimiento de los pines


correspondientes como de alta o baja.

Goto crculo crculo

Este comando etiquetas de la lnea de cdigo como "crculo", y luego se refiere bac a s
mismo, estableciendo as el programa en un bucle continuo.
FIN
Por ltimo, el compilador se le dice que ha llegado al final del cdigo con una declaracin
final.
fin

Todos los programas deben tener una declaracin final.


Ejemplo 2: Introduccin de los interruptores DIP
Ahora que usted tiene los fundamentos abajo, este programa va a ilustrar cmo
Introduciendo se utiliza para controlar las salidas. En este ejemplo, todos los pines en el
puerto A se definen como entradas (y tiene que ser conectado a los interruptores
DIP). Cuando un interruptor DIP est encendido, su valor se pasa a la salida
correspondiente en el puerto B, iluminando de esta manera un LED.
Dip2Led.asm
;
;
;
;
;
;

ARCHIVO: Dip2Led.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: Leer Puerto Un interruptor DIP y la pantalla LED de puerto B
NOTA: Probado en PIC16F84-04 / P.
Refs: Fcil Pic'n p. 60
Lista P = 16F84
hexagonal radix

; --------------------------------------------------------------------; equipara la CPU (mapa de memoria)


myPortA equ 0x05
myPortB equ 0x06; (p. 10 define la direccin del puerto)
; --------------------------------------------------------------------org 0x000
iniciar movlw 0x00; carga W con 0x00 hacer salida del puerto B (p. 45)
tris myPortB; copiar de triple W a las salidas del puerto B (p.
58)

movlw 0xFF; carga W con 0xFF hacer el puerto A de entrada


tris myPortA; copiar de triple W al puerto A
MOVF myPortA, w; leer el puerto A DIP y almacenar en W
movwf myPortB; escribir el valor W de LED del puerto B
crculo Goto empezar;

bucle infinito

fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On

Este cdigo es muy similar al cdigo anterior. Puerto B se declara como salidas de la
misma manera. En este caso, el puerto A se define como entradas por el cdigo
movlw 0xFF
tris myPortA

Esto llena el registro W con 1 de, y utiliza los de 1 a declarar el puerto A como entradas. En
lugar de asignar un literal al puerto B, el puerto A se lee en el registro W.
MOVF myPortA, w

Este comando dice mover el archivo de registro 'myPortA' en el registro W. Y como antes,
el contenido del registro W se asignan a los LED en el puerto B
movwf myPortB

El cdigo a continuacin, se le dice que volver al inicio y ejecutar de nuevo.


Ejemplo 3: En respuesta a un ciclo de reloj
Hay otra funcionalidad importante para el PIC que puede ser extremadamente til. El PIC
ha incorporado un contador cuya frecuencia depende del oscilador externo en el circuito y
en ciertas opciones que haya configurado. Estas opciones, junto con los clculos para
determinar la frecuencia se explican a continuacin.
Clock.asm

;
;
;
;
;
;
;
;
;
modo
;
;

ARCHIVO: Clock.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: 1.0 - Temporizador interno, comenzar a parpadear cada 32,8 ms
NOTA: Probado en PIC16F84-04 / P.
4 rendimientos de cristal MHz 1 MHz de frecuencia de reloj interno.
"opcin" est configurado para dividir el reloj interno por 256.
Esto da lugar a 1 MHz / 256 = 3906,25 Hz o 256 us.
TMR0 bits de 0 a 7 se comprueba (255 decimal), produciendo de este
Bucle de retardo 255 * 256 us = 65,28 ms
Refs: Fcil Pic'n p. 113
Lista P = 16F84
hexagonal radix

; --------------------------------------------------------------------; equipara la CPU (mapa de memoria)


PORTB equ 0x06; (p. 10 define la direccin del puerto)
Timer0 equ 0x01
; --------------------------------------------------------------------org 0x000
iniciar CLRWDT; temporizador de vigilancia clara
b'11010111 movlw '; asignar pre-escalador, el reloj interno
; y dividir por 256 vase p. 106
opcin
movlw 0x00; set w = 0
tris PORTB; el puerto B se emite
clrf PORTB; el puerto B todos bajos
ir BSF PORTB, 0; RB0 = 1, el LED de este modo en la p. 28
retardo de llamada
retardo de llamada
BCF PORTB, 0; RB0 = 0, por lo tanto LED apagado
retardo de llamada
retardo de llamada
ir a ir ; repetir para siempre
retrasar Timer0 clrf; clara Timer0, se inicia el recuento
nuevo BTFSS Timer0, 0; si el bit 0 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 1; si el bit 1 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 2; si el bit 2 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 3; si el bit 3 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 4; si el bit 4 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 5; si el bit 5 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 6; si el bit 6 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo
BTFSS Timer0, 7; si el bit 7 = 1
Ir de nuevo; no, entonces puedes volver a intentarlo

regreso ;

tiempo de salida dems

fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On

Lo primero que destaca de este cdigo es un nuevo equate


Timer0 equ 0x01

Esta es una de 8 bits, contador de lectura / escritura se almacena a este registro de archivo
en particular. En nuestro caso, la frecuencia de reloj interna es 1 MHz (frecuencia externa
se divide por 4). Esta frecuencia se puede dividir an ms mediante el establecimiento de
un valor pre-escalador (el valor de la frecuencia interna ser dividido por). Sobre la base de
la configuracin de 3 bits de opcin, el valor pre-escalador se puede variar entre 8 valores
que van de 1 a 256. En nuestro caso, se establecen los 3 bits de opciones, que divide la
frecuencia del reloj interno por 256. Esto da la frecuencia del contador a ser de 1 MHz /
256 = 3906,25 Hz. El siguiente comando
iniciar CLRWDT

Despeja el temporizador de vigilancia y el valor pre-escalador. Los siguientes comandos


b'11010111 movlw '
opcin

establecer los bits de opciones. El significado de los bits de opciones son las siguientes:
Propsito bits
0 Valor de divisor
1 Valor de divisor
2 Valor de divisor
3 de divisor Asignacin (0 = Timer0, 1 = temporizador de vigilancia)
4 Timer0 reloj borde externo seleccionar (0 = ascendente, 1 = cayendo)
5 Timer0 fuente de reloj (0 = ciclo de instruccin interna, 1 = externo)
borde 6 de interrupcin de seleccin (0 = cada, 1 = aumento)
7 Puerto B Pullup Enable (0 = habilitado, 1 = deshabilitado)

Como se puede ver, en este cdigo, los bits de divisor se establecen en 111 (dividir por
256), pre-escalador se enva al Timer0, incrementos TMR0 en el flanco de subida, la fuente
Timer0 es el reloj de ciclo de instruccin interna, las interrupciones se producen en los
flancos ascendentes y Puerto B pull-ups estn desactivados.

Procediendo a travs del cdigo, la siguiente parte define el puerto B como salidas, como se
ha visto en los ejemplos anteriores. El cdigo siguiente que es la carne de este programa.
ir BSF PORTB, 0
retardo de
retardo de
bcf PORTB,
retardo de
retardo de
ir a ir

llamada
llamada
0
llamada
llamada

Este bucle se convierte en un LED de vez en cuando en repetidas ocasiones. En primer


lugar, el bit 0 en el puerto B est establecido (hecha a hi lgico). Una subrutina de retardo
se denomina a continuacin (explicado ms adelante) para hacer una pausa en el programa
durante un rato. se borra entonces el bit 0 (hecho a menor lgico). El programa se retrasa
una vez ms, y luego el proceso se repite. El nuevo concepto que se presenta es la de una
subrutina
retardo clrf TMR0
nuevo BTFSS Timer0, 0
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
BTFSS Timer0,
Goto nuevo
regreso

1
2
3
4
5
6
7

Cuando se llama retardo, el programa salta a esta parte del cdigo. TMR0 (el contador) se
borra primero (y luego empieza a contar). El cdigo restante pone a prueba cada bit en
Timer0 para ver si se ajusta a hi. Si no es as, vuelve al 'nuevo'. Si se establece a alta, se
salta la siguiente lnea de cdigo ( "Ir de nuevo") y los testculos el siguiente bit. Este bucle
contina hasta que se alcanza la instruccin de retorno, en cuyo caso la subrutina se sale y
el cdigo de producto de que cualquier demora se llam originalmente. Como puede verse,
la subrutina de retardo continuar hasta que todos los bits iguales TMR0 '1', o hasta que los
recuentos de TMR0 a 255.

CDIGO "quemar" en un PIC

Ahora que ya sabe cmo escribir cdigo, lo que necesita saber cmo obtener el cdigo en el
PIC. El proceso de programacin de un PIC se refiere a menudo como "quemado". Para
grabar el cdigo en el PIC, vamos a utilizar la versin para Windows de MPLAB.
En el programa MPLAB, toda la informacin acerca de su programa se almacena en unos
archivos de proyecto. Los archivos de proyecto contienen informacin sobre el programa,
el dispositivo que est utilizando, uno o ms cdigos de lenguaje ensamblador y los
archivos compilados hexagonales. El proceso de grabacin de un PIC contiene tres pasos
principales. La primera es que escribir el cdigo en lenguaje ensamblador. Una vez que el
cdigo est escrito, debe ser compilado en un archivo hexadecimal para la programacin en
el dispositivo. Despus de compilar el cdigo correctamente, el ltimo paso es programar el
dispositivo.
Comience por abrir el programa MPLAB.
Crear un nuevo proyecto por ir a Project> Nuevo proyecto. En el nuevo cuadro de dilogo
proyecto seleccionar un directorio para colocar el proyecto y dar al nuevo proyecto un
nombre. Cuando haya terminado, haga clic en "Aceptar".
Ahora ver el cuadro de dilogo Editar Proyecto. Seleccione el dispositivo apropiado, y
establecer el modo de desarrollo de MPLAB-SIM Simulador. En la ventana de archivos de
proyecto haga clic en el archivo que tiene el nombre de su archivo con la extensin
.hex. Haga clic en el botn Propiedades de nodos y en la ventana que aparece, haga clic en
"Aceptar". Esto establece las propiedades del nodo por defecto y le permite aadir nodos
ms tarde.
Salir del cuadro Editar propiedades haciendo clic en "Aceptar".
Ahora usted puede crear cdigo ensamblador. Conseguido a Archivo> Nuevo. Un editor de
cuadros de texto en blanco debera aparecer. Introduce el cdigo de ensamblado en esta
ventana. Cuando haya terminado, guarde el cdigo (Archivo> Guardar, dar el cdigo de un
nombre y haga clic en "Aceptar").
Ahora debe asignar el cdigo fuente que acaba de hacer con el proyecto. Ir al proyecto>
Editar Proyecto. En el cuadro de dilogo Editar proyecto, haga clic en el botn Aadir
nodo. Busque el cdigo de montaje que acaba de encontrar. Seleccionarlo y hacer clic en
"Aceptar". El nombre de archivo del cdigo ensamblador debe aparecer ahora en la
ventana. Haga clic en "Aceptar" para cerrar el cuadro de edicin del proyecto.

Ahora que el cdigo fuente est asociada con el proyecto, es hora de compilar el cdigo. Ir
a Proyecto> Proyecto. Si la compilacin tiene xito, ver la ventana de generacin
resultados aparecen con el mensaje "Construccin completada con xito". Si hubo errores
que se muestran en la ventana. Despus de compilar con xito, guardar el proyecto
(Proyecto> Guardar proyecto).
El paso final es para programar el dispositivo. Seleccionar PICSTART Plus> Activar
programador. El cuadro de dilogo Programador de estado debera aparecer. En este punto,
usted debe tener el programador de dispositivos PICSTART Plus enchufado y TH cable
serie conectado al puerto serie del ordenador. Coloque el PIC en el zcalo ZIF con la pata 1
en la esquina superior izquierda, y bloquearlo en su sitio.
La parte ms importante de este paso es asegurar la configuracin de bits se establecen de
manera apropiada. Si se han fijado, al final de cada cdigo de ejemplo fue una nota que
indica cmo se deben establecer los bits de configuracin
;
;
;
;
;

en el tiempo de combustin, seleccione:


memoria uprotected
temporizador de vigilancia desactivado
cristal estndar (4 MHz)
power-up Timer On

temporizador de vigilancia se debe establecer en "off", el oscilador debe estar ajustado a


"XT" (este es el escenario de cristal estndar), la configuracin de la memoria debe
establecerse en y el temporizador del encendido "off" se debe establecer en "on".
Cuando los bits de configuracin estn configurados correctamente, haga clic en
"Programa" y esperar a que el programador para finalizar. Si el programador se realiza
correctamente, el cdigo se encuentra ahora en el PIC.
ULTIMAS PALABRAS

Despus de completar este tutorial sers capaz de programa de un PIC para enviar salidas,
leer las entradas, y crear funciones usando un reloj. Despus de crear un programa en
cdigo ensamblador, usted debera ser capaz de grabar ese programa en el dispositivo para
su uso en su aplicacin.
Los conceptos que se muestran aqu se presentan en situaciones relativamente triviales. Sin
embargo, estos conceptos son fundamentales para el uso del PIC para aplicaciones ms
grandes y complejas.

Si tiene alguna pregunta acerca de este tutorial que me puede enviar por correo electrnico
a Keithicus@drexel.edu . Feliz PIC'n!

Potrebbero piacerti anche