manual de Proton IDE en español pdf - COMPILADOR BASIC

December 22, 2019 | Author: Anonymous | Category: Arranque, Microcontrolador, Compilador, Microcontrolador PIC, Lenguaje de programación
Share Embed Donate


Short Description

Download manual de Proton IDE en español pdf - COMPILADOR BASIC...

Description

PROTON IDE GRENELECTRONIC DESARROLLO CON MICROCONTROLADORES PIC Índice 1.Introducción 2.Código de programación Basic 3.Códigos Binario, hex., Decimal, ASCII 4. Programación I  Laso abierto, secuencia  Actividades de programación I 5. Programación II  Laso cerrado, compuertas lógicas  Secuencia de control y carga  Actividades de programación II 6. Programación III  Display de 7 segmentos  Actividades de programación III 7. Programación IV  LCD, lm35, instrumentación  Actividades de programación IV 8. Programación V  Motores, Servos y PAP  Actividades de programación V 9. Programación VI  Robótica sensorial  Actividades de programación VI 10. Programación VII  Visual Basic  Comunicación serial rx tx  Actividades de Programación VII

¿Qué es un microcontrolador? Es un circuito integrado programable que acepta un listado de instrucciones y contiene todos los componentes de un computador. Se utilizan para realizar determinadas tareas o para gobernar dispositivos, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo que gobierna. El microcontrolador es un dispositivo dedicado. En su memoria solo reside un programa destinado a gobernar una aplicación determinada, sus líneas de entradas y salidas (I/O) permiten la conexión de sensores y relay. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada Los microcontroladores en general, y los de la empresa Microchip en particular, necesitan de un circuito electrónico auxiliar que nos permita transferirles desde el ordenador el programa que hemos escrito para ellos. Hay muchas maneras de encarar este problema, y en general se suele utilizar alguno de los puertos disponibles en cualquier ordenador para este fin. Así es que en el mercado es posible conseguir “quemadores” de PICs con conexión para puerto USB, paralelo o serie (RS232). Los microcontroladores de Microchip (PICs) se programan mediante un protocolo tipo serie. Se necesitan dos tensiones de alimentación para poder llevar a cabo la programación: una de 4.5v a 5.5v (VDD) y otra comprendida entre 12v y 14v (VPP), que es la que indica al PIC que va a ser programado, para que el cambie la función que realizan los pines I/O implicados en la programación. Los pines implicados en la programación varían de un microcontrolador a otro, pero en general, los de un mismo numero de pines (8, 18, etc.) tienen las mismas patitas asignadas a la programación, lo que nos permite construir programadores que sirvan para mas de un PIC. Es muy recomendable leer la hoja de datos de Microchip sobre este tema dado que es conveniente conocer el mecanismo implicado en la programación (tiempos, señales, etc). El documento se refiere específicamente a la familia 16F8x, pero los demás no difieren demasiado de lo allí expuesto. El programador, será el encargado de transferir el programa que escribamos en la PC a la memoria FLASH del PIC. Esta es una memoria no volátil, de bajo consumo, que se puede escribir y borrar en el circuito integrado (al igual que las EEPROM). Microchip comercializa dos microcontroladores prácticamente iguales que sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC16C84 y el PIC16F84, respectivamente. Además de esta memoria, casi todos los PICs también disponen de una memoria de datos de lectura y escritura no volátil, (esta del tipo EEPROM). De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. Por ejemplo, el 16F84 dispone de 64 bytes de memoria EEPROM para contener datos, y los programas que creemos pueden leer y escribir en ella. BOOTLOADER Un bootloader («cargador de arranque» ) es un programa sencillo que no tiene la totalidad de las funcionalidades de un sistema operativo, diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo. En los ordenadores modernos, el proceso de arranque comienza con la CPU ejecutando los programas contenidos en la memoria ROM en una dirección predefinida y se configura la CPU para ejecutar este programa, sin ayuda externa, al encender el ordenador. Bootloader es un pequeño programa de arranque, residente en las primeras 0x800 bytes de la memoria de programa de un Microcontroladores PIC. El bootloader funciona en el momento del cargado de programa (justo cuando el PIC es reseteado) y es capaz de cargar un completo programa de aplicación en la memoria de programa del PIC. Microchip ofrece, de tamaño compacto, versátil, autónomo, que ha sido diseñado pensando en la necesidad de contar con un modulo que fácilmente pueda ser montado sobre un Protoboard y la ves se pueda tener un potente microcontrolador de la gama serie 18 equipado con puerto de comunicaciones USB, Serie, I2C, Paralelo, Conversores A/D, múltiples puerto I/O, los cuales están disponibles para ser conectados a diferentes circuitos y configuraciones sin necesidad de retirar el PIC del Protoboard para programarlo cada ves que sea necesario, modificar el programa grabado el PIC o para una fácil depuración del programa en proceso de desarrollo. Estructura del programa en Pic Basic Un programa básico consta de: • Programa de cabecera • Declaraciones • Explicación de los signos e identificadores • Declaraciones y comandos Además de estas estructuras de base, algunos compiladores también permiten programación orientada a objetos, así como procedimientos y funciones. Sin embargo

