Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROPROCESADORES
Fundamentos de programación en C
2017
FUNDAMENTOS DE PROGRAMACIÓN EN C
FUNCIONES
void suma (int d){ //función suma que recibe un parámetro de la función principal
a= 2+d;
}
TIPOS DE DATOS
#include <p18f2550.h>
#USE DELAY (CLOCK = 4000000)
void main (void) {
int auxiliar, contador, A=0;
char dato=5; // se define el carácter ASCII
float division;
}
#include <pic16f88.h>
#USE DELAY (CLOCK = 4000000)
char var1 =2;
char ejemplo (char var2) {
var1= var1+1;
return var1+ var2;
}
void main (void){
char var2=5;
char var3=0;
var2= ejemplo(var2);
var3= ejemplo(var2);
}
OPERADORES LÓGICO-ARITMÉTICOS
OPERADORES LÓGICO
Para el caso se debe tener en cuenta que las operaciones lógicas son
operaciones bit a bit, por lo que hay que realizar las conversiones de
sistema numérico a lugar. La siguiente tabla resume las operaciones
lógicas básicas para dos datos de un bit cada una.
#include <pic16f88.h>
#USE DELAY (CLOCK = 4000000)
void main (void){
char a1, a2, a3, a4, a5, datoA = 15;
char datoB = 6;
char resultado
while(1){
a1 = datoA & datoB;
a2 = datoA |datoB;
a3 = datoA ^ datoB;
a4 = datoB << 1;
a5 = datoB >> 1;
resultado = ~datoA;
}
SENTENCIAS CONDICIONALES
Void main {
int A = 4;
int B = 8;
int C = 6;
int D = 1;
int E;
int CONT = 4;
While (CONT!=0){
If(A<B){E=A;A=B;B=E;}
If(B<C){E=B;B=C;C=E;}
if(C<D){E=C;C=D;D=E:}
cont=cont-1;
}
}
CONDICIONAL IF –ELSE
Ejemplo:
#include <p18f4550.h>
Void main (void)
{
int datoA = 15;
int datoB=6 ; //declaramos e inicializamos los datos para operaciones
int resultado; // declaramos e inicializamos variable para resultados
if (datoA>=datoB) //si datoA mayor que el datoB sumara ambos datos
resultado= datoA+datoB; // suma resultado = 15+6=21
else //si datoA no es mayor que el datoB restara ambos datos
resultado= datoA-datoB; // suma resultado = 15-6=9
}
CONDICIONAL SWITCH
Switch (variable){
Case 0: instrucción;
Case 1: instrucción;
Case 2: instrucción;
.
.
Case n: instrucción;
Default: instrucción; }
Ejemplo:
#include <p18f4550.h>
#USE DELAY (CLOCK = 4000000)
Void main (void){
Int datoA = 15; int datoB=6 ; //declaramos e inicializamos los datos para operaciones
Int resultado, a=0; // declaramos e inicializamos variable para resultados
switch (a){
Case0: resultado= datoA+datoB ; break;
Case1: resultado= datoA-datoB; break;
Case2: resultado= datoA*datoB; break;
Default resultado= datoA/datoB; }
a++;
}
CONDICIONAL WHILE
Ejemplo:
While (1) {
Instrucciones;
}
void main {
Int CONTMIN=0;
Int CONTSEG=0;
While (CONTMIN<60){
While (CONTSEG<60){
CONTSEG++;
}
CONTMIN++;
}
}
CONDICIONAL FOR
Ejemplo:
Int i,a=1;
For(i=0;i<10;i++)
{
a=a*2;
}
ARREGLOS
Ejemplo:
int dato,j;
int i[]={1,3,5,7,9,11,13,15};
For (j=0;j<9;j++){
Dato= i[j]
}
void main {
Int PROMEDIO=0;
Int CONT=0;
int DATOS[]={1,3,7,9,11};
While (CONT<5){
PROMEDIO=DATOS[CONT]+PROMEDIO;
CONT++;
}
PROMEDIO=PROMEDIO/5;
}
LIBRERIAS
#include <nombre_libreria.h>
DEFINICIONES
Ejemplo:
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_INTOSCIO & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF)
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_HS & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF);
1 = BOR habilitado
0 = BOR deshabilitado
Al habilitar el Reinicio por Apagón (Brown-out Reset) éste habilita
automáticamente el Temporizador de Encendido (Power-up Timer
/PWRTE), es así que se recomienda directamente habilitar este bit
(/PWRTE) siempre que se habilite el Reinicio por Apagón.
1 = PWRT desabilitado
0 = PWRT habilitado
Bit de Selección de Función del Pin /MCLR (MCLR Pin Function Select
bit): MCLRE
1 = La función del pin es /MCLR
0 = La función del pin es de E/S digital. /MCLR está internamente
conectado a VDD.
Recomendaciones:
- En microcontroladores que multiplexan (comparten) en un mismo
pin la función /MCLR con un bit de E/S u otra función, se debe
tener cuidado al deshabilitar /MCLR debido a que algunos
programadores (especialmente los llamados "clonados") encuentran
problemas en volver a programar un microcontrolador cuyo /MCLR
ha sido deshabilitado.
- Por precaución dejar en lo posible habilitado el /MCLR.
Ejemplo de definición:
/* Bits de configuración*/
#pragma config FOSC = INTOSCIO_EC // Oscilador interno, uso de pin
RA6 activado, El USB usa Clock Externo.
#pragma config WDT = OFF //desactivamos watchdog timer
#pragma config PWRT = ON // activamos power up timer
/*declaración de funciones*/
MICROPROCESADORES
Compilador CCS en lenguaje C
2017
INTRODUCCIÓN
#include <18f4550.h>
#use delay(clock=4000000)
#fuses XT, NOWDT
#use standard_io B
#device PIC18f4550
#device PIC18f4550
#fuses XT, NOWDT, PU, NOPROJECT
#include <18f4550.h>
#fuses XT, NOWDT, PUT, NOPROJECT
#INCLUDE <18f4550.h>
#use delay(closck=4000000)
#asm
bsf TATUS,RP0
Movlw 0x8
Movwf PORTB
Bcf STATUS,RP0
#endasm
ENTORNO DE TRABAJO
COMANDO DE
MANEJO DE BARRA DE
FICHEROS COMANDOS
BARRA DE
SUBCOMANDOS
PESTAÑA DEL
PROGRAMA
ZONA DE
CÓDIGO
BARRA DE
VENTANAS
AUXILIARES
BARRA DE INFORMACIÓN
MACROS
GESTIÓN DE PUERTOS EN C
Escritura de puertos:
Lectura de puertos:
Manejo de sentencias:
TRISD = 0x0F;
If (PORTD & 0xOF) PORTD |= 0xA0; //comprueba los 4 bits de
//de menor peso del puerto D
//si son 1111 saca por los 4 bits
//más significativos el dato
//1010
Existen unas funciones de C que permiten trabajar bit a bit con los
registros o variables definidas previamente. Estas funciones son las
siguientes:
Ejemplo 1: Configure los pines RB1 como salida y RB0 como entrada. La
salida debe tener el mismo valor que la entrada, utilice un interruptor de
entrada y un led como salida. El montaje se presenta a continuación.
#define PIN_A0 40
#define PIN_A1 41
output_low(pin); //pin a 0
output_high(pin); //pin a 1
output_bit(pin,valor); //pin al valor especificado
output_toogle(pin); //complementa el valor del pin
output_float(pin); //pin de entrada, quedando a tensión flotante
input_state(pin); //lee el valor del pin sin cambiar el sentido
input(pin); //lee el valor del pin