Vous êtes sur la page 1sur 6

Micro Controladores aplicados a la Industria. Carrera: TNS en Electrnica Industrial. Profesor: Luis Gajardo Ortiz.

Micro Controladores. Familia PIC.


Programacin en Lenguaje BASIC.

Puertos del PIC 16F628a

(Voltaje de alimentacin entre 3,3 y 5,0 volts. Vdd, Vss es comn)

Puerto A: RA.0 = AN0 RA.1 = AN1 RA.2 = AN2/Vref RA.3 = AN3/CMP1 RA.4 = TOCK1/CMP2 RA.5 = MCLR/Vpp RA.6 = OSC/CLOCKOUT RA.7 = OSC/CLKIN Puerto B: RB.0 = INT RB.1 = RX/DT RB.2 = TX/CK RB.3 = CCP1 RB.4 = PGM RB.5 = I/O RB.6 = T1OSI/PGD RB.7 = T1 OSO/T1CK1/PGC

Entrada comparadora 1. Entrada comparadora 2. Entrada comparadora 3/ voltaje de referencia. Entrada comparadora 4/salida comparador 1 Entrada de Clock para TMR0 Master Clear (Reset) y Voltaje de programacin. Oscilador externo/Salida reloj. Oscilador Externo/Entrada reloj.