Protón IDE no permite los procedimientos y funciones en el verdadero sentido, así como no es compatible con los objetos. Tiene enfoque orientado hacia el simple y sencillo llamado de instrucciones. La programación comienza en la parte superior, y la continúa hacia abajo. Sin embargo permite las repeticiones. Las primeras líneas del programa BASIC, difieren en la memoria de los microcontroladores, EEPROM, número de puertos y registros, etc., es necesario informar al compilador sobre el microcontrolador que se utilizará. En segundo lugar la velocidad de procesamiento depende de la frecuencia del cristal. Por lo tanto, a fin de calcular con precisión el calendario de funciones de retraso también es necesario informar al compilador de la frecuencia del cristal Los programas de lenguaje BASIC usualmente comienzan así: Device = 16F877A XTAL = 4 La primera línea indica el procesador y la segunda línea dice que el hardware utiliza 20MHz de cristal. Declaraciones Son instrucciones especiales sobre los diversos dispositivos a utilizar, esto ayuda al compilador a generar instrucciones específicas. Por ejemplo, si estamos usando una pantalla LCD y se conecta en PORTD, entonces tenemos que informar las conexiones de nuestro LCD. Vamos a declarar este tipo de configuración generalmente después de la sección de encabezado utilizando los comandos: Declare LCD_DTPIN PORTD.0 Hay un número de declaraciones, sin embargo, sólo las necesarias en el proyecto actual se fijan normalmente.... Identificadores Los identificadores son símbolos de texto especial que se utiliza para representar algo. Pueden ser utilizados como etiquetas para marcar ciertos lugares en el programa, de modo que el programa se puede hacer para ir a las etiquetas y luego continuar con el programa a partir de entonces. Del mismo modo los identificadores pueden usarse para nombrar algunas ubicaciones de memoria. Estos son por lo general variables llamadas, y son los identificadores más importantes en la programación. Los identificadores también se pueden utilizar como alias en cierto texto, de modo que en lugar de escribir el texto concerniente del identificador, el compilador inserta el texto pertinente en su lugar. Las declaraciones y comandos Hay tres tipos de declaraciones: • Comparación y declaraciones condicionales • Repetición y declaraciones de bucle • Biblioteca de comandos Comparación y sentencias condicionales nos permiten comparar dos o más variables, los puertos, los pines del puerto o registros de funciones especiales y luego tomar la decisión de ejecutar un conjunto de instrucciones o de otro conjunto. Considerando la importancia de estas declaraciones, el lenguaje BASIC prevé diferentes construcciones de esto. Vamos a explorar estas a continuación. La repetición y de bucle es una de las mayores ventajas de los microprocesadores. Podemos encargar al microcontrolador repetir continuamente ciertas instrucciones, ya sea indefinidamente, o hasta que una determinada condición existe. Por ejemplo, para mantener un LED, hasta que la temperatura es alta desde un punto de ajuste. Biblioteca de Comandos, no son propiamente los comandos del lenguaje BASIC, pero son proporcionados por el fabricante del compilador para hacer las tareas comunes. Por ejemplo, un comando de biblioteca para mostrar algunos datos sobre la LCD o para leer los datos analógicos de un pin de entrada. Etiquetas Para marcar las declaraciones que el programa podría hacer referencia con los comandos Goto, Call o Gosub, PROTON utiliza las etiquetas de línea. A diferencia de los antiguos BASICS, PROTON no permite o exige a los números de línea y no requiere que se etiquete cada línea. En cambio, cualquier línea puede comenzar con una etiqueta de línea, que es simplemente un identificador seguido de dos puntos (:). LAB: PRINT "Hola Mundo" GOTO LAB Los nombres de etiqueta pueden ser de hasta 32 caracteres de longitud y puede contener cualquier carácter alfanumérico, pero no debe comenzar con un valor numérico. Por ejemplo: Label1: Es perfectamente válido, sin embargo: 1LABEL: Se producirá un error de sintaxis porque las etiquetas se inician con el valor 1. Una etiqueta que contenga más de 32 caracteres producirá un error de sintaxis señalando la etiqueta de reincidencia. También se permite caracteres como parte de la etiqueta. Esto ayuda a crear más nombres de etiqueta descriptiva. Por ejemplo: THISISALABEL: No tiene la misma claridad de significado como: THIS_IS_A_LABEL: Variables: Las variables se utilizan para almacenar datos temporalmente o para mantener números que se utilizarán en los cálculos. El número de variables que pueden ser utilizados

