Dios!!! q manera de rabiar con la programacion. Nocturno, necesito de tu gran sabiduria T_T
Hice lo que me dijiste, pero no se por que no funciona... en que me estoy equivocando?
Por favor ayuda! Estoy a punto de largar el giroplay por la ventana! jaja
Muchas gracias!!
Este es el codigo que tengo:
#include <16f873a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=20000000)
#byte port_b=6
#use fast_io(b)
#define pixeles 60 //total de pixeles horizontales
//periodo de revolucion y periodo del timer1
float T_rev,T_tim;
int timer=0xFFFF,contador=0;
const float usxtick = 0.2;
int num[10][4]={{0x7E,0x91,0x89,0x7E}, //0
{0x00,0x82,0xFF,0x80}, //1
{0xE2,0x91,0x89,0x86}, //2
{0x81,0x89,0x95,0x63}, //3
{0x18,0x14,0x12,0xFF}, //4
{0x8F,0x89,0x89,0x71}, //5
{0x7C,0x92,0x91,0x60}, //6
{0xE1,0x11,0x09,0x07}, //7
{0x76,0x89,0x89,0x76}, //8
{0x06,0x89,0x69,0xE3}}; //9
int espacio[4]= {0,0,0,0};
void escribir(char* letra)
{
int i;
for(i=0;i<=3;i++) //escribimos los 4 pixeles
{
port_b=letra[i]; //escribimos un pixel
delay_us(T_tim); //lo exponemos el tiempo calculado
}
}
#int_ccp1
void handle_ccp1_int()
{
timer=0xFFFF-(T_rev/pixeles)/usxtick;
T_tim=timer*usxtick;
if(contador!=pixeles)
T_rev=contador*T_tim;
contador=0;
set_timer1(timer); //reiniciamos timer1
}
#int_timer1
void handle_timer1_int()
{
contador++;
set_timer1(timer); //reiniciamos timer1
}
void main()
{
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(int_ccp1);
enable_interrupts(int_timer1);
enable_interrupts(global);
set_tris_b(0x00);
port_b=0x00;
while(TRUE)
{
escribir(num[0]);
escribir(espacio);
escribir(num[1]);
escribir(espacio);
escribir(num[2]);
escribir(espacio);
escribir(num[3]);
escribir(espacio);
escribir(num[4]);
escribir(espacio);
escribir(num[5]);
escribir(espacio);
escribir(num[6]);
escribir(espacio);
escribir(espacio);
}
}