Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje C Mplab X Mplab Xc8 C Compiler Germán Andrés Zapata Puerta
Lenguaje C Mplab X Mplab Xc8 C Compiler Germán Andrés Zapata Puerta
MPLAB X
{ MPLAB XC8 C COMPILER
Tipo Rango
ASIGNACIÓN (=)
+ Suma
- Resta
* Multiplicación
/ División
-- Decremento
OPERADORES RELACIONALES
Operador Operación
== igual
!= no igual (diferente de)
> mayor que
< menor que
>= mayor que o igual a
<= menor que o igual a
OPERADORES DE
ASIGNACIÓN
Operador Operación
= Asigna el valor a una variable
ESTRUCTURAS DE CONTROL
DECISIÓN O SELECTIVAS
if, else, switch (case)
REPETITIVAS (CICLOS)
if (EXPRESIÓN)
{
INSTRUCCIÓN 1;
INSTRUCCIÓN 2;
…….
}
do
{
INSTRUCCIÓN 1;
INSTRUCCIÓN 2;
…….
}
while (EXPRESIÓN);
CICLO FOR (PARA)
__delay_ms(tiempo en miliseg.);
__delay_us(tiempo en microseg.);
void main()
{
….
C = suma(A,B);
….
}
VECTORES
Los vectores son espacios de memoria en los cuales se pueden almacenar
valores que luego serán utilizados en el programa.
Se definen así:
Tipo_de_dato Nombre [#_de_elementos] = {elemento1,elemento2,….elementoN};
Ejemplo:
int vect[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X67};
VECTORES
int vect[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X67};
int conta;
void main()
{
….
for (conta=0;conta<=9;conta++)
{
PORTB = vect[conta];
__delay_ms(1000);
}
….
}
VECTORES
Display 7 segmentos.
Matrices de LEDS.
PANTALLAS LCD
NOTA: Hay que copiar los archivos: lcd.h y lcd.c en la carpeta del
proyecto, ejemplo: c:\mplabx\lcd\lcd.x
Además el archivo lcd.c que se copio en la carpeta del proyecto
hay que adicionarlo a source files (archivos fuentes) y el archivo lcd.h que
se copio en la carpeta del proyecto hay que adicionarlo a header files
(archivos cabeza).
PANTALLAS LCD
PANTALLAS LCD
PANTALLAS LCD
En el proyecto se
debe adicionar:
En Header Files:
lcd.h
En Source Files:
lcd.c
PANTALLAS LCD
#include <pic.h>
#include <htc.h>
#include "lcd.h“ //Se debe adicionar para el manejo del LCD
void main()
{
lcd_init();
lcd_goto(0); // selecciono la primera línea
lcd_puts("PRUEBA LCD...");
lcd_goto(0x40); // selecciono la segunda línea
lcd_puts("HOLA MUNDO");
while (1);
}
NOTA:
lcd_puts(“texto”); //lcd_puts: envía texto
lcd_putch(variable); //lcd_putch: envía variables (variable+48)=ASCII
PANTALLAS LCD
TECLADO MATRICIAL
Funcionan como una matriz: por filas y
columnas
Generalmente se van multiplexando las filas y
escaneando las columnas.
Se deben colocar resistencias en las columnas a
(1024)
Resolución = 5V/1024 = 4.88mV/bit
Ver Datasheet
CONVERSOR ANÁLOGO / DIGITAL
(C A/D)
CONFIGURACIÓN TÍPICA:
ADCON0 = 0B11000001;
Reloj = 11 (RC interno 500KHz)
Canal = 0000 = AN0 = RA0
GO = 0 (conversión no iniciada)
ADON = 1 (Módulo C A/D encendido)
CONVERSOR ANÁLOGO / DIGITAL
(C A/D)
CONFIGURACIÓN TÍPICA:
ADCON1 = 0B10000000;
ADFM = 1 (Justificación a Derecha)
VCFG1 = 0 (Vref- = VSS)
VCFG0 = 0 (Vref+ = VDD)
PR2
Config. del Periodo
T2CON
CCPR1L
Config. del Ancho del Pulso
TMR2
Ver Datasheet
PWM
(MODULACIÓN POR ANCHO DE PULSO)
CONFIGURACIÓN TÍPICA:
CCP1CON = 0B00001100;
P1M = 00 (Salida simple – no se va a utilizar
puente H)
DC1B = 00 (Los LSB del Duty en 0)
CCP1M = 1100 (Modo PWM)
PWM
(MODULACIÓN POR ANCHO DE PULSO)
CÁLCULO DEL PERIODO:
CONFIGURACIÓN TÍPICA:
PR2 = 99;
T2CON = 0B00000100;
TMR2ON = 1 (Enciende TMR2)
T2CKPS = 00 (Prescaler = 1)
01 (Prescaler = 4)
1X (Prescaler = 16)
PWM
(MODULACIÓN POR ANCHO DE PULSO)
}
PWM
(MODULACIÓN POR ANCHO DE PULSO)
U1
1 25
RE3/MCLR/VPP RB4/AN11/P1D
26
RB5/AN13/T1G
2 27
0 3
RA0/AN0/ULPWU/C12IN0-
RA1/AN1/C12IN1-
RB6/ICSPCLK
RB7/ICSPDAT
28
4
RA2/AN2/VREF-/CVREF/C2IN+
5 11
0 6
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
12
7 13
RA5/AN4/SS/C2OUT RC2/CCP1/P1A
10 14
RA6/OSC2/CLKOUT RC3/SCK/SCL
9 15
RA7/OSC1/CLKIN RC4/SDI/SDA
16
RC5/SDO
21 17
RB0/AN12/INT RC6/TX/CK
22 18
RB1/AN10/P1C/C12IN3- RC7/RX/DT A
23
RB2/AN8/P1B
24
RB3/AN9/PGM/C12IN2- B
PIC16F883
C
D
PWM
(MODULACIÓN POR ANCHO DE PULSO)
MÓDULO USART
(RECEPCIÓNTRANSMISIÓN SINCRONA
ASINCRONA UNIVERSAL)
TXREG
Reg. de transmisión y recepción
RCREG
Ver Datasheet
MÓDULO USART
CÁLCULO DE LA VELOCIDAD (BAUDIOS):