这是电动车简易报警器信号电路
#include "reg52.h"
sbit switcher = P1^1;
sbit D0_ON = P1^2;
sbit D1_OFF = P1^3;
sbit vibrator = P1^4;
void Delay3000ms() //@11.0592MHz
{
unsigned char i, j, k;
//_nop_();
i = 22;
j = 3;
k = 227;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
//_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay5000ms() //@11.0592MHz
{
unsigned char i, j, k;
// _nop_();
i = 36;
j = 5;
k = 211;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
int mark = 0;
while(1){
//1.进入报警模式
if (D0_ON == 1){
switcher = 0; //提示音 长
Delay3000ms();
mark = 1;
}
//2.退出警报
if(D1_OFF ==1){
switcher = 0; // 提示音 短
Delay1000ms();
mark = 0;
}
//3.再警报模式下
if(mark == 1){
if(vibrator == 0){ // 3.1如果喇叭震动
switcher = 0;
Delay5000ms(); // 这里应该有个 Bug 有的时侯 再报警的时候无法进入解除警报
}else // 这一块在后面 学到终端以后会得到解决
{ // 3.2如果喇叭不震动
switcher = 1;
}
}
//4.在解除警报模式下
if(mark ==0){
switcher = 1; // 4.1无论怎么动都不响
}
}
}