Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
04/22/04 11:59
Read: times


 
#69006 - RE: re:code to turn on/off vibrator
Responding to: ???'s previous message
Hi,
Sorry ,here is the code

//slave
//2april
#pragma small //default to small memory model
#include<reg52.h> //include header file

#define smoke_on_time 20
#define doorbell_on_time 10
#define phone_on_time 5
#define duration 10
#define RESPONSE_TO_MASTER 0x70
void serialInit(); //function prototype
void INT0_ISR() interrupt 0;
void send_radio_msgm(char msgm_char);

void timer0_isr() interrupt 1; //function prototype
//void delay(); //TAKEN OUT


sbit doorbell_led = P2^6; //the green led
sbit smokealarm_led = P2^7; //the red led
sbit phonealarm_led = P2^5; //the yellow led
sbit vibrator = P2^2;
unsigned char on, no_periods; //counter
unsigned char seconds; //seconds

bit smoke_alarm, phone_alarm, doorbell,vib = 0; //sets the flags

void main() //execution of main
{
P2=0x00; //set everything off on port 2
doorbell_led = 0; //turn off
smokealarm_led = 0;
phonealarm_led = 0;
vibrator = 0; //turn off vibrator
smoke_alarm = 0;
phone_alarm = 0;
doorbell = 0;

//serialInit();
TMOD = 0x21; // Timer0 as 16-bit
TCON = 0x01; //enable INT0 as edge triggered
TH1 = 0x0E8; // Baud rate of 1200
TL1 = 0x0E8;
SCON = 0x50; // Set serial mode( mode 1 )
//IE = 0x83; //enable timer 0
IE = 0x81; //enable external interrupt 0
IP = 0x01; //priorty
TR1 = 1;

while(1 ) //while true keep running
{
if(RI)
{
RI = 0;
//ET0 = 1;
switch(SBUF)
{
case 'e':

on = smoke_on_time; //1 sec
no_periods = duration;
smoke_alarm = 1;
vibrator =!vibrator;
smokealarm_led = 1; //turn on
TF0 = 1; //timer0 flag enabled
break;
case 'd': //door
on = doorbell_on_time;
no_periods = duration;
doorbell = 1;
vibrator = 1;
IE = 0;
//delay(); //TAKEN OUT
//vibrator = !vibrator;
//doorbell_led = 1;
//TF0 = 1;
break;
case 'p': //phone
on = phone_on_time;
no_periods = duration;
phone_alarm=1;
vibrator = !vibrator;
phonealarm_led = 1;
TF0 = 1;
break;
case 'x':
/*P2 = 0x00;
TR0 = 0;*/
break;
default:
break;
}
}
}
}

//External Interrupt 0 (Port 3, Pin 2)
void INT0_ISR() interrupt 0{ //when panic button is pressed
ET0 = 0; //diable timer interrupts
smokealarm_led= 0; //Turn off Smoke alarm
doorbell_led= 0; //Turn Door Bell off
phonealarm_led= 0; //Turn Phone off
vibrator = 0; //Turn Vibrator off
TR0 = 0; //Turn timer 0 off
// while(1)
// {
//if(smoke_alarm) //if smoke alarm is activated send radio message to master unit
//{
send_radio_msgm(RESPONSE_TO_MASTER);
TI=0;
//while(smoke_alarm);
//}
//else if(doorbell) //if smoke alarm is activated send radio message to master unit
//{
//send_gsm_msgm(0x64);
//TI=0;
//while(doorbell);
//}
//else if(phone_alarm) //if smoke alarm is activated send radio message to master unit
//{
//send_gsm_msgm(0x70);
//TI=0;
//while(phone_alarm);
//}
// }
}
//Timer 0 interrupt to time pulses
void timer0_isr() interrupt 1{
TF0 = 0; //Clear interrupt flag
//TH0 = -50000 >> 8; //reload 50ms delay in timer 0
// TL0 = -50000&0x00FF;
TH0 = 0x4C;
TL0 = 00;
TR0 = 1; //Run timer 0
if (no_periods >0)
{
if(on-- == 0)
{
no_periods--;
vibrator = !vibrator; //Toggle
if (smoke_alarm)
{
on = smoke_on_time;
}
else if (doorbell)
{
on = doorbell_on_time;
}
else if (phone_alarm)
{
on = phone_on_time;
}

}
}
else //duration has expired - clear flags and stop timer
{
TR0 = 0;
vibrator = 0; // turn off vibrator
if(smoke_alarm)
{
smoke_alarm = 0;
smokealarm_led = 0;
}
else if(doorbell)
{
doorbell = 0;
doorbell_led = 0;
}
else if(phone_alarm)
{
phone_alarm = 0;
phonealarm_led = 0;
}



}

}

/*****************************************************************/
/*void serialInit() */
/*Initialises Timer1 */
/*****************************************************************/


void send_radio_msgm(char msgm_char)
{
char i;
TI = 0;
for (i = 0;i <= 3; i++)
{
if (i < 3)
{
SBUF = 0x55; //3 preamble bytes for clock synchronisation
}
else
{
SBUF = msgm_char;
}
while(!TI);
TI = 0;
}
}
//slave
//2april
#pragma small //default to small memory model
#include<reg52.h> //include header file

