Explicaré el uso de CCS con un ejemplo que hará parpadear un LED en un PIC 16F628A.
El entorno de programación es sencillo y bastantes intuitivo, para empezar a programar un microcontrolador debemos hacer click en PIC Wizard.
Donde nos pedirá guardar nuestro proyecto con extension *.pjt, luego saldrá una ventana con muchas opciones que a continuación explicaré:
1. Menu principal, configuraciones del microcontrolador.
2. Modelo de microcontrolador que se usará
3. Frecuencia del oscilador(cristal) con que funcionará el microcontrolador. En este caso usé 4MHz debido a que el PIC 16F628A tiene un oscilador RC interno lo que nos ahorra este componente. Consultar Datasheet de otros modelos.
4. Se selecciona con que tipo de oscilador trabajará el microcontrolador, en este caso con el interno(Internal RC Osc).
Luego en el menu 1 en Communications desactivaremos USE RS232 porque no será relevante para nuestro programa de ejemplo. En otras secciones explicare como transmitir datos con este protocolo.
Ahora apretamos OK se generará el codigo necesario para empezar a programar.
-----------------------------------------------------
#include "C:\Users\Desktop\programa ejemplo\main.h"
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
}
-------------------------------------------------------
La linea en rojo indica que en esa dirección estan las configuraciones de los FUSES, sin embargo no recomiendo dejarlo expresado de esa forma debido a que si compilamos en otro computador tendremos conflicto al encontrar ese archivo. Por lo que recomiendo abrir con bloc de notas el archivo con extencion *.h y copiar todos los fuses dentro del programa original, quedando así:
-------------------------------------------------------
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC //Internal RC Osc
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=4000000)
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
}
-------------------------------------------------------
Ahora que hemos configurado todo podemos escribir nuestra primera linea de codigo, el cual irá desde donde dice // TODO: USER CODE!! hasta la llave "}"
Utilizaremos el ciclo while para que nuestra acción se realice hasta que se quite la energia del micro.
Utilizaremos la instruccion output_high(pin_xy) y output_low(pin_xy) para cambiar el estado de algun pin y del puerto x.
También ocuparemos la instrucción delay_ms(x) que nos permitirá hacer una pausa expresada en mili segundos.
Entonces el código que agregaremos será:
while(true){
output_high(pin_a0); //Ponemos un 1 en el pin A0
delay_ms(500); //Esperamos 500ms
output_low(pin_a0); //Ponemos un 0 en el pin A0
delay_ms(500); //Esperamos 500ms
}
Ahora en la pestaña COMPILE hacemos click en COMPILE y nuestro programa esta listo para ser probado en PROTEUS que veremos en la siguiente publicación.
No hay comentarios:
Publicar un comentario