No, no se es la primera vez lo que veo mi carrera no es electronica, y estoy aprendiendo todo sobre la marcha.
Suponiendo que sabes como configurar puertos, timers e interrupciones, el planteamiento del programa es sencillo.
#include <htc.h>
#define _XTAL_FREQ 1000000 //reloj del sistema de 1MHz
void interrupt timer(void)
{
PORTB = PORTB ^ 0b00110000; // invierte bits, necesario para encender y apagar los leds
//ciclosTimer=tiempo(250000microseg)/[tiempoInstruccion(4microseg)*cicloPreescales(256)]
//TMR0=(256-ciclos(244))=12
TMR0 = 12; //El timer interrumpe cada 12 incrementos.
T0IF = 0; //Flag de estado de interrupción por desborde del Timer0. (0 = El registro TMR0 no ha desbordado. 1 = El registro TMR0 ha desbordado (requiere limpiado por soft)).
}
//aca no se como seguir
void main ()
{
Mira aquí para el timer y la interrupción:
http://www.aquihayapuntes.com/indice-practicas-pic-en-c/uso-del-tmr0-como-temporizador.html
http://picfernalia.blogspot.com/2012/06/uso-de-temporizadores-timers.html
Y aquí para la interrupción vinculada a un puerto, para el pulsador:
http://www.aquihayapuntes.com/indice-practicas-pic-en-c/interrupcion-cambio-de-estado-rb4-rb7.html
En cuanto tengas configurado el timer con su interrupción, el resto es muy sencillo.
#include <htc.h>
#define _XTAL_FREQ 1000000 //reloj del sistema de 1MHz
void interrupt timer(void)
{
PORTB = PORTB ^ 0b00110000; // invierte bits, necesario para encender y apagar los leds
//ciclosTimer=tiempo(250000microseg)/[tiempoInstruccion(4microseg)*cicloPreescales(256)]
//TMR0=(256-ciclos(244))=12
TMR0 = 12; //El timer interrumpe cada 12 incrementos.
T0IF = 0; //Flag de estado de interrupción por desborde del Timer0. (0 = El registro TMR0 no ha desbordado. 1 = El registro TMR0 ha desbordado (requiere limpiado por soft)).
}
void main ()
{
TRISB = 0b11001111; //Config puerto B /habilita las salidas de los LED
TRISA = 0b00011; //Config puerto A /habilita como entradas los pulsadores
RB8 = 1; //enciendo los 8 leds
RB7 = 1;
RB6 = 1:
RB5 = 1;
RB4 = 1;
RB3 = 1;
RB2 = 1;
RB1 = 1;
Creo que está usando el antiguo y obsoleto compilador PICC de Hi-Tech.Si es ese mismo estoy usando el Hi-tech C compiler for pic10/12/16 MCUs y estoy usando la version Lite, quieres que lo comparte con un link de mega? no se si los moderadores me dejarian hacer eso, es que estoy obligada a usar ese compilador y simulador. por eso quiero resolver el problema con esa herramienta.
Si es así podría decirnos cuál versión estás usando? Lite, Standard, Pro?
elreypic.
sere curioso, busque "compilador C PICC" y me aparecen referencias vagas a varios compiladores, ¿que compilador estás empleando?Hi-tech C compiler for pic10/12/16 MCUs y estoy usando la version Lite
Gracias me genera mas confusion lo que dices ahora :( pero supongo que con practica entedere un poco mas estos conceptos.
Es uno de los tantos problemas del mundo PIC, hay unos cuantos compiladores de C, y cada uno escribe las instrucciones como le da la gana, no hay unanimidad. En el mundo ARM eso no pasa, todos con GCC y además gratis.
Tendrás que buscar ejemplos de código fuente para ese compilador, e ir sacando las instrucciones básicas que necesitas para tu proyecto. Configuración y uso de los puertos de entrada/salida, configuración de un timer vinculado a una interrupción, y si quieres (parece que no te lo exigen) usar una interrupción para leer el estado del pulsador.
Busca por Google +"Hi-Tech PICC " +"PIC16F84" +"interrupts" +"timer" +"source example", o algo así, y ve extrayendo de cada ejemplo lo necesario para montar tu programa. Aquí, en el foro, también creo que hay posts sobre ese compilador, con fuentes que te pueden servir, usa la opción de búsqueda.
Lo que no haría es esto que pusiste arriba.Código: C
RB8 = 1; //enciendo los 8 leds RB7 = 1; RB6 = 1: RB5 = 1; RB4 = 1; RB3 = 1; RB2 = 1; RB1 = 1;
Seguro que con una sola instrucción puedes activar o desactivar los 8bit de un puerto, sin necesidad de hacerlo uno a uno. También se pueden usar operadores Bitwise de desplazamiento (>>, <<) para ir barriendo el encendido de los LED, con una sola y única instrucción, sin necesidad de usar IF para determinar que LEDs hay que activar o desactivar.
Gracias me genera mas confusion lo que dices ahora :( pero supongo que con practica entedere un poco mas estos conceptos.
Respecto a subir un link con el compilador que estoy usando se puede?porque el que estoy usando en la web no se encuentra, lo subi a mediafire y sin publicidades ni cosas molestas.