#define smoke_on_time 20
#define doorbell_on_time 10
#define phone_on_time 5
#define duration 10
#define RESPONSE_TO_MASTER 0x70
void serialInit(); //function prototype
void INT0_ISR() interrupt 0;
void send_radio_msgm(char msgm_char);

void timer0_isr() interrupt 1; //function prototype
//void delay(); //TAKEN OUT


sbit doorbell_led = P2^6; //the green led
sbit smokealarm_led = P2^7; //the red led
sbit phonealarm_led = P2^5; //the yellow led
sbit vibrator = P2^2;
unsigned char on, no_periods; //counter
unsigned char seconds; //seconds

bit smoke_alarm, phone_alarm, doorbell,vib = 0; //sets the flags

void main() //execution of main
{
P2=0x00; //set everything off on port 2
doorbell_led = 0; //turn off
smokealarm_led = 0;
phonealarm_led = 0;
vibrator = 0; //turn off vibrator
smoke_alarm = 0;
phone_alarm = 0;
doorbell = 0;

//serialInit();
TMOD = 0x21; // Timer0 as 16-bit
TCON = 0x01; //enable INT0 as edge triggered
TH1 = 0x0E8; // Baud rate of 1200
TL1 = 0x0E8;
SCON = 0x50; // Set serial mode( mode 1 )
//IE = 0x83; //enable timer 0
IE = 0x81; //enable external interrupt 0
IP = 0x01; //priorty
TR1 = 1;

while(1 ) //while true keep running
{
if(RI)
{
RI = 0;
//ET0 = 1;
switch(SBUF)
{
case 'e':

on = smoke_on_time; //1 sec
no_periods = duration;
smoke_alarm = 1;
vibrator =!vibrator;
smokealarm_led = 1; //turn on
TF0 = 1; //timer0 flag enabled
break;
case 'd': //door
on = doorbell_on_time;
no_periods = duration;
doorbell = 1;
vibrator = 1;
IE = 0;
//delay(); //TAKEN OUT
//vibrator = !vibrator;
//doorbell_led = 1;
//TF0 = 1;
break;
case 'p': //phone
on = phone_on_time;
no_periods = duration;
phone_alarm=1;
vibrator = !vibrator;
phonealarm_led = 1;
TF0 = 1;
break;
case 'x':
/*P2 = 0x00;
TR0 = 0;*/
break;
default:
break;
}
}
}
}

//External Interrupt 0 (Port 3, Pin 2)
void INT0_ISR() interrupt 0{ //when panic button is pressed
ET0 = 0; //diable timer interrupts
smokealarm_led= 0; //Turn off Smoke alarm
doorbell_led= 0; //Turn Door Bell off
phonealarm_led= 0; //Turn Phone off
vibrator = 0; //Turn Vibrator off
TR0 = 0; //Turn timer 0 off
// while(1)
// {
//if(smoke_alarm) //if smoke alarm is activated send radio message to master unit
//{
send_radio_msgm(RESPONSE_TO_MASTER);
TI=0;
//while(smoke_alarm);
//}
//else if(doorbell) //if smoke alarm is activated send radio message to master unit
//{
//send_gsm_msgm(0x64);
//TI=0;
//while(doorbell);
//}
//else if(phone_alarm) //if smoke alarm is activated send radio message to master unit
//{
//send_gsm_msgm(0x70);
//TI=0;
//while(phone_alarm);
//}
// }
}
//Timer 0 interrupt to time pulses
void timer0_isr() interrupt 1{
TF0 = 0; //Clear interrupt flag
//TH0 = -50000 >> 8; //reload 50ms delay in timer 0
// TL0 = -50000&0x00FF;
TH0 = 0x4C;
TL0 = 00;
TR0 = 1; //Run timer 0
if (no_periods >0)
{
if(on-- == 0)
{
no_periods--;
vibrator = !vibrator; //Toggle
if (smoke_alarm)
{
on = smoke_on_time;
}
else if (doorbell)
{
on = doorbell_on_time;
}
else if (phone_alarm)
{
on = phone_on_time;
}

}
}
else //duration has expired - clear flags and stop timer
{
TR0 = 0;
vibrator = 0; // turn off vibrator
if(smoke_alarm)
{
smoke_alarm = 0;
smokealarm_led = 0;
}
else if(doorbell)
{
doorbell = 0;
doorbell_led = 0;
}
else if(phone_alarm)
{
phone_alarm = 0;
phonealarm_led = 0;
}



}

}

/*****************************************************************/
/*void serialInit() */
/*Initialises Timer1 */
/*****************************************************************/


void send_radio_msgm(char msgm_char)
{
char i;
TI = 0;
for (i = 0;i <= 3; i++)
{
if (i < 3)
{
SBUF = 0x55; //3 preamble bytes for clock synchronisation
}
else
{
SBUF = msgm_char;
}
while(!TI);
TI = 0;
}
}


List of 4 messages in thread
TopicAuthorDate
re:code to turn on/off vibrator            01/01/70 00:00      
   RE: re:code to turn on/off vibrator            01/01/70 00:00      
      RE: re:code to turn on/off vibrator            01/01/70 00:00      
   RE: re:code to turn on/off vibrator            01/01/70 00:00      

Back to Subject List