Академический Документы
Профессиональный Документы
Культура Документы
Requisitos:
9 Conocimiento de programación en C. (Declarar sentencias, funciones,
variables, etc.)
Introducción:
¾ En un programa C se
pueden diferenciar varios
elementos.
Funciones:
¾ Bloques funcionales del
programa.
¾ Siempre debe incluirse
una función llamada
main().
Sentencias:
¾ Instrucciones que definen
lo que hace el programa y
la secuencia de ejecución
del mismo.
Comentarios:
¾ Imprescindibles como documentación del código fuente.
Esperar.
Presionar ok.
PUERTOS DE E/S
La primera de las opciones indicadas constituye la manera más directa de trabajar con
los puertos de E/S.
Cuando se usan las funciones integradas del compilador de CCS, el código que produce
el compilador puede variar en cuanto a tamaño y tiempo de ejecución.
Crear un proyecto nuevo usando el PIC Wizard (La forma más sencilla de crear un
proyecto en el compilador PIC C).
En la parte inferior se encuentran las pestañas que nos permiten configurar el PIC.
En el presente proyecto sólo configuramos la primera pestaña (General).
Aquí escogemos el dispositivo que vamos a usar (PIC16F84A).
Fijamos una frecuencia de oscilador de 4Mhz.
void main ()
{
set_tris_b(0x00); // PUERTO B COMO SALIDA
puerto_b = 0; // LIMPIAR SALIDAS DEL PUERTO B
do
{
delay_ms(1000);
//bit_set(puerto_b,7);
//output_high(PIN_B7);
B7 = 1;
delay_ms(1000);
//bit_clear(puerto_b,7);
//output_low(PIN_B7);
B7 = 0;
} while(1); // HACER SIEMPRE
}
// OPCIÓN 3
// Usando las funciones integradas específicas del compilador.
#include "C:\Microcontroladores\parpade_led\parpadeo.h"
#BYTE puerto_b=06
void main ()
{
set_tris_b(0x00); // PUERTO B COMO SALIDA
puerto_b = 0; // LIMPIAR SALIDAS DEL PUERTO B
do
{
delay_ms(1000);
//bit_set(puerto_b,7);
output_high(PIN_B7);
delay_ms(1000);
//bit_clear(puerto_b,7);
output_low(PIN_B7);
} while(1); // HACER SIEMPRE
}
#use delay(clock=4000000)
incdec.c
#include "C:\Microcontroladores\incdecpb\incdec.h"
#byte puerto_a=05 //Direccion del puerto A
#byte puerto_b=06 //Direccion del puerto B
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
INC DEC RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0 0 0 0 0 0 0 0
X 0 0 0 0 0 0 0 1
X 0 0 0 0 0 0 1 0
X 0 0 0 0 0 0 1 1
X 0 0 0 0 0 1 0 0
X 0 0 0 0 0 1 0 1
X 0 0 0 0 0 1 0 0
X 0 0 0 0 0 0 1 1
X 0 0 0 0 0 0 1 0
teclado_lcd.c
#include "C:\Microcontroladores\teclado_lcd\teclado_lcd.h"
#include "C:\Microcontroladores\teclado_lcd\KEYPADCTRL1.c"
#include "C:\Microcontroladores\teclado_lcd\LCD.C"
void main()
{
char key;
switch (key)
{
case '0': lcd_putc("0"); break;
// lcd_putc("0") Will display c on the next position of the LCD
case '1': lcd_putc("1"); break;
case '2': lcd_putc("2"); break;
case '3': lcd_putc("3"); break;
case '4': lcd_putc("4"); break;
case '5': lcd_putc("5"); break;
case '6': lcd_putc("6"); break;
case '7': lcd_putc("7"); break;
case '8': lcd_putc("8"); break;
case '9': lcd_putc("9"); break;
case '#': lcd_putc("#"); break;
case '*': lcd_putc("*"); break;
default: break;
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
// Creado por: IARC //
// Modificado por: Franklin Rodriguez //
// Carlos Molina //
// Programa modificado para que compile en PIC C de CCS. //
//////////////////////////////////////////////////////////////////////////////////////////////////
/******************************
********* DEFINITIONS *********
******************************/
#define KEYP_NUM_ROWS 4 //Numero de filas del teclado
#define KEYP_NUM_COLS 3 //Numero de columnas del teclado
#if defined(__PCH__)
#else
#BYTE PORTA = 5
#BYTE PORTB = 6
#BYTE PORTC = 7
#BYTE PORTD = 8
#BYTE PORTE = 9
/******************************
***** FUNCIONES PROTOTIPO *****
******************************/
char scankeypad();
char keypadread();
char kbd_getkey (void);
//*****************************
char keypadread()
// Find a key, wait for
// it to be released and return.
{ char key;
key = scankeypad();
if (key)
while (scankeypad() != 0)
/* Nothing */ ;
return key;
}
char scankeypad()
// Scan the keypad for a keypress.
// Return 0 for no press or the char pressed.
{ int8 row,col,tmp,idx;
char key=0;
int wait;
TRISB=0x0F;
tmp = PORTB;
// See if any column is active (low):
for (col=0; col<KEYP_NUM_COLS; ++col)
#use delay(clock=4000000)
adc.c
#include "C:\Microcontroladores\analogo_digital\adc.h"
#include <lcd.c>
#include <stdlib.h>
void main()
{
float value,valdisp;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
lcd_init();
while(1)
{
value = read_adc(); //Lee el valor que hay en el canal
valdisp=value*5/1023; //Transformamos el valor a voltaje