whycyhl
2022-05-05 94861120b14313f81fc666e612c48c9e8a81f1e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/************************** Copyright (c) **********************************
**                 FUZHOU FUGUANG ELECTRONICS Co.,LTD.
**                        ¸£Öݸ£¹âµç×ÓÓÐÏÞ¹«Ë¾
**                       http://www.fuguang.com
**
**-------------- File Info -------------------------------------------------
** File name:            Buzzer_Driver.c
** Last modified Date:  2008-11-16
** Last Version:        1.0
** Descriptions:        Buzzer Beep Drivers lib
**
**--------------------------------------------------------------------------
** Created by:            mxpopstar
** Created date:        2008-11-16
** Version:                1.0
** Descriptions:        The original version
**
**--------------------------------------------------------------------------
** Modified by:            mxpopstar
** Modified date:        2008-11-20
** Version:
** Descriptions:        Buzzer Beep Drivers lib
**
***************************************************************************/
//
#include "Buzzer_Driver.h"
#include <avr/io.h>
#include "main.h"
#include "Delay.h"
 
static unsigned char BeepEN = 0;
static unsigned char BeepCount = 0;
 
static unsigned int BeepONTime = 1000;
static unsigned int BeepOFFTime = 1000;
 
void InitIO_Buzzer(void)
{
    DDRF |= 0x40;
    PORTF &= (~0x40);
    _delay_ms(1);
}
//
 
void InitAlarmBeep(void)
{    
    TIFR |= 0x40;         //Çå³ýT2µÄ¼ÆÊýÒç³öÖжÏ
    TCNT2 = 0;           //¼ÆÊý³õʼֵÖÃΪ0
    TIMSK &= (~0x40);    //½ûÖ¹T2¼ÆÊýÒç³öÖжϠ   
    TCCR2  = 0x05;        //ϵͳʱÖÓµÄ1024·ÖƵֵ,²¢¿ªÊ¼¼ÆÊý
}
//
 
SIGNAL(SIG_OVERFLOW2)
{
 
}
//
 
void BuzzerBeep(const unsigned int ms)
{
    Buzzer_ON;
    Delay_MS(ms);
    Buzzer_OFF;
}
//
 
void StartAlarmBeep(const unsigned char type)
{
    switch(type)
    {
            case BeepNull: return;
            
            case FDLineConnectError: BeepONTime = 6;
                                     BeepOFFTime = 10;
                                     break;
            case FDVolTooHight: BeepONTime = 6;
                                BeepOFFTime = 10;
                                break;    
            case FDTimeFinished: BeepONTime = 14;
                                 BeepOFFTime = 28;
                                 break;
            case FDCapFinished: BeepONTime = 14;
                                BeepOFFTime = 28;
                                break;
            case FDMonomerVolLimit: BeepONTime = 14;
                                    BeepOFFTime = 28;
                                    break;    
            case FDSumVolLimit: BeepONTime = 14;
                                BeepOFFTime = 28;
                                break;    
            case PowerOFFStop: BeepONTime = 14;
                               BeepOFFTime = 28;
                               break;    
            case FlashUPStop: BeepONTime = 14;
                              BeepOFFTime = 28;
                              break;
            case MonomerModleDrop:     BeepONTime = 5;
                                    BeepOFFTime = 112;
                                    break;
            case MonomerModleDrop2: BeepONTime = 5;
                                    BeepOFFTime = 112;
                                    break;                        
    }
     
    BeepCount = 0;
    BeepEN = 1;
}
//
 
void StopAlarmBeep(void)
{
    Buzzer_OFF;
    BeepCount = 0;
    BeepEN = 0;
}
//
 
void BuzzerBeepTask(void)
{        
    if(BeepEN > 0)
    {
        if(TIFR & 0x40)
        {
            TIFR |= 0x40;//Çå³ýT2µÄ¼ÆÊýÒç³öÖжÏ
            BeepCount++;
        }
        
        if(BeepCount <= BeepONTime)
        {
            Buzzer_ON;
        }
        else if((BeepCount>BeepONTime) && (BeepCount<=BeepOFFTime))
        {
            Buzzer_OFF;
        }
        else 
        {
            BeepCount = 0;
        }    
    }    
}
//