Beruflich Dokumente
Kultur Dokumente
GRABACION DE
MICROCONTROLADORES “PIC”
APLICADOS A LA ROBOTICA
Por defecto del fabricante este recomienda que como máximo de carga para una salida del
microcontrolador solo se puede alimentar dos led’s. Si por algún motivo se desea mayor
corriente se utiliza un transistor.
Para realizar el cálculo de la resistencia para energizar el led debemos saber lo siguiente:
Ur = Ut - Uled
Ur = 5V – 1.5V
Ur = 3.5V
EMPEZANDO CON LA
PROGRAMACION
Para poder entender la diferencia entre los dos lenguajes de
programación, se debe tener en claro
qué es un lenguaje de alto nivel y qué es un lenguaje de bajo nivel, a
través del siguiente cuadro
podemos ver los niveles de programación.
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
Debemos entender que declaraciones son cada una de las
palabras que el compilador pbp 2.47
tiene reservado para realizar una tarea específica, las más
utilizadas son: HIGH, LOW, PAUSE,
GOSUB, GOTO, LCDOUT, SERIN, SEROUT, FOR, NEXT, IF, THEN,
SOUND, END, un
ejemplo:
HIGH portb.3
A continuación las 83 instrucciones disponibles con una breve explicación.
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE ADC_BITS 8 'Number of bits in ADCIN result
DEFINE ADC_CLOCK 3 'ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds
DEFINE BUTTON_PAUSE 10 'Button debounce delay in ms
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
DEFINE CHAR_PACING 1000 'Serout character pacing in us
DEFINE DEBUG_REG PORTB 'Debug pin port
DEFINE DEBUG_BIT 0 'Debug pin bit
DEFINE DEBUG_BAUD 2400 'Debug baud rate
DEFINE DEBUG_MODE 1 'Debug mode: 0 = True, 1 = Inverted
DEFINE DEBUG_PACING 1000 'Debug character pacing in us
DEFINE DEBUGIN_REG PORTB 'Debugin pin port
DEFINE DEBUGIN_BIT 0 'Debugin pin bit
DEFINE DEBUGIN_MODE 1 'Debugin mode: 0 = True, 1 = Inverted
DEFINE HPWM2_TMR 1 'Hpwm 2 timer select
DEFINE HPWM3_TMR 1 'Hpwm 3 timer select
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE HSER_BAUD 2400 'Hser baud rate
DEFINE HSER_CLROERR 1 'Hser clear overflow automatically
DEFINE HSER_SPBRG 25 'Hser spbrg init
DEFINE HSER_RCSTA 90h 'Hser receive status init
DEFINE HSER_TXSTA 20h 'Hser transmit status init
DEFINE HSER_EVEN 1 'Use only if even parity desired
DEFINE HSER_ODD 1 'Use only if odd parity desired
DEFINE HSER_BITS 9 'Use 9th bit for parity
DEFINE HSER2_BAUD 2400 'Hser(2) baud rate
DEFINE HSER2_CLROERR 1 'Hser(2) clear overflow automatically
DEFINE HSER2_SPBRG 25 'Hser(2) spbrg init
DEFINE HSER2_RCSTA 90h 'Hser(2) receive status init
DEFINE HSER2_TXSTA 20h 'Hser(2) transmit status init
DEFINE HSER2_EVEN 1 'Hser(2) Use only if even parity desired
DEFINE HSER2_ODD 1 'Hser(2) Use only if odd parity desired
DEFINE HSER2_BITS 9 'Hser(2) Use 9th bit for parity
DEFINE I2C_HOLD 1 'Pause I2C transmission while clock held low
DEFINE I2C_INTERNAL 1 'Use for internal EEPROM on 16CExxx and 12CExxx
DEFINE I2C_SCLOUT 1 'Set serial clock to bipolar instead of open-collector
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE I2C_SLOW 1 'Use for >8MHz OSC with standard speed devices
DEFINE I2C_SDA PORTA,0 'Data pin for I2C (12-bit core only)
DEFINE I2C_SCL PORTA,1 'Clock pin for I2C (12-bit core only)
DEFINE LCD_DREG PORTA 'LCD data port
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTA 'LCD register select port
DEFINE LCD_RSBIT 4 'LCD register select bit
DEFINE LCD_EREG PORTB 'LCD enable port
DEFINE LCD_EBIT 3 'LCD enable bit
DEFINE LCD_RWREG PORTE 'LCD read/write port
DEFINE LCD_RWBIT 2 'LCD read/write bit
DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us
DEFINE LOADER_USED 1 'Bootloader Used
DEFINE NO_CLRWDT 1 'Forces manual use of CLRWDT
DEFINE ONINT_USED 1 'Serves as LOADER_USED for versions before 2.33
DEFINE PULSIN_MAX 1000 'Maximum counts allowed before pulsin times out
DEFINE OSC 4 'Oscillator speed in MHz: 3(3.58) 4 8 10 12 16 20 24 25 32 33 40
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE OSCCAL_1K 1 'Set OSCCAL for PIC12C671/CE673
DEFINE OSCCAL_2K 1 'Set OSCCAL for PIC12C672/CE674
DEFINE SER2_BITS 8 'Set number of data bits for Serin2 and Serout2
DEFINE SER2_ODD 1 'Use odd parity instead of even parity
DEFINE SHIFT_PAUSEUS 50 'Slow down the Shiftin and Shiftout clock
DEFINE USE_LFSR 1 'Use 18Cxxx LFSR instruction
DEFINE XINXLAT_OFF 1 'Don’t translate Xin commands to BS2 format
DEFINE XOUTXLAT_OFF 1 'Don’t translate Xout commands to BS2 format
MICROCODE ESTUDIO
Antes o después de realizar el programa seleccionamos el microcontrolador a ser
utilizado en el programa MICROCODE STUDIO que se encuentra que se encuentra en
la tercera barra de herramientas en la parte superior izquierda por defecto se
encuentra el pic16f628, nosotros lo cambiamos a pic16f628a.
MICROCODE ESTUDIO
Si el programa no contiene errores la compilación será correcta y en la parte inferior izquierda aparecerá un mensaje
indicando las palabras utilizada de la memoria del pic16f628a.
PROTEUS
En la cuarta línea que indica “programa file” hacemos clic en el icono de la carpeta abierta,
para cargar el programa buscamos el archivo. HEX donde guardamos el programa compilado
del MICROCODE STUDIO
PROTEUS
Con esto termina la conexión ahora solo queda cargar el programa al
pic, para esto damos doble clic en el microcontrolador y nos aparecerá
una venta:
PROTEUS
PROTEUS
Clic sobre el archivo y abrir, después el
programa vuelve a la anterior ventana donde
ajustamos el valor del cristal a utilizar en la
quinta línea en este caso de 4Mhz.
PROTEUS
Y por último OK para cerrar la ventana y play
para empezar la simulación.
Una vez cargado se podrá apreciar que los números hexadecimales encontrados
en “Program Memory” cambian.
GRABANDO EL PROGRAMA AL
PIC
Nombre
Etiquetar o nombrarde los puertos para
una puerta.
Las formas de etiquetar una puerta son varias, algunas ya vimos
los
antesdiferentes
pero las mostramos a continuación.
Microcontroladores
Led
Rojo
VAR
VAR
Portb.0
Porta.0
(12fxx,16fxx,18fxx)
EJEMPLOS
Diseñar una señal de tipo cuadrada con ciclo útil de 50% on y 50% off frecuencia
de 1 Hz (Prender y apagar un led con lapso de un 1s)
los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
Las diferencias son LED VAR PORTB.3 con esta línea etiquetamos a portb.3 con el nombre de
led, HIGH LED con esta línea encendemos el led y LOW LED apagamos el led. En este
ejemplo no se colocó la instrucción END ya que tenemos GOTO INICIO y el programa se
convertirá un ciclo sin fin.
El programa es el siguiente:
EJEMPLOS
Programación con números binarios.
s Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Juegos de luces.
Diseñar una secuencia la intercalaremos las puertas del puerto B (0,2,4,6) encendidos y
(1,3,5,7) apagados por medio segundo, después de este (0,2,4,6) se apagaran y (1,3,5,7) se
Nombre de los puertos para
encenderán por otro medio segundo después este proceso se repetirá.
los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Diseñar un sistema de control de trafico (semáforo) en el cual tenga la calle 1
tenga 12s para conducir, 3 s para preparar el arranque y 12s para no circular.
La calle 2 12 s para no circular, 3 para preparar motor y 12 para circular.
Nombre de los puertos para
Utilizar la asignación de variables de tipo “VAR”
los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Diseñar un sistema de arranque de 8 motores no simultaneo, el arranque de
motor deberá ser cada 2 segundo y cuando el ultimo motor se apague
después de 11 segundos prender todos durante 10s (no tomar en cuentas la
Nombre de los puertos para
corriente de arranque por motor, ni la caída de tensión en el enganche)
los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
SUBRUTINAS ESPECIALES
SUBRUTINAS ESPECIALES.-
Una subrutina especial como asi la podriamos
llamar seria la “GOSUB y el RETURN”
Ejemplo.-
Inicio:
Portb.0=%00000001
GUSUB tiempo
Portb.1=%11111111
GOSUB tiempo
Tiempo:
Pause 1000
RETURN
INSTRUCCIONES FOR- NEXT
La instrucción FOR-NEXT permite a un programa realizar n veces lo programado y su sintaxis es la siguiente:
Donde R es la variable asignada con el valor de 1 hasta 5, es decir se realizara 5 veces lo que este dentro del cuerpo del programa.
Ejemplo
Diseñar las luces de desplazamiento de izquierda a derecha, 7 veces a la izquierda y 7 a la derecha con intervalos de tiempo de 200ms.
ENTRADAS
Proyectos con pulsadores.
Instrucciones IF-THEN-ELSE-ENDIF
Las siguientes instrucciones son muy utilizadas en los lenguajes de alto nivel, en el caso de
la programación de microcontroladores se utilizaran para diversas aplicaciones una de ellas
seran lo pulsadores.