aboutsummaryrefslogtreecommitdiff
path: root/ATmega48/Source/d_button.r
blob: a1ab5c565a8e74f5f1ebb669e2cc09e125405fa5 (plain)
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
//
// Programmer      
//
// Date init       14.12.2004
//
// Reviser         $Author:: Dktochpe                                        $
//
// Revision date   $Date:: 2-09-05 14:37                                     $
//
// Filename        $Workfile:: d_button.r                                    $
//
// Version         $Revision:: 10                                            $
//
// Archive         $Archive:: /LMS2006/Sys01/Ioctrl/Firmware/Source/d_button $
//
// Platform        C
//

#ifdef    ATMEGAX8

#pragma   language=extended
#pragma   vector = INT1_vect
__interrupt void OnInterrupt(void)
{
  EIMSK &= ~0x02;
  HARDWAREReset;
}

#define   BUTTONInit                    {\
                                          EIMSK      &= ~0x02;\
                                          PORTD      |=  0x08;\
                                          DDRD       &= ~0x08;\
                                          PORTC      &= ~0x08;\
                                          DDRC       &= ~0x08;\
                                          DIDR0      |=  0x08;\
                                        }


UWORD     ButtonRead(void)
{
  UWORD   Result;
  
  ADMUX    =  0x43;
  ADCSRA  &= ~0x07;
  ADCSRA  |=  0x05;
  ADCSRA  |=  0x40;
  while ((ADCSRA & 0x40));
  ADCSRA  |=  0x40;
  while ((ADCSRA & 0x40));
  Result   = ADC;
  if (!(PIND & 0x08))
  {
    Result += 0x7FF;
  }
  return (Result);
}


#define   BUTTONRead                    ButtonRead()

#define   BUTTONExit                    {\
                                          PORTD     |=  0x08;\
                                          DDRD      &= ~0x08;\
                                          EICRA     &= ~0x0C;\
                                          EIFR      |=  0x02;\
                                          EIMSK     |=  0x02;\
                                        }
#endif