??? 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; } } |
Topic | Author | Date |
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 |