Interrupcin Externa. Recepcin USART Transmisin USART Captura Comparador. Pin Habilitaci{on de Programaci{on del PIC Proposito general. Timmer 1 Oscilador Imput/Prog. DATA Timmer 1 Oscilador Output/Prog. Clock.

Lenguajes de programacin.

Existen varios lenguajes para la programacin de uC, el Assembler es ms cercano al lenguaje de mquina, en cambio el Basic es ms cercano al programador. Ejemplo:

Ambos programas realizan la misma tarea. En aplicaciones simples donde no se ocupen demasiados recursos es apropiado emplear Basic, En cambio si se quiere optimizar el uso del uC es ms apropiado el Assembler. Finalmente estos lenguajes debern ser transformados a Hexadecimal para que el Quemador o grabador traspase la informacin al uC. En cuanto a su denominacin se dice que Assembler es un lenguaje de bajo nivel por estar ms cerca del uC, el lenguaje Basic es considerado de alto nivel debido a que es ms cercano al lenguaje Humano, (ingls).

Para transformar los lenguajes de programas al lenguaje del micro se emplea un programa llamado Compilador, para grabar el programa en el micro se empleara un dispositivo llamado Quemador o tarjeta grabadora (JDM Programmer). este a su vez deber ser compatible con el software compilador El interfaz de grabacin se conectara con el PC a travs de sus puertos de comunicacin, el ms antiguo es el paralelo o LPT (para Impresoras, Db25), le sigue el puerto serial o COM (Db9), en la actualidad es el puerto USB mediante una interfaz electrnica. Para desarrollar los proyectos es recomendable que el editor en donde se escriba el programa permita usar varios lenguajes y muy importante que los pueda simular antes de compilarlos. Un buen ejemplo es el programa Pic Simulator IDE

Un buen programa para grabar los uC es el IC-Prog que se puede obtener en http://www.ic-prog.com , recomiendo leer el tutorial de este programa para poder emplearlo eficazmente.

Para construir una tarjeta grabadora se puede usar el siguiente circuito (compatible con 16f628a), para puerto COM de PC.

JDM Programmer

Micro Controladores aplicados a la Industria. Carrera: TNS en Electrnica Industrial. Profesor: Luis Gajardo Ortiz.

El lenguaje BASIC con el Programa PIC Simulator. En este texto gua solamente se harn referencia a el control de valores discretos, o sea, ceros o unos (On/Off)
Instrucciones y Variables: Instruccin: es un conjunto de Datos insertados en una secuencia estructurada o especifica que el uC
Interpreta y Ejecuta (son ordenes). Generalmente una instruccin est acompaada de una Variable. Ejemplo: Instruccin Variable

For

1 to 100 step1

Aqu FOR es la instruccin y A es la variable Declarada anteriormente.

Variable: puede tomar valores de distinto orden y nombre, se catalogan por su Tamao: Bit: valores entre 0 y 1 Byte: valores entre 0 y 255 Word: valores entre 0 y 65.535 Long: valores entre 0 y 4.294.967.295 En PIC Simulator se le asigna el valor con la Instruccin DIM
Ejemplos:

Dim A as Byte Dim var as Long Dim Valor as Bit

(A = 200 es correcto) (var = 1024 correcto pero ineficiente) (Valor = 20 incorrecto, solo puede ser 1 o 0)

Lectura de la programacin: La programacin es leda en forma secuencial, desde arriba hacia abajo y se debe respetar ese orden, salvo en los casos en que se empleen instrucciones de salto. Declarar modo de operacin anlogo o digital, variables y tipo.
ALLDIGITAL: Esta instruccin ordena al uC a que todas sus entradas y salidas operen en modo Digital, ceros y unos. Los comparadores, PWM, conversores A/D, etc, dejaran de funcionar.

TRISx: Instruccin que define el comportamiento de los puertos del PIC, si toma valor 0 (cero) el Pin ser convertido en Salida. Si toma el valor 1 (uno) se comportar como Entrada. Cuando se define un puerto se puede escribir en Decimal, Binario o Hexadecimal. Ejemplos:

TRISA = 200 TRISA %11001000 TRISA = 0xC8

(es este caso cada pin es definido en el puerto A

Pin TRISA = % Funcin

RA.7 1 Entrada

RA.6 1 Entrada

RA.5 0 Salida

RA.4 0 Salida

RA.3 1 Entrada

RA.2 0 Salida

RA.1 0 Salida

RA.0 0 Salida

PORTx: se asigna un Valor de Salida del Portx, este puede ser bit a bit o puerto completo. (puerto A o B y adems todos juntos o cada pin por separado). Ejemplos:

PORTA=%01000000 PORTA.6=1

se tomara valor 1 en el puerto RA6 se tomara valor 1 en el puerto RA6

WAITMS - WaitUs:
microsegundos WaitUs. Ejemplo:

En esta instruccin se ordena al micro una espera en milisegundos WAITMS o en

Alldigital TRISA=%00000000 PORTA.0=1 WAITMS 1000 PORTA.0=0

declaro todos los pines digitales. todos los puertos A como Salida. enciende Led en puerto RA1 espera 1 segundo, 1000 milisegundos. apaga Led en RA1

GOTO: con esta instruccin se realiza un Salto o Bucle para Ir a, se usa para apuntar a un destino ya definido siempre finalizndolo a este destino con dos puntos (:).

Ejemplo:

inicio: PORTA.0=1 WAITMS 1000 PORTA.0=0 WAITMS 1000 GOTO Inicio

enciende Led en RA0 espera 1 segundo apaga Led en RA0 espera 1 segundo vuelve al inicio y repite indefinidamente

DIM: define las Variables, se debe asignar el tamao que puede alcanzar bit, byte, Word o long. Se debe cuidar el nombre de la variable, ni nmero o carcter especial, adems el valor de la variable no debe ser
mayor al tamao asignado. Ejemplos: DIM var AS Byte DIM tiempo AS Word Var=16 (es correcto) Tiempo=1024 (es correcto)

SYMBOL: con esta instruccin se puede reemplazar un parmetro con un nombre o smbolo, la finalidad es hacer ms fcil la lectura del programa. En el ejemplo Led1 reemplaza la instruccin correspondiente.
SYMBOL Led1 = PORTB.0 SYMBOL Led2 = PORTB.0 (PORTB.0 = 0) (PORTB.1 = 1)

Ejemplos:

IF THEN ELSE: se utiliza como condicionante, o sea, debe resolver un resultado si se cumple tal o cual condicin; Se puede traducir como: SI esto as ENTONCES realizar esto SINO realizar esto otro.
Ejemplo: IF PORTA.6=1 THEN GOTO inicio SI puerto RA6 es 1 entonces voy a inicio GOTO stop SINO voy a stop. (No es necesario anotar ELSE, pues en el programa si la condicin no se cumple salta a la prxima instruccin.) FORT TO STEP NEXT: se utiliza como Contador donde podemos predefinir Inicio-Fin y los saltos de paso en paso. Siempre se debe definir primero una Variable para esta funcin, ya que esta variable ira cambiando de valor durante el programa. El tamao deber ser de un BYTE o ms para que permita los ciclos respectivos. Cuando se alcanza el valor de la variable termina el Bucle y sigue la siguiente Instruccin. Ejemplo: DIM a AS BYTE DIM TOTAL AS WORD TOTAL = 0 FOR a = 1 TO 100 STEP 1 TOTAL = TOTAL + a NEXT a declaro a como BYTE declaro TOTAL como WORD asigno 0 a la variable TOTAL a va de 1 a 100 de 1 en 1 sumo a al valor de TOTAL fin del bucle

LOOKUP: esta funcin se utiliza para seleccionar un Byte desde una lista de constantes del mismo tipo, de acuerdo al valor de un ndice, (tambin de tipo Byte). El resultado de la seleccin se almacena tambin en una variable tipo Byte.
Ejemplo: DIM Cuenta AS BYTE DIM Var AS BYTE Cuenta = 3 Var = LOOKUP(25,35,55,70,85,100), indice

una lista muy larga ocupa mucha memoria.

SHIFTLEFT-SHIFTRIGHT: con estas dos instrucciones que operan a nivel de BIT se puede correr el contenido de una variable a la izquierda o a la derecha. El bit del extremo correspondiente se pierde y se agrega un 0 en el espacio creado.
Ejemplo: AllDigital TRISC = %oooooooo todos pines como salidas PORTC = %00000001 Goleft: WAITMS 500 PORTC = ShiftLeft(PORTC,1) IF PORTC = %10000000 Then GOTO goright GOTO goleft Goright: WAITMS 500 PORTC = ShiftRight(PORTC,1) IF PORTC = %00000001 THEN GOTO Goleft GOTO Goright Con este programa el puerto activo va de uno a otro extremo en pausas de 0,5 segundos.

Micro Controladores aplicados a la Industria. Carrera: TNS en Electrnica Industrial. Profesor: Luis Gajardo Ortiz. WHILE WEND:
su propsito es la construccin de Bucles que se ejecutan un nmero de veces. Mientras que la condicin sea verdadera el grupo de instrucciones dentro se ejecutar. Se debe ser muy cuidadoso para evitar condiciones que nunca se den o quede en bucle infinito.

DIM A AS BYTE DIM B AS BYTE A=0 B=0 WHILE A < 20 A = A+1 incremento de la variable A B=B+A se suma en B el valor de la variable A. WEND Las instrucciones se cumplen 20 veces y en B se acumula el resultado . Como A es ahora > 20 resulta falsa la condicin A < 20 y se contina con la instruccin que sigue de WEND.

Ejemplo:

GOSUB: parecida a GOTO con la diferencia que despus de salta al lugar indicado y concluida la tarea retornara a la siguiente instruccin que siga de GOSUB. Ejemplo:
GOSUB alto

Bajo: PORTA.7 = 0 Alto: PORTA.7 = 1


La instruccin GOSUB saltara hacia Alto poniendo RA7 en 1, luego continuar en Bajo poniendo RA7 en 0, continuando con otras instrucciones posteriores.

FREQOUT: mediante esta instruccin se puede habilitar una salida con un generador de tono. Se indica el puerto, la frecuencia y la duracin.
Ejemplo: TRISB.0 = 0 FreqOut PORTB.0,600,1000

en el puerto RB0, 600 Hz por 1 segundo.

Ejercicios: Realice la programacin y simulacin en PIC Simulator, grabacin y comprobacin en ProtoBoard.

1)

Led parpadeante.

2) Led controlado por pulsador. AllDigital TRISA.7 = 1 TRISA.6 = 0 Symbol pulsador = PORTA.7 Symbol Led = PORTA.6 Loop: Led = pulsador GOTO Loop

3) genera tono: 600 hz /0,2s AllDigital TRISA = 1 Loop: IF PORTA.0 = 1 Then Goto Inicio GOTO Loop Inicio: TRISB.0 = 0 freqOut PORTB.0,600,200 GOTO Loop