en un programa depende de la memoria RAM del microcontrolador, la Microcontrolador, la parte de la memoria RAM, la memoria del programa.

arquitectura

del

Símbolos y gráficos Un diagrama de flujo se construye con unos símbolos gráficos especiales que representan acciones, funciones, y equipamiento usado para lograr un resultado específico.

PROGRAMACION CON PROTON IDE CONFIGURAR MICROCONTROLADOR Device 16F870 Device 16F873A Device 16F877A Device 18F225 CONFIGURAR VELOCIDAD DEL MICRO EN Mhz Xtal 4 Xtal 10 Xtal 20 Xtal 40 CONFIGURAR PINES DIGITALES All_Digital= true ‘PARA PUERTOS A Y E CONFIGURAR MEMORIA BUS I2C ------SCL_Pin = PORTA.7 SDA_Pin = PORTA.6 CONFIGURAR

VARIABLES

Tecla var Dim tecla Dim cont2 Dim cont1 CONFIGURAR LCD Declare Declare Declare Declare Declare Declare

Byte ' no se recomienda As Byte As WORD As DWORD

LCD_Type = 0 LCD_DTPin = PORTD.0 LCD_ENPin = PORTD.5 LCD_RSPin = PORTD.4 LCD_Interface = 4 LCD_Lines = 2

CONFIGURAR LCD GRAFICO LCD_DTPort = PORTD LCD_RSPin = PORTC.1 LCD_ENPin = PORTE.0 LCD_RWPin = PORTC.0 LCD_CS1Pin = PORTE.1 LCD_CS2Pin = PORTE.2 LCD_Type = GRAPHIC Internal_Font = OFF Font_Addr = 0 CONFIGURAR TECLADO Keypad_Port = PORTB CONFIGURAR COMUNICACIÓN SERIAL Serial_Baud = 9600 Rsout_Pin = PORTC.6 Rsout_Mode = TRUE Rsout_Pace = 1 Rsin_Pin = PORTC.7 Rsin_Mode = TRUE Hserial_Baud = 9600 ' velocidad baudios 9600 Hserial_RCSTA = %10010000 ' Enable serial port and continuous receive Hserial_TXSTA = %00100100 ' Enable transmit and asynchronous mode Hserial_Clear = On ' Enable Error clearing on received characters CONFIGURAR UNA ENTRADA Input PORTC.3 'declaro TRISA=1 'declaro TRISA.0=1 'declaro TRISA=%11111111 'declaro TRISA=$FF 'declaro TRISA=255 'declaro CONFIGURAR UNA SALIDA

que que que que que que

el el el el el el

puerto puerto puerto puerto puerto puerto

C A A A A A

pin.3 es entrada es entrada pero solo el pin.0 es entrada pero solo el pin.0 es entrada es entrada es entrada

Output PORTC.7 TRISA=0 TRISA.0=0 TRISA=%00000000 TRISA=$0

que que que que que

el el el el el

puerto puerto puerto puerto puerto

C A A A A

pin.7 es salida es salida es salida pero solo el pin.0 es salida es salida

'declaro 'declaro 'declaro 'declaro 'declaro

CONFIGURACION COMBINADA TRISA=%00001111 'declaro que el puerto A será: entrada los pines TRISA=$F 'declaro que el puerto A será: entrada los pines TRISA=15 'declaro que el puerto A será: entrada los pines

0,1,2,3 0,1,2,3 0,1,2,3

ACTIVAR PUERTO High xx8 Low xx8 Low PORTB High PORTB PORTB=0 PORTB.0=0 PORTB=%00000000 PORTB=1 PORTB.0=1 PORTB=7 PORTB=3 PORTB=$F PORTB=$3F PORTB=%11111111

'el 'el 'el 'el 'el 'el 'el 'el 'el 'el 'el 'el

puerto puerto puerto puerto puerto puerto puerto puerto puerto puerto puerto puerto

b b b b b b b b b b b b

esta en nivel bajo (apagado) esta en nivel ALTO (ACTIVO) esta en nivel bajo (apagado) solo el pin.0 con nivel bajo esta con nivel bajo solo el pin.0 con nivel alto (activado) solo el pin.0 con nivel alto reproduce el dato 00000111 dec reproduce el dato 00000011 dec reproduce el dato 00001111 hex reproduce el dato 00111111 hex esta con nivel alto bin

ALIAS PARA PERIFERICOS Symbol MOTOR = PORTA.1 ‘existe un motor conectado en el puerto A pin.1 Symbol SW = PORTA.2‘existe un pulsador conectado en el puerto A pin.2 ACTIVAR POR CONDICION

