#include <p18Cxxx.h>
#include <delays.h>
#pragma config WDT = OFF, LVP = OFF, OSC = INTIO2
#define button1 PORTBbits.RB0
#define MainButton PORTBbits.RB0
#define MainButtonT TRISBbits.TRISB0
#define MySec 3
char pos;
unsigned long time;
void ShootLaser(void);
void high_ISR (void) ;
void high_interrupt (void);
void NightTime(void);
#pragma code high_vector = 0x08
void high_interrupt (void){
_asm goto high_ISR _endasm
}
#pragma code
#pragma interrupt high_ISR
void high_ISR (void) {
INTCONbits.INT0IF = 0;
INTCONbits.RBIF = 0;
LATAbits.LATA0 = 1;
ShootLaser();
}
void main(void){
int k,j,i;
OSCCON = 0x72; //8MHz clock
while(!OSCCONbits.IOFS); //Wait for OSC to become stable
pos = 0;
ADCON1 = 0xFF;
TRISB = 0x00;
TRISA = 0x00;
MainButtonT = 1;
INTCON = 0b11010000;
INTCON2 = 0b11110000;
INTCON3 = 0x00;
RCON = 0b10000000;
time = 0;
while(1){
time++;
if(time == (MySec * 200000)){ //x seconds @ 8 MHz
NightTime();
}
}
}
void NightTime(void){
LATAbits.LATA0 = 0; //Turn off LED
OSCCONbits.IDLEN = 0; //Clear he IDLEN and SCS1:SCS0
OSCCONbits.SCS1 = 0;
OSCCONbits.SCS0 = 0;
Sleep(); //Call Sleep instruction
}
void ShootLaser(void){
int k,j,i;
for(k=0;k<80;k+=1){
for(j=0;j<5;j++){
LATBbits.LATB1 = 1;
for (i=k; i; i--);
LATBbits.LATB1 = 0;
for (i=k; i; i--);
}
}
time = 0;
}