Here is code for the PIC12F683
Code:
void main(void)
{
static bit PulseA;
static bit PulseB;
static bit Blink;
OSCCON = 0x51; // 2 MHz
// Tmr2 to 48 Hz interupt
TMR2 = 0;
PR2 = 40;
T2CON = 0xFF; // Prescaler = 16, PostScaler = 16
TMR2IF = 1;
WDTCON = 0b00010011; // Watchdog On .5 sec
// Init Pins
GPIO = 0b00000000; // All Drives as outputs (GP0 and 1 must be 0)
TRISIO = 0b11111111; // All pins as Inputs
ANSEL = 0b00000000; // All pins Digital
GPPU = 0; // Master Enable Pullups
WPU = 0b00110100; // Set Pullups on
// start Off
PulseA = 1; // Start with Rapid Fire output Off
PulseB = 1;
while(!HTS); // wait for the Osc to stabilize
// start main loop
while(1)
{
// A Control Toggle Button
if(TMR2IF)
{
// clear flag
TMR2IF = 0;
// A Toggle output
if(INPUT_A == 0) // Button Pressed?
{
PulseA = !PulseA; // Toggle trigger
}
else // not pressed
{
PulseA = 1; // trigger up
}
OUT_A = PulseA; // set output
// B Toggle output
if(INPUT_B == 0) // Button Pressed?
{
PulseB = !PulseB; // Toggle trigger
}
else // not pressed
{
PulseB = 1; // trigger up
}
OUT_B = PulseB; // set output
// Blink LED if either buton is pressed
if(INPUT_A == 0 || INPUT_B == 0)
{
Blink = !Blink; // Blink
LED = Blink; // write it to LED
}
else
{
LED = LED_OFF;
}
CLRWDT(); //kick watchdog
} // end if
} // end while(1)
} // end Main