AllDigital TRISA = % 11111111 TRISB = % 00000000 Loop: PORTB.3 = 1 WAITMS 500 PORTB.3 = 0 WAITMS 500 GOTO Loop

4) contador decimal de 7 segmentos: Dim Digito As Byte Dim Mascara As Byte Inicio: Digito = 0 Loop: If Digito = 9 Then GOTO Inicio TRISB = % 00000000 Mascara = LookUp (0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f), Digito Continua

PORTB = Mascara WaitMS 1000 Digito = Digito + 1 GOTO Loop End

Complete el Programa:

Inicio: DIM

2) disee el programa correspondiente al diagrama de flujo Inicio: DIM

Webgrafia:

http://www.ucontrol.com.ar revista uControl http://www.oshonsoft.com Pic Simulator Ide http://www.micropic.es http://www.neoteo.com http://www.todopic.com.ar http://www.hispavila.com/indextempic.html manual IcProg, practicas, temas pic. http://sociedad-electronica.blogspot.com/ manuales y programas http://www.matpic.com/esp/microchip/picbasicpro_mplab.html manual MPLAB http://www.olimex.cl/index.php?cPath=52_73 productos Olimex http://labv87.blogspot.com/2011/03/pic-simulator-ide.html libros y manuales.

03/11/20013.

Vous aimerez peut-être aussi