y salida 4,5,6,7 y salida 4,5,6,7 y salida 4,5,6,7

If s1=0 Then If s1=1 Then If s1=1 And s2=0 And s3=0 Then PROG EndIf

' el micro espera un ' el micro espera un 'debe cumplir e ir a ' antes de concluir

0 para activar una rutina 1 para activar una rutina una sub rutina una rutina al usar IF sin bucle

ACTIVAR SOFT.WERE POR etiquetas GoSub GIRA ‘activar una rutina llamada GIRA GIRA: Return ‘retornar al punto de inicio RETARDOS DelayMS 1000 ' RETARDO DEL ESTADO 1000 ES 1SEG DelayMS 500 ' RETARDO DEL ESTADO 500 ES 1/2SEG DelayUS 1000 ' RETARDO DEL ESTADO 1000 ES 1mseg pause 1000 ' RETARDO DEL ESTADO 1000 ES 1SEG no se recomienda ACTIVAR TEXTO EN UN LCD Print At 1,1, " DelayMS 5000

ACTIVAR ESTACION

"'ESCRIBE EN LA LINEA 1 POSICION 1

RESCATAR UN VALOR EN DECIMAL Dim cc As Word Print At 1,1, "f = ", Dec cc' imprimir el dato en el LCD desde cc CONTAR LOS PULSOS QUE ENTRAN EN UN PIN WRD = Counter Pin , 1000 ' LA VARIABLE

WRD

CONTIENE EL VALOR DE ENTRADA EN 1seg

CONTADOR DE EVENTOS CON OPERATORIA If IRIS =1 Then DelayMS 500 cont1 = cont1 + 1 'se ejecuta una suma en memoria EndIf Organizador de instrucciones (branch,on goto,on gosub) IF VAR1 = 0 THEN GOTO LAB_0 IF VAR1 = 1 THEN GOTO Lab_1 IF VAR1 = 2 THEN GOTO Lab_2

por

BRANCH VAR1, [Lab_0, Lab_1, Lab_2] ON VAR1 GOTO LABEL_0, LABEL_1, LABEL_2 ON VAR1 GOSUB LABEL_0, LABEL_1, LABEL_2

Quiebre de bucle o rutina IF VAR1 = 10 THEN BREAK DELAYMS 200

' BREAK ROMPE EL BUCLE CUANDO LLEGUE A 10

Ejecutar un bloque de instrucciones hasta que una condición es verdadera VAR1 = 1 REPEAT PRINT AT 1, 1, DEC VAR1 DELAYMS 200 INC VAR1 UNTIL VAR1 > 10

O

REPEAT HIGH LED: UNTIL PORTA.0 = 1

Configurar una entrada analógica Declare ADIN_RES Declare ADIN_TAD Declare ADIN_STIME

10 2 100

'resolución 'CLK options are 0, 1, 2, 3 (0-2 are based on internal cycles) 'tiempo de muestreo

ADCON1 = %10000000 ' Setup Del registro ADCON1, AN1 / RA1 es análogo Mueva la posición del cursor en la pantalla LCD para una línea y posición determinada. DIM Line as BYTE DIM Xpos as BYTE Line = 2 Xpos = 1 CLS

PRINT "HELLO" ' Display LCD CURSOR Line , Xpos ' line 2, position 1 ACTIVAR POR BUCLE gg: ' etiqueta princial, ejecuta una rutina PORTD.2=1 DelayMS 200 PORTD.2=0 DelayMS 200 GoTo gg ' termina la rutina y regresa a la etiqueta `````````````````````````````````````````````````````````````````` LOOP: LED = 1 ' First LED on DelayMS 300 ' Delay for .3 seconds For SCAN = 1 To 7 ' Go through For..Next loop 7 times LED = LED ?

ASCII

Hex

Símbolo

ASCII

Hex

Símbolo

ASCII

Hex

Símbolo

ASCII

Hex

Símbolo

64 65 66 67 68 69 70 71 72 73 74 75 76

40 41 42 43 44 45 46 47 48 49 4A 4B 4C

@ A B C D E F G H I J K L

80 81 82 83 84 85 86 87 88 89 90 91 92

50 51 52 53 54 55 56 57 58 59 5A 5B 5C

