Entradas

I2C MASTER Y ESCLAVO EN PIC CON MIKROC

Imagen
Que tal!!

A continuación les mostraré como trabajar un PIC en modo MASTER y SLAVE con el protocolo I2C.

El PIC que ocupo es el PIC16F1847, el código puede ser ocupado para cualquier microcontrolador, siempre y cuando cambiando el nombre del registro.

Ejemplo: Como ocupo un PIC que tiene en hardware 2 I2C, al momento de configurar los registros indico con cual de los 2 I2c voy a trabajar.

En este caso ocupo el I2C 1 entonces configuro los registros con el 1.

 SSP1ADD = dir_slave;           //Direccion del slave
 SSP1CON1 = 0x36;               //Se configura el registro para trabajar el IC2 con dirección de 7 bits

 INTCON = 0xC0;                 //Se habilita la interrupción por perifericos
 SSP1IE_bit = 1;                //Habilitamos la interrupción por MSSP1
 SSP1IF_bit = 0;                //Bandera por interrupción de MSSP1
 SSP1STAT = 0;                  //Se limpian los estados del registro


Si ocupara el I2C 2, configuro los registros con el 2

 SSP2ADD = dir_slave;           //Dir…

Declarar puertos con etiquetas en MIKRO-C LATX O PORTX

Buen día

Para aquellas personas que necesitan saber mas de los microcontroladores y se confunden  en como se deben de declarar los puertos de los micros, o agregarles etiquetas. Les dejo el siguiente material.
Se puede leer el puerto directamente indicando el numero del pin del puerto a leer. Pero conforme vamos haciendo el programa se nos puede hacer tedioso acordandonos que pin era de que entrada o salida, es por eso que MIKRO C tiene la opción como otros compiladores de declarar las entradas y salidas con etiquetas.

Cada puerto tiene tres registros para su funcionamiento. Estos registros son: Registro TRIS (registro de dirección de datos)Registro PORT (lee los niveles en los pines del dispositivo)Registro LAT (pestillo de salida)

Para pines de salida se declara de la siguiente forma:
sbit LED_D    at LATE7_bit;               //OUT prende apaga LED D

Para pines de entrada se declara de la siguiente forma:
sbit INPUT_1 at RD13_bit;                 //Input 1

Abajo les dejo un ejemplo de cu…

TIMER0 CON MIKRO C

Imagen
Que tal

Les comparto el siguiente programa, el cual trata de la utilización del TMR0, con el cual estamos sacando 2 anchos de pulsos diferentes.

Los anchos de pulsos dependerán de 2 factores, el prescaler asignado el TMR0 y el valor de comparación que se asigne a las variables s1 y s2.


Cada que el TMR0 se desborde, se generará una interrupción, en la cual la variable s1 y s2 incrementaran en 1.

Después de incrementar, preguntara si la variable s1 es mayor al número asignado. Mientras la variable no sea mayor al número asignado, la señal no cambiara de estado.
Lo mismo para la segunda señal.


Puedes copiar el siguiente código y pegarlo en un nuevo proyecto de Mikro c y funcionará.



int s1 = 0;                     //señal 1  --> señal de alta frecuancia
int s2 = 0;                     //señal 2  --> señal de baja frecuancia

config ()                       //Función de configuración
{
 CMCON = 0x07;                  //Desabilitamos los comparadores
 PORTA =    0;                  //L…

Sensor de temperatura con MIKROC

Imagen
Buen día

Les dejo el siguiente programa en MIKROC, el cual es un sensor de temperatura con el PIC16F628A y el sensor DS18B20. A través del protocolo ONE WIRE.



El sensor mide la temperatura y la envía por el puerto serial. Por el pin RB2 del microcontrolador.

El sensor de temperatura se alimenta de forma parasita, por lo que solo se ocupan 2 cables GND y DATOS.


Por el pin RA2, se conecta el cable de datos del sensor de temperatura.


Puedes copiar el siguiente código y pegarlo directamente a un nuevo proyecto en MIKROC y funcionará.




char dato [8];                                             //Variable donde se guardan lso datos enviados por el sensor de temperatura
char txt1 [6];                                             //Variable de conversión de datos de flat a cadena
char cadena1 [] = "Temperatura = ";                                  //Cadena con texto
int tempe = 0;                                             //Variable donde guardamos el dato que sale de 2 bytes menos …

Sensor ultrasonico con MIKRO C

Buen día

A continuación crearemos un rpoyecto con el PIC16F628A y el sensor ultrasónico.