Same thing...
Here it's complite code
If i don't use PBP for clearing and increment variable hereCode:DEFINE OSC 4 ' We're using a 10MHz oscillator Define INTHAND myint ' Define interrupt handler DEFINE HSER_BAUD 2400 OSCCON=%01010110 OSCCON2.2=0 OSCTUNE.7=1 OSCTUNE.6=1 REFCON0=0 REFCON1=0 ADCON1=0 ADCON2=0 ANSEL =0 ANSELH=0 CM1CON0=0 CM2CON0=0 SRCON0=0 SRCON1=0 WPUA=0 WPUB=0 WDTCON=0 SLRCON=0 RCON.7=0 RCON.6=0 UCON=0 IOCA=0 IOCB=0 T0CON=0 T1CON=%00001111 T2CON=0 T3CON=%00000110 INTCON=192 INTCON2=0 INTCON3=0 PIR1=0 PIR2=0 PIE1=1 PIE2=2 IPR1=0 IPR2=0 porta=0 portb=0 portc=0 trisa=255 trisb=255 trisc=255 'RTC_________________________ Seconds VAR BYTE bankA ' variables within myint must be in bank 0. Minutes VAR Byte bankA ' Elapsed minutes Hours var byte bankA Day var byte bankA Month var byte bankA Year var byte bankA Ticks var byte bankA DMonth var byte bankA 'IO________________ SYMBOL Ul1 =PORTB.5 SYMBOL Ul2 =PORTB.6 SYMBOL Pull =PORTC.4 SYMBOL UWp =PORTC.3 'TRIS______________ INPUT Ul1 INPUT Ul2 OUTPUT Pull INPUT uwp 'Brojaci___________ Brojac VAR LONG[3] bankA PomBroj VAR WORD[2] bankA Mtp1 VAR BYTE[2] bankA Mtp2 VAR BYTE[2] bankA Add VAR BYTE[2] bankA Xn VAR BYTE bankA Xs VAR BYTE bankA Wp VAR BIT bankA Trf var byte bankA year=0 month=0 day=0 hours = 4 minutes = 0 ' Pre Set time here then add seconds to clock using button seconds = 0 ticks=0 PomBroj[0]=0 PomBroj[1]=0 Brojac[0]=0 Brojac[1]=0 mtp1[0]=1 mtp1[1]=1 mtp2[0]=1 mtp2[1]=1 add[0]=1 add[1]=1 Trf=0 GoTo mainloop @myint If PIR1.0 =1 then TMR1H=252 @ INCF _Ticks,F if ticks=32 then @ INCF _Seconds,F @ CLRF _Ticks if seconds > 59 then @ CLRF _Seconds @ INCF _Minutes,F if minutes > 59 then @ CLRF _Minutes @ INCF _Hours,F if hours > 23 then @ CLRF _Hours @ INCF _Day,F If month=2 then If year//4<>0 then DMonth=29 else DMonth=28 endif else Dmonth=30+month.0 endif If day>Dmonth then @ CLRF _Day @ INCF _Month,F If month>12 then @ CLRF _Month @ INCF _Year,F if year>99 then year=0 endif endif endif endif endif endif Pull=1 TMR3H=255 TMR3L=207 T3CON=%00000111 @ CLRF PIR1 endif if PIR2.1=1 then T3CON=%00000110 Wp= Wp & uwp Xn.0=ul1 Xn.1=ul2 Pull=0 IF (Xn.0<Xs.0 AND Trf=0) OR (Xn.0<Xs.0 AND Xn.1=1 AND Trf=1) THEN @ INCF _PomBroj,F 'PomBroj[0] = PomBroj[0] + 1 IF PomBroj[0] = Mtp2[0] OR (PomBroj=256 AND Mtp2[0]=0)THEN Brojac[0]=Brojac[0] + Add[0] @ CLRF _PomBroj'PomBroj[0]=0 ENDIF ENDIF IF (Xn.1<Xs.1 AND Trf=0) OR (Xn.0<Xs.0 AND Trf=1 AND Xn.1=0) THEN PomBroj[1] = PomBroj[1] + 1 ' @ INCF _PomBroj+1,F ' IF PomBroj[1] = Mtp2[1] OR (PomBroj[1]=256 AND Mtp2[1]=0)THEN Brojac[1]=Brojac[1]+Add[1] @ CHK?RP _PomBroj @ CLRF _PomBroj+1'PomBroj[1]=0' ENDIF ENDIF Xs=Xn @ CLRF PIR2 endif @ retfie FAST mainloop: if ticks = 0 then trisb.7=0 hserout ["B1: ",dec9 brojac[0]," B2: ",dec9 brojac[1],13,10]'["Time: ",DEC hours, ":", DEC2 minutes, ":", DEC2 seconds,13,10] endif GoTo mainloop End
Counter(Brojac) Is incremented only on first falling edge. If I use PBP, everything work fine, but code is larger for 6 bytes. I need 4 counter. Becouse device have cr3203 batery, I'm trying to make smallest possible code. Maybe I can save on space by removing or's from IF's.Code:IF (Xn.1<Xs.1 AND Trf=0) OR (Xn.0<Xs.0 AND Trf=1 AND Xn.1=0) THEN PomBroj[1] = PomBroj[1] + 1 ' @ INCF _PomBroj+1,F ' IF PomBroj[1] = Mtp2[1] OR (PomBroj[1]=256 AND Mtp2[1]=0)THEN Brojac[1]=Brojac[1]+Add[1] @ CHK?RP _PomBroj @ CLRF _PomBroj+1'PomBroj[1]=0' ENDIF ENDIF




Bookmarks