#include <16F628A.h>
#FUSES PUT //Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES CPD //Data EEPROM Code Protected
#FUSES PROTECT //Code protected from reads
//#FUSES NOWDT
#use delay(internal=4MHz)
#use FIXED_IO( A_outputs=PIN_A3,PIN_A2,PIN_A1,PIN_A0 )
#use FIXED_IO( B_outputs=PIN_B3,PIN_B2,PIN_B1,PIN_B0 )
#define Pin_DispUnidad PIN_A0
#define Pin_DispDecena PIN_A1
#define Pin_DispCentena PIN_A2
#define Pin_DispMillar PIN_A3
#define Pin_DecoA PIN_B0
#define Pin_DecoB PIN_B1
#define Pin_DecoC PIN_B2
#define Pin_DecoD PIN_B3
int CorreCaso=0;
//Creamos Un Arreglo que Contiene los Numeros del CERO al NUEVE
const int Numeros[10]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110, 0b00000111, 0b00001000, 0b00001001};
void Setup()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32|RTCC_8_BIT); //8.1 ms overflow
set_timer0(100); //Cargamos 100 para un Retardo de 5 MiliSegundos
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
}
void main()
{
Setup();
while(TRUE)
{
}
}
#INT_RTCC
void RTCC_isr(void)
{
switch (CorreCaso)
{
case 0:
output_bit(Pin_DispUnidad,0);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,1);
output_b(Numeros[2]);
CorreCaso=1;
break;
case 1:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,0);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,1);
output_b(Numeros[8]);
CorreCaso=2;
break;
case 2:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,0);
output_bit(Pin_DispMillar,1);
output_b(Numeros[7]);
CorreCaso=3;
break;
case 3:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,0);
output_b(Numeros[9]);
CorreCaso=0;
break;
}
set_timer0(100);
}
Código: C
const int Numeros[10]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110, 0b00000111, 0b00001000, 0b00001001};
Eso que hiciste ahi no tiene sentido ...
#include <16F628A.h>
#FUSES PUT //Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES CPD //Data EEPROM Code Protected
#FUSES PROTECT //Code protected from reads
#use delay(internal=4MHz)
#use FIXED_IO( A_outputs=PIN_A3,PIN_A2,PIN_A1,PIN_A0 )
#use FIXED_IO( B_outputs=PIN_B3,PIN_B2,PIN_B1,PIN_B0 )
#define Pin_DispUnidad PIN_A0
#define Pin_DispDecena PIN_A1
#define Pin_DispCentena PIN_A2
#define Pin_DispMillar PIN_A3
int CorreCaso=0;
void Setup()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32|RTCC_8_BIT); //8.1 ms overflow
set_timer0(100); //Cargamos 100 para un Retardo de 5 MiliSegundos
setup_comparator(NC_NC_NC_NC);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
}
void main()
{
Setup();
while(TRUE)
{
}
}
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(100);
switch (CorreCaso)
{
case 0:
output_bit(Pin_DispUnidad,0);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,1);
output_b(2);
CorreCaso=1;
break;
case 1:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,0);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,1);
output_b(8);
CorreCaso=2;
break;
case 2:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,0);
output_bit(Pin_DispMillar,1);
output_b(7);
CorreCaso=3;
break;
case 3:
output_bit(Pin_DispUnidad,1);
output_bit(Pin_DispDecena,1);
output_bit(Pin_DispCentena,1);
output_bit(Pin_DispMillar,0);
output_b(9);
CorreCaso=4;
break;
case 4:
output_bit(Pin_DispMillar,1);
CorreCaso=0;
break;
}
}
1111 1110
1111 1101
1111 1011
1111 0111
Se repite.char DtD(char x)
{
if(x==0){m=63;}
if(x==1){m=6;}
if(x==2){m=91;}
.
.
.
.
.
.
}