P Q R S T U V W X Y Z [ \

96 97 98 99 100 101 102 103 104 105 106 107 108

60 61 62 63 64 65 66 67 68 69 6A 6B 6C

` a b c d e f g h i j k l

112 113 114 115 116 117 118 119 120 121 122 123 124

70 71 72 73 74 75 76 77 78 79 7A 7B 7C

p q r s t u v w x y z { |

77 78 79

4D 4E 4F

M N O

93 94 95

5D 5E 5F

] ^ _

109 110 111

6D 6E 6F

m n o

125 126 127

7D 7E 7F

Programación I El proceso se desarrolla en diferentes fases sin comprobar que el objetivo se ha alcanzado satisfactoriamente. En el ejemplo de una lavadora, la señal de salida (que sería la ropa lavada) no se introduce en el sistema en ningún momento para poder dar el proceso por terminado. Es posible que la ropa no esté bien lavada pero el sistema no puede rectificar automáticamente. Esto se denomina laso abierto 1-ACTIVEMOS UN LED, pero con un destello

D1 U1

Device 16F870 Xtal = 20 TRISB=0 PORTB=0 E: PORTB.0=1 DelayMS 1000 1SEG PORTB.0=0 DelayMS 1000 1SEG End

'microcontrolador 'velocidad ' DECLARO PUERTO B SALIDA ' ASEGURO EL PUERTO B LOW 'ETIQUETA 'ENVIO UN NIVEL ALTO AL PIN 0 ' EL LED SE MANTIENE ACTIVO POR

9 10 1 2 3 4 5 6 7

'ENVIO UN NIVEL BAJO AL PIN 0 ' EL LED SE MANTIENE APAGADO POR

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

21 22 23 24 25 26 27 28

LED

11 12 13 14 15 16 17 18

PIC16F870

'FIN DE LA RUTINA

2-ACTIVEMOS UN LED, destello infinito Device 16F870 Xtal = 20 TRISB=0 PORTB=0 E: PORTB.0=1 DelayMS 1000 PORTB.0=0 DelayMS 1000 GoTo E

'microcontrolador 'velocidad ' DECLARO PUERTO B SALIDA ' ASEGURO EL PUERTO B LOW 'ETIQUETA 'ENVIO UN NIVEL ALTO AL PIN 0 ' EL LED SE MANTIENE ACTIVO POR 1SEG 'ENVIO UN NIVEL BAJO AL PIN 0 ' EL LED SE MANTIENE APAGADO POR 1SEG 'IR A ETIQUETA

3-ACTIVEMOS UN LED, alterando la pausa Device 16F870 'microcontrolador Xtal = 20 'velocidad TRISB=0 ' DECLARO PUERTO B SALIDA PORTB=0 ' ASEGURO EL PUERTO B LOW E: 'ETIQUETA PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0 DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEG PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEG Goto E ' IR AL COMIENZO DEL PROGRAMA U1 9 OSC1/CLKIN 4-ACTIVEMOS UN LED, cambiando el pin 10 OSC2/CLKOUT 1

Device 16F870 Xtal = 20 TRISB=0 PORTB=0 E: PORTB.5=1 DelayMS 100 PORTB.5=0

MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

2 RA0/AN0 'microcontrolador 3 RA1/AN1 4 RA2/AN2/VREF5 'velocidad RA3/AN3/VREF+ 6 RA4/T0CKI 7 ' DECLARO PUERTO B SALIDA RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI ' ASEGURO EL PUERTO B LOW RC2/CCP1 RC3 RC4 'ETIQUETA RC5 RC6/TX/CK 'ENVIO UN NIVEL ALTO AL PIN 5 RC7/RX/DT ' EL LED SE MANTIENE ACTIVO POR 100mSEG PIC16F870 'ENVIO UN NIVEL BAJO AL PIN 5

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

D1

LED

} ~ 

DelayMS 100 Goto E

' EL LED SE MANTIENE APAGADO POR 100mSEG ' IR AL COMIENZO DEL PROGRAMA

5-ACTIVEMOS UN LED, cambiando de puerto Device 16F870 Xtal = 20 TRISC=0 PORTC=0 E: PORTC.0=1 DelayMS 50 PORTC.0=0 DelayMS 50 Goto E

'microcontrolador 'velocidad ' DECLARO PUERTO C SALIDA ' ASEGURO EL PUERTO C LOW 'ETIQUETA 'ENVIO UN NIVEL ALTO AL PIN 5 ' EL LED SE MANTIENE ACTIVO POR 50mSEG 'ENVIO UN NIVEL BAJO AL PIN 5 ' EL LED SE MANTIENE APAGADO POR 50mSEG ' IR AL COMIENZO DEL PROGRAMA

U1 9 10 1 2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RA0/AN0 RB4 RA1/AN1 RB5 RA2/AN2/VREFRB6/PGC RA3/AN3/VREF+ RB7/PGD RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

OTRAS FORMAS inicio: High led pause 1000 Low led pause 1000 GoTo inicio End ‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ inicio: High PORTB.0 pause 1000 Low PORTB.0 pause 1000 GoTo inicio End `````````````````````````````````````````````````````````````````````` inicio1: PORTB.0 = 1 pause 1000 PORTB.0 = 0 pause 1000 GoTo inicio End ‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ inicio: High 0:Low 1:Low 2:Low 3:Low 4: High 5 DelayMS 1000 High 0:High 1:Low 2:Low 3:Low 4: High 5 DelayMS 1000 GoTo inicio End ‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ inicio: PORTB = %00100001 delayms 1000 PORTB = %00100011 delayms 1000 GoTo inicio End

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

D1

LED

Actividades de programación I U1

1. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ Segundo EN FORMA INFINITA, CADA UN0 DE LOS LED ACTUARAN EN ESCALERA.

9 10 1

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

2 3 4 5 6 7

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

21 22 23 24 25 26 27 28

U2

11 12 13 14 15 16 17 18

1 2 3 4 5 6 7 8 9 10

PIC16F870

20 19 18 17 16 15 14 13 12 11 LED-BARGRAPH-GRN

U1 9 10 1

2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ Segundo EN FORMA INFINITA, LOS LED ACTUARAN EN PENDULO

2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

U2 1 2 3 4 5 6 7 8 9 10

20 19 18 17 16 15 14 13 12 11 LED-BARGRAPH-GRN

U3 U1

3. DESARROLLE UN PENDULO INFINITO CON LOS PUERTOS B Y C, CON PAUSAS DE 100 mseg. CON EFECTO SEGUIDOR DE POSICION, los led se activaran, dejandolo en posición otro led.

9 10 1 2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

U2 LED

20 19 18 17 16 15 14 13 12 11 20 19 18 17 16 15 14 13 12 11

LED

4. DESARROLLE

SEMAFORO CON EL PUERTO B , CON PAUSAS DE 100 mseg.

Nota: esquematice cada circuito en un formato A4, con su diagrama de flujo y programa.

Programación II Si la señal que queremos controlar debe alcanzar un valor determinado, es habitual que el sistema la mida constantemente y actúe para alcanzar ese valor deseado. En este caso el sistema es realimentado, y hablamos de un sistema automático de lazo cerrado. El funcionamiento de un sistema automático de lazo cerrado se resume de esta forma. D1 U1

Resistor

Re sistor

9 10 1

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

2 3 4 5 6 7

R1 10k

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

21 22 23 24 25 26 27 28

LED

El circuito, se ha complementado con un pulsador, y una resistencia, enviaran un estado lógico al PIC, en este caso el pulsador enviara un 1 al pulsar, sin pulsar la resistencia mantiene un estado 0 por estar a tierra, si no esta la resistencia siempre existirá un 1.

11 12 13 14 15 16 17 18

PIC16F870

Resistor

Resistor

D1 R1 10k

U1 9 10 1 2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

LED

El circuito, se ha complementado con un pulsador, y una resistencia, enviaran un estado lógico al PIC, en este caso el pulsador enviara un 0 al pulsar, sin pulsar la resistencia mantiene un estado 1 por estar a +5vcc, si no esta la resistencia siempre existirá un 1.

Estos circuitos, serán capas de relacionar estados externos, actuando como condicionales para la ejecución de los programas. Vea: IF_____Then______Endif PIC16F870

1-ACTIVANDO UN LED, por un pulsador, enviando un1(button)

Device 16F870 Xtal = 20 TRISA=1 TRISB=0 All_Digital= true PORTB=0 E: If PORTA.0 = 0 Then PORTB.0=1 DelayMS 1000 PORTB.0=0 DelayMS 1000 EndIf End

Resistor

Resistor

Device 16F870 'microcontrolador Xtal = 20 'velocidad TRISA=1 'declaro que el puerto A es entrada R1 TRISB=0 ' DECLARO PUERTO B SALIDA 10k All_Digital= true ' todos los pines del micro son digitales PORTB=0 ' ASEGURO EL PUERTO B LOW E: 'ETIQUETA If PORTA.0 = 1 Then 'el micro espera un 1 para activar PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 7 DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 7 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG EndIf ' si es fin End 'fin 2-ACTIVANDO UN LED, por un pulsador, enviando un 0 (button) 'microcontrolador 'velocidad 'declaro que el puerto A es entrada ' DECLARO PUERTO B SALIDA ' todos los pines del micro son digitales ' ASEGURO EL PUERTO B LOW 'ETIQUETA 'el micro espera un 1 para activar 'ENVIO UN NIVEL ALTO AL PIN 0 ' EL LED SE MANTIENE ACTIVO POR 1SEG 'ENVIO UN NIVEL BAJO AL PIN 0 ' EL LED SE MANTIENE APAGADO POR 1SEG ' si es fin 'fin

D1 U1 9 10 1 2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

LED

3-ACTIVANDO UN LED, por 2 pulsadores, solo cuando estén en 1 (button)

D1 U1

Device 16F870 'microcontrolador Xtal = 20 'velocidad TRISA.0=1 'declaro que el puerto A pin 0 es entrada TRISA.1=1 'declaro que el puerto A pin 1 es entrada TRISB=0 ' DECLARO PUERTO B SALIDA All_Digital= true ' todos los pines del micro son digitales PORTB=0 ' ASEGURO EL PUERTO B LOW E: 'ETIQUETA If PORTA.0 = 1 AND PORTA.1 = 1 THEN 'los 2 sw activaran el led PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG EndIf ' si es fin End 'fin

9 10 1

Device 16F870 Xtal = 20 TRISA=1 TRISB=0 All_Digital= true PORTB=0

button2

led

0

0

0

0

1

1

1

0

1

1

1

0

'microcontrolador 'velocidad 'declaro que el puerto A es entrada ' DECLARO PUERTO B SALIDA ' declaro que todos los pines del micro son digitales ' ASEGURO EL PUERTO B LOW

E: 'ETIQUETA If PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal If PORTA.0 = 0 And PORTA.1 = 1 Then PORTB.0=1 'ENVIO UN NIVEL ALTO DelayMS 1000 ' EL LED SE MANTIENE PORTB.0=0 'ENVIO UN NIVEL BAJO DelayMS 1000 ' EL LED SE MANTIENE EndIf

AL PIN 0 ACTIVO POR 1SEG AL PIN 0 APAGADO POR 1SEG

If PORTA.0 = 1 And PORTA.1 = 0 Then PORTB.0=1 'ENVIO UN NIVEL ALTO DelayMS 1000 ' EL LED SE MANTIENE PORTB.0=0 'ENVIO UN NIVEL BAJO DelayMS 1000 ' EL LED SE MANTIENE EndIf

AL PIN 0 ACTIVO POR 1SEG AL PIN 0 APAGADO POR 1SEG

If PORTA.0 = 1 And PORTA.1 = 1 Then PORTB.0=1 'ENVIO UN NIVEL ALTO DelayMS 1000 ' EL LED SE MANTIENE PORTB.0=0 'ENVIO UN NIVEL BAJO DelayMS 1000 ' EL LED SE MANTIENE EndIf ' si es fin GoTo E 'ir al principio

AL PIN 0 ACTIVO POR 1SEG AL PIN 0 APAGADO POR 1SEG

5-ACTIVANDO UN LED, por 2 pulsadores, según tabla con sub. Programas button1

button2

Resistor

10k

R2 10k

led

0

0

0

0

1

1

1

0

1

1

1

1

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

4-ACTIVANDO UN LED, por 2 pulsadores, según tabla (button) button1

R1

Resistor

Resistor

Resistor

2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

LED

Device 16F870 Xtal = 20 TRISA=1 TRISB=0 All_Digital= true PORTB=0 E: If PORTA.0 If PORTA.0 If PORTA.0 If PORTA.0 GoTo E

= = = =

0 0 1 1

'microcontrolador 'velocidad 'declaro que el puerto A es entrada ' DECLARO PUERTO B SALIDA ' declaro que todos los pines del micro son digitales ' ASEGURO EL PUERTO B LOW

'ETIQUETA And PORTA.1 And PORTA.1 And PORTA.1 And PORTA.1

= = = =

0 1 1 1

Then E' estado regreza a etiqueta principal Then activo ' sub programa Then activo ' sub programa Then activo ' sub programa

activo:

' sub programa

PORTB.0=1 DelayMS 1000 PORTB.0=0 DelayMS 1000 GoTo E

'ENVIO UN NIVEL ALTO ' EL LED SE MANTIENE 'ENVIO UN NIVEL BAJO ' EL LED SE MANTIENE 'ir al principio

AL PIN 0 ACTIVO POR 1SEG AL PIN 0 APAGADO POR 1SEG

 Actividades de programación II 1. DESARROLLE UN SISTEMA DOMOTICO, PARA 3 PIESAS LOS CUALES SE RELACIONAN CON 3 PULSADORES. ELLOS ACTIVARAN, LA ILUMINACION DE CADA PIESA. D1 U1 9 10 1

R3 10k

Resistor

Resistor

10k

Resistor

R4

Resistor

Resistor

Resistor

2 3 4 5 6 7

R2 10k

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

21 22 23 24 25 26 27 28

LED

D2

11 12 13 14 15 16 17 18

LED

D3

LED

PIC16F870

2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 4 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ segundo. LOS LED TENDRAN DIRECTA RELACION CON 4 PULSADORES, LOS CUALES EJUTARAN 4 DISTINTAS RUTINAS CON UN MAXIMO DE 6SEG, OCUPANDO SUB PROGRAMAS. D1 U1 9 10 1

R2 10k

Resi stor

10k

Resi stor

Resi stor

R3

Resi stor

10k

Resi stor

R4

Resi stor

Resi stor

Resi stor

2 3 4 5 6 7

R1 10k

OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT PIC16F870

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

LED

D2

LED

D3

LED

D4

LED

3. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE LAS 8 COMPUERTAS LOGICAS CON EL 16F870, BUFFER, OR, AND, NOT, XOR, NAND, NOR Y XNOR

Programación III ACTIVANDO UN DISPLAY DE 7 SEGMENTOS

LOS DISPLAYS SON FABRICADOS CON ANODO COMUN O CATADO COMUN, SI ES DE CATODO COMUN DEBERA ACTIVAR CON NIVEL ALTO, PERO SI ES ANODO COMUN CON NIVEL BAJO. PORTB=%01111111 ‘forma el numero 8 para catado comun PORTB=%00000000 ‘forma el numero 8 para anodo comun Segun puertob seria % X g f e d c b A 1. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 U1

9 Device 16F870 OSC1/CLKIN RB0/INT 10 OSC2/CLKOUT RB1 1 Dim num As Byte MCLR/Vpp/THV RB2 RB3/PGM 2 RA0/AN0 RB4 Dim vec As Byte 3 RA1/AN1 RB5 4 RA2/AN2/VREFRB6/PGC TRISB = 0 5 RA3/AN3/VREF+ RB7/PGD 6 RA4/T0CKI prog: 7 RA5/AN4 RC0/T1OSO/T1CKI RC1/T1OSI For vec = 0 To 9 RC2/CCP1 RC3 LookUp vec, [191,134,219,207,230,237,253,135,255,239], num RC4 RC5 PORTB=num RC6/TX/CK RC7/RX/DT DelayMS 500 PIC16F870 Next vec GoTo prog End

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

2. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 (Baja - sube) U1 Device 16F870 9 OSC1/CLKIN RB0/INT 10 OSC2/CLKOUT RB1 Dim vec As Byte 1 MCLR/Vpp/THV RB2 RB3/PGM Dim num As Byte 2 RA0/AN0 RB4 3 RA1/AN1 RB5 4 TRISB = 0 RA2/AN2/VREFRB6/PGC 5 RA3/AN3/VREF+ RB7/PGD 6 prog: RA4/T0CKI 7 RA5/AN4 RC0/T1OSO/T1CKI For vec=0 To 9 RC1/T1OSI RC2/CCP1 LookUp vec, [191,134,219,207,230,237,253,135,255,239], num RC3 RC4 RC5 PORTB=num RC6/TX/CK RC7/RX/DT DelayMS 500 PIC16F870 Next vec For vec=9 To 0 Step -1 LookUp vec,[191,134,219,207,230,237,253,135,255,239],num PORTB=num DelayMS 500 Next vec GoTo prog End

21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18

3. Contador con un display, pero ahora con un vector en el cual almacenaremos los valores correspondientes a cada numero (Para los dos ejemplos el Display es de Ánodo Común) ACTIVE UN DISPLAY DE ANODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 con vectores Device 16F870 Dim vec[10] As Byte Dim pos As Byte vec[0]=191 vec[1]=134 vec[2]=219 U1 9 21 vec[3]=207 OSC1/CLKIN RB0/INT 10 22 OSC2/CLKOUT RB1 vec[4]=230 1 23 MCLR/Vpp/THV RB2 24 RB3/PGM vec[5]=237 2 25 RA0/AN0 RB4 3 26 vec[6]=253 RA1/AN1 RB5 4 27 RA2/AN2/VREFRB6/PGC 5 28 vec[7]=135 RA3/AN3/VREF+ RB7/PGD 6 RA4/T0CKI vec[8]=255 7 11 RA5/AN4 RC0/T1OSO/T1CKI 12 vec[9]=239 RC1/T1OSI 13 RC2/CCP1 RC3 RC4 RC5 RC6/TX/CK RC7/RX/DT

TRISB=%00000000 loop: For pos=0 To 9 PORTB=vec[pos] DelayMS 500 Next GoTo loop End

14 15 16 17 18

PIC16F870

5-ACTIVANDO UN DISPLAY, contador ascendente y descendente posee dos pulsantes que sirven para subir y bajar el conteo

Device 16F870 Dim vec[10] As Byte Dim pos As Byte TRISA = %00000011 TRISB = 0 CMCON=7 vec=0 PORTB=64 inicio: If PORTA.0=0 Then vec=vec+1 LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num PORTB=num If vec>=10 Then vec=0 EndIf pause 200 EndIf If PORTA.1=0 Then vec=vec-1 LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num PORTB=num If vec
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF