Hello There,
This piece of code is meant to flash a LED every second.
In my mind, and since the TMR1 is setup to overflow every 0.5 second, toggeling a BIT variable and checking when it is set should do the trick.
First, as long as the variable is not reset, the LED will do weird and never really go OFF.
Second, when I reset this variable (Flag = 0), it does kind of work, still not with a one second delay but 0.5 second instead.
What is the explanation please? What is wrong with my code?
Code:' PIC 16F690 @ __config _FCMEN_OFF &_IESO_OFF &_CPD_OFF &_WDT_OFF &_INTRC_OSC_NOCLKOUT &_BOR_OFF &_CP_OFF &_PWRTE_OFF &_MCLRE_OFF OPTION_REG = %10000000 ' OSCCON = %01100000 ' Internal oscillator 4MHz ANSEL = %00000000 ' analog inputs Channels 0 to 7 ANSELH = %00000000 ' analog inputs Channels 8 to 11 INTCON = %11000000 ' INTerrupts CONtrol; GIE=1, T0IE=1 T1CON = %00110001 ' <5:4> prescaler 1:8, <1> Timer1 enabled DEFINE OSC 4 Flag VAR BIT CAL_H CON 11 CAL_L CON 219 MAIN: IF PIR1.0 THEN PIR1.0 = 0 TOGGLE Flag TMR1H = CAL_H : TMR1L = CAL_L ENDIF IF Flag THEN Flag = 0 TOGGLE PORTC.0 ENDIF GOTO MAIN END




Bookmarks