nayakajit87
Member level 5
I have PIC16F886 4mhz crystal 1ms timer interrupt.I have code working as below. Now currently facing updating ms and Sec parameter.
the min and sec parameter will update properly but not in msec and sec
the min and sec parameter will update properly but not in msec and sec
Code:
void interrupt isr(void) {
asm("clrwdt");
if (TMR1IF) {
TMR1IF = 0;
// TMR1H = 0x3C;
// TMR1L = 0xB0;100ms
TMR1H = 0xFE;
TMR1L = 0x0C;// timer interrupt for 1ms
if(Top_Display>Bottom_Value)
{
if(LED_SS==0)
{
Bottom_Value=(Sec*100)+MSec;
}else
if(LED_MS==0)
{
Bottom_Value=(Min*100)+Sec;
}else
if(LED_HM==0)
{
Bottom_Value=(Hour*100)+Min;
}
}else if(Top_Display==Bottom_Value)
{
}
MSec++;
if(MSec>1000)
{
MSec=0;
Sec++;
if(Sec>=59) {
Sec=0;
Min=Min+1;
if(Min>=59) {
Min=0;
Hour=Hour+1;
if(Hour>99) {
Hour=0;
}
}
}
}
Display();
}
}
void Process_RUN_MODE()
{
//Display_Faults(12,18,27,26,18,11,24,26);
if(EEPROM_Read_Flag==1)
{
READ_EPROM();EEPROM_Read_Flag=0;
}
Top_Display=1234;
LED_MS=0;
Key_CHK_RESET();
if(LED_MS==0)
{
Dissect(Top_Display);
Float_Value=SplitFloat(Top_Display);
InG_value=SplitInt(Top_Display);
Dissect_2(Bottom_Value);
}
}
Void main()
{
while(1)
{
Process_RUN_MODE();
}
}
void Dissect_2(unsigned int Value) // Spliting of process value in digits form
{
unsigned char a,Temp;
for(a = 4;a >= 1 ; a--)
{
Temp = Value%10;
Value = Value/10;
LEDBuffer_1[a-1] = DISPTABLE[Temp];
}
}
void Dissect(unsigned int Value) // Spliting of process value in digits form
{
unsigned char a,Temp;
for(a = 8;a >= 5 ; a--)
{
Temp = Value%10;
Value = Value/10;
LEDBuffer_1[a-1] = DISPTABLE[Temp];
}
}