From ba78bd9ba834260d035a9830726afc34fdad2a15 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 18 Oct 2009 23:32:54 +0200 Subject: import firmware from LEGO v1.05 --- ATmega48/Source/d_button.r | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 ATmega48/Source/d_button.r (limited to 'ATmega48/Source/d_button.r') diff --git a/ATmega48/Source/d_button.r b/ATmega48/Source/d_button.r new file mode 100644 index 0000000..a1ab5c5 --- /dev/null +++ b/ATmega48/Source/d_button.r @@ -0,0 +1,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 -- cgit v1.2.3