Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 106 → Rev 107

/Transportables_Koptertool/trunk/F8X6.c
0,0 → 1,290
/*******************************************************************************
;
; taskit Rechnertechnik Berlin GmbH
; Kaiser-Friedrich-Straáe 51
; 1000 Berlin 12
; Tel. 030-3245836
; FAX 030-3232649
;
;
; Projekt :
;
; Datei :
;
; Funktion :
;
; Version :
;
; Letzte Änderung : 06/28/95 - 15:04:59
;
; Info :
;
*******************************************************************************/
#include <avr/pgmspace.h>
 
//Die Bytes gehören zu jeweils einer Spalte des Buchstabens
//D7 ist dabei das unterste Bit. Es handelt sich um einen DOS-Font !
//DOS-Zeichensatz
 
prog_uchar f8x6[ 256 ][ 6 ] =
{
{ 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 0
{ 0x3E,0x5B,0x4F,0x5B,0x3E,0x00 }, // ASCII - 1
{ 0x3E,0x6B,0x4F,0x6B,0x3E,0x00 }, // ASCII - 2
{ 0x1C,0x3E,0x7C,0x3E,0x1C,0x00 }, // ASCII - 3
{ 0x18,0x3C,0x7E,0x3C,0x18,0x00 }, // ASCII - 4
{ 0x1C,0x57,0x7D,0x57,0x1C,0x00 }, // ASCII - 5
{ 0x1C,0x5E,0x7F,0x5E,0x1C,0x00 }, // ASCII - 6
{ 0x00,0x18,0x3C,0x18,0x00,0x00 }, // ASCII - 7
{ 0xFF,0xE7,0xC3,0xE7,0xFF,0x00 }, // ASCII - 8
{ 0x00,0x18,0x24,0x18,0x00,0x00 }, // ASCII - 9
{ 0xFF,0xE7,0xDB,0xE7,0xFF,0x00 }, // ASCII - 10
{ 0x30,0x48,0x3A,0x06,0x0E,0x00 }, // ASCII - 11
{ 0x26,0x29,0x79,0x29,0x26,0x00 }, // ASCII - 12
{ 0x40,0x7F,0x05,0x05,0x07,0x00 }, // ASCII - 13
{ 0x40,0x7F,0x05,0x25,0x3F,0x00 }, // ASCII - 14
{ 0x5A,0x3C,0xE7,0x3C,0x5A,0x00 }, // ASCII - 15
{ 0x7F,0x3E,0x1C,0x1C,0x08,0x00 }, // ASCII - 16
{ 0x08,0x1C,0x1C,0x3E,0x7F,0x00 }, // ASCII - 17
{ 0x14,0x22,0x7F,0x22,0x14,0x00 }, // ASCII - 18
{ 0x5F,0x5F,0x00,0x5F,0x5F,0x00 }, // ASCII - 19
{ 0x06,0x09,0x7F,0x01,0x7F,0x00 }, // ASCII - 20
{ 0x00,0x66,0x89,0x95,0x6A,0x00 }, // ASCII - 21
{ 0x60,0x60,0x60,0x60,0x60,0x60 }, // ASCII - 22
{ 0x94,0xA2,0xFF,0xA2,0x94,0x00 }, // ASCII - 23
{ 0x08,0x04,0x7E,0x04,0x08,0x00 }, // ASCII - 24
{ 0x10,0x20,0x7E,0x20,0x10,0x00 }, // ASCII - 25
{ 0x08,0x08,0x2A,0x1C,0x08,0x00 }, // ASCII - 26
{ 0x08,0x1C,0x2A,0x08,0x08,0x00 }, // ASCII - 27
{ 0x1E,0x10,0x10,0x10,0x10,0x00 }, // ASCII - 28
{ 0x0C,0x1E,0x0C,0x1E,0x0C,0x00 }, // ASCII - 29
{ 0x30,0x38,0x3E,0x38,0x30,0x00 }, // ASCII - 30
{ 0x06,0x0E,0x3E,0x0E,0x06,0x00 }, // ASCII - 31
{ 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 32
{ 0x00,0x00,0x5F,0x00,0x00,0x00 }, // ASCII - 33
{ 0x00,0x07,0x00,0x07,0x00,0x00 }, // ASCII - 34
{ 0x14,0x7F,0x14,0x7F,0x14,0x00 }, // ASCII - 35
{ 0x24,0x2A,0x7F,0x2A,0x12,0x00 }, // ASCII - 36
{ 0x23,0x13,0x08,0x64,0x62,0x00 }, // ASCII - 37
{ 0x36,0x49,0x56,0x20,0x50,0x00 }, // ASCII - 38
{ 0x00,0x08,0x07,0x03,0x00,0x00 }, // ASCII - 39
{ 0x00,0x1C,0x22,0x41,0x00,0x00 }, // ASCII - 40
{ 0x00,0x41,0x22,0x1C,0x00,0x00 }, // ASCII - 41
{ 0x2A,0x1C,0x7F,0x1C,0x2A,0x00 }, // ASCII - 42
{ 0x08,0x08,0x3E,0x08,0x08,0x00 }, // ASCII - 43
{ 0x00,0x80,0x70,0x30,0x00,0x00 }, // ASCII - 44
{ 0x08,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 45
{ 0x00,0x00,0x60,0x60,0x00,0x00 }, // ASCII - 46
{ 0x20,0x10,0x08,0x04,0x02,0x00 }, // ASCII - 47
{ 0x3E,0x51,0x49,0x45,0x3E,0x00 }, // ASCII - 48
{ 0x00,0x42,0x7F,0x40,0x00,0x00 }, // ASCII - 49
{ 0x72,0x49,0x49,0x49,0x46,0x00 }, // ASCII - 50
{ 0x21,0x41,0x49,0x4D,0x33,0x00 }, // ASCII - 51
{ 0x18,0x14,0x12,0x7F,0x10,0x00 }, // ASCII - 52
{ 0x27,0x45,0x45,0x45,0x39,0x00 }, // ASCII - 53
{ 0x3C,0x4A,0x49,0x49,0x31,0x00 }, // ASCII - 54
{ 0x41,0x21,0x11,0x09,0x07,0x00 }, // ASCII - 55
{ 0x36,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 56
{ 0x46,0x49,0x49,0x29,0x1E,0x00 }, // ASCII - 57
{ 0x00,0x00,0x14,0x00,0x00,0x00 }, // ASCII - 58
{ 0x00,0x40,0x34,0x00,0x00,0x00 }, // ASCII - 59
{ 0x00,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 60
{ 0x14,0x14,0x14,0x14,0x14,0x00 }, // ASCII - 61
{ 0x00,0x41,0x22,0x14,0x08,0x00 }, // ASCII - 62
{ 0x02,0x01,0x59,0x09,0x06,0x00 }, // ASCII - 63
{ 0x3E,0x41,0x5D,0x59,0x4E,0x00 }, // ASCII - 64
{ 0x7C,0x12,0x11,0x12,0x7C,0x00 }, // ASCII - 65
{ 0x7F,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 66
{ 0x3E,0x41,0x41,0x41,0x22,0x00 }, // ASCII - 67
{ 0x7F,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 68
{ 0x7F,0x49,0x49,0x49,0x41,0x00 }, // ASCII - 69
{ 0x7F,0x09,0x09,0x09,0x01,0x00 }, // ASCII - 70
{ 0x3E,0x41,0x41,0x51,0x73,0x00 }, // ASCII - 71
{ 0x7F,0x08,0x08,0x08,0x7F,0x00 }, // ASCII - 72
{ 0x00,0x41,0x7F,0x41,0x00,0x00 }, // ASCII - 73
{ 0x20,0x40,0x41,0x3F,0x01,0x00 }, // ASCII - 74
{ 0x7F,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 75
{ 0x7F,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 76
{ 0x7F,0x02,0x1C,0x02,0x7F,0x00 }, // ASCII - 77
{ 0x7F,0x04,0x08,0x10,0x7F,0x00 }, // ASCII - 78
{ 0x3E,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 79
{ 0x7F,0x09,0x09,0x09,0x06,0x00 }, // ASCII - 80
{ 0x3E,0x41,0x51,0x21,0x5E,0x00 }, // ASCII - 81
{ 0x7F,0x09,0x19,0x29,0x46,0x00 }, // ASCII - 82
{ 0x26,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 83
{ 0x03,0x01,0x7F,0x01,0x03,0x00 }, // ASCII - 84
{ 0x3F,0x40,0x40,0x40,0x3F,0x00 }, // ASCII - 85
{ 0x1F,0x20,0x40,0x20,0x1F,0x00 }, // ASCII - 86
{ 0x3F,0x40,0x38,0x40,0x3F,0x00 }, // ASCII - 87
{ 0x63,0x14,0x08,0x14,0x63,0x00 }, // ASCII - 88
{ 0x03,0x04,0x78,0x04,0x03,0x00 }, // ASCII - 89
{ 0x61,0x59,0x49,0x4D,0x43,0x00 }, // ASCII - 90
{ 0x00,0x7F,0x41,0x41,0x41,0x00 }, // ASCII - 91
{ 0x02,0x04,0x08,0x10,0x20,0x00 }, // ASCII - 92
{ 0x00,0x41,0x41,0x41,0x7F,0x00 }, // ASCII - 93
{ 0x04,0x02,0x01,0x02,0x04,0x00 }, // ASCII - 94
{ 0x40,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 95
{ 0x00,0x03,0x07,0x08,0x00,0x00 }, // ASCII - 96
{ 0x20,0x54,0x54,0x78,0x40,0x00 }, // ASCII - 97
{ 0x7F,0x28,0x44,0x44,0x38,0x00 }, // ASCII - 98
{ 0x38,0x44,0x44,0x44,0x28,0x00 }, // ASCII - 99
{ 0x38,0x44,0x44,0x28,0x7F,0x00 }, // ASCII - 100
{ 0x38,0x54,0x54,0x54,0x18,0x00 }, // ASCII - 101
{ 0x00,0x08,0x7E,0x09,0x02,0x00 }, // ASCII - 102
{ 0x18,0xA4,0xA4,0x9C,0x78,0x00 }, // ASCII - 103
{ 0x7F,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 104
{ 0x00,0x44,0x7D,0x40,0x00,0x00 }, // ASCII - 105
{ 0x20,0x40,0x40,0x3D,0x00,0x00 }, // ASCII - 106
{ 0x7F,0x10,0x28,0x44,0x00,0x00 }, // ASCII - 107
{ 0x00,0x41,0x7F,0x40,0x00,0x00 }, // ASCII - 108
{ 0x7C,0x04,0x78,0x04,0x78,0x00 }, // ASCII - 109
{ 0x7C,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 110
{ 0x38,0x44,0x44,0x44,0x38,0x00 }, // ASCII - 111
{ 0xFC,0x18,0x24,0x24,0x18,0x00 }, // ASCII - 112
{ 0x18,0x24,0x24,0x18,0xFC,0x00 }, // ASCII - 113
{ 0x7C,0x08,0x04,0x04,0x08,0x00 }, // ASCII - 114
{ 0x48,0x54,0x54,0x54,0x24,0x00 }, // ASCII - 115
{ 0x04,0x04,0x3F,0x44,0x24,0x00 }, // ASCII - 116
{ 0x3C,0x40,0x40,0x20,0x7C,0x00 }, // ASCII - 117
{ 0x1C,0x20,0x40,0x20,0x1C,0x00 }, // ASCII - 118
{ 0x3C,0x40,0x30,0x40,0x3C,0x00 }, // ASCII - 119
{ 0x44,0x28,0x10,0x28,0x44,0x00 }, // ASCII - 120
{ 0x4C,0x90,0x90,0x90,0x7C,0x00 }, // ASCII - 121
{ 0x44,0x64,0x54,0x4C,0x44,0x00 }, // ASCII - 122
{ 0x00,0x08,0x36,0x41,0x00,0x00 }, // ASCII - 123
{ 0x00,0x00,0x77,0x00,0x00,0x00 }, // ASCII - 124
{ 0x00,0x41,0x36,0x08,0x00,0x00 }, // ASCII - 125
{ 0x02,0x01,0x02,0x04,0x02,0x00 }, // ASCII - 126
{ 0x3C,0x26,0x23,0x26,0x3C,0x00 }, // ASCII - 127
{ 0x1E,0xA1,0xA1,0x61,0x12,0x00 }, // ASCII - 128 80
{ 0x3A,0x40,0x40,0x20,0x7A,0x00 }, // ASCII - 129
{ 0x38,0x54,0x54,0x55,0x59,0x00 }, // ASCII - 130
{ 0x21,0x55,0x55,0x79,0x41,0x00 }, // ASCII - 131
{ 0x21,0x54,0x54,0x78,0x41,0x00 }, // ASCII - 132
{ 0x21,0x55,0x54,0x78,0x40,0x00 }, // ASCII - 133
{ 0x20,0x54,0x55,0x79,0x40,0x00 }, // ASCII - 134
{ 0x0C,0x1E,0x52,0x72,0x12,0x00 }, // ASCII - 135
{ 0x39,0x55,0x55,0x55,0x59,0x00 }, // ASCII - 136
{ 0x39,0x54,0x54,0x54,0x59,0x00 }, // ASCII - 137
{ 0x39,0x55,0x54,0x54,0x58,0x00 }, // ASCII - 138
{ 0x00,0x00,0x45,0x7C,0x41,0x00 }, // ASCII - 139
{ 0x00,0x02,0x45,0x7D,0x42,0x00 }, // ASCII - 140
{ 0x00,0x01,0x45,0x7C,0x40,0x00 }, // ASCII - 141
// { 0xF0,0x29,0x24,0x29,0xF0,0x00 }, // ASCII - 142 Ä
{ 0x79,0x14,0x12,0x14,0x79,0x00 }, // ASCII - 142 Ä korrigiert
{ 0xF0,0x28,0x25,0x28,0xF0,0x00 }, // ASCII - 143
{ 0x7C,0x54,0x55,0x45,0x00,0x00 }, // ASCII - 144 90
{ 0x20,0x54,0x54,0x7C,0x54,0x44 }, // ASCII - 145
{ 0x7C,0x0A,0x09,0x7F,0x49,0x41 }, // ASCII - 146
{ 0x32,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 147
{ 0x32,0x48,0x48,0x48,0x32,0x00 }, // ASCII - 148
{ 0x32,0x4A,0x48,0x48,0x30,0x00 }, // ASCII - 149
{ 0x3A,0x41,0x41,0x21,0x7A,0x00 }, // ASCII - 150
{ 0x3A,0x42,0x40,0x20,0x78,0x00 }, // ASCII - 151
{ 0x00,0x9D,0xA0,0xA0,0x7D,0x00 }, // ASCII - 152
{ 0x39,0x44,0x44,0x44,0x39,0x00 }, // ASCII - 153
{ 0x3D,0x40,0x40,0x40,0x3D,0x00 }, // ASCII - 154
{ 0x3C,0x24,0xFF,0x24,0x24,0x00 }, // ASCII - 155
{ 0x48,0x7E,0x49,0x43,0x66,0x00 }, // ASCII - 156
{ 0x2B,0x2F,0xFC,0x2F,0x2B,0x00 }, // ASCII - 157
{ 0xFF,0x09,0x29,0xF6,0x20,0x00 }, // ASCII - 158
{ 0xC0,0x88,0x7E,0x09,0x03,0x00 }, // ASCII - 159
{ 0x20,0x54,0x54,0x79,0x41,0x00 }, // ASCII - 160
{ 0x00,0x00,0x44,0x7D,0x41,0x00 }, // ASCII - 161
{ 0x30,0x48,0x48,0x4A,0x32,0x00 }, // ASCII - 162
{ 0x38,0x40,0x40,0x22,0x7A,0x00 }, // ASCII - 163
{ 0x00,0x7A,0x0A,0x0A,0x72,0x00 }, // ASCII - 164
{ 0x7D,0x0D,0x19,0x31,0x7D,0x00 }, // ASCII - 165
{ 0x26,0x29,0x29,0x2F,0x28,0x00 }, // ASCII - 166
{ 0x26,0x29,0x29,0x29,0x26,0x00 }, // ASCII - 167
{ 0x30,0x48,0x4D,0x40,0x20,0x00 }, // ASCII - 168
{ 0x38,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 169
{ 0x08,0x08,0x08,0x08,0x38,0x00 }, // ASCII - 170
{ 0x2F,0x10,0xC8,0xAC,0xBA,0x00 }, // ASCII - 171
{ 0x2F,0x10,0x28,0x34,0xFA,0x00 }, // ASCII - 172
{ 0x00,0x00,0x7B,0x00,0x00,0x00 }, // ASCII - 173
{ 0x08,0x14,0x2A,0x14,0x22,0x00 }, // ASCII - 174
{ 0x22,0x14,0x2A,0x14,0x08,0x00 }, // ASCII - 175
{ 0xAA,0x00,0x55,0x00,0xAA,0x00 }, // ASCII - 176
{ 0xAA,0x55,0xAA,0x55,0xAA,0x55 }, // ASCII - 177
{ 0x55,0xAA,0x55,0xAA,0x55,0xAA }, // ASCII - 178
{ 0x00,0x00,0x00,0xFF,0x00,0x00 }, // ASCII - 179
{ 0x10,0x10,0x10,0xFF,0x00,0x00 }, // ASCII - 180
{ 0x14,0x14,0x14,0xFF,0x00,0x00 }, // ASCII - 181
{ 0x10,0x10,0xFF,0x00,0xFF,0x00 }, // ASCII - 182
{ 0x10,0x10,0xF0,0x10,0xF0,0x00 }, // ASCII - 183
{ 0x14,0x14,0x14,0xFC,0x00,0x00 }, // ASCII - 184
{ 0x14,0x14,0xF7,0x00,0xFF,0x00 }, // ASCII - 185
{ 0x00,0x00,0xFF,0x00,0xFF,0x00 }, // ASCII - 186
{ 0x14,0x14,0xF4,0x04,0xFC,0x00 }, // ASCII - 187
{ 0x14,0x14,0x17,0x10,0x1F,0x00 }, // ASCII - 188
{ 0x10,0x10,0x1F,0x10,0x1F,0x00 }, // ASCII - 189
{ 0x14,0x14,0x14,0x1F,0x00,0x00 }, // ASCII - 190
{ 0x10,0x10,0x10,0xF0,0x00,0x00 }, // ASCII - 191
{ 0x00,0x00,0x00,0x1F,0x10,0x10 }, // ASCII - 192
{ 0x10,0x10,0x10,0x1F,0x10,0x10 }, // ASCII - 193
{ 0x10,0x10,0x10,0xF0,0x10,0x10 }, // ASCII - 194
{ 0x00,0x00,0x00,0xFF,0x10,0x10 }, // ASCII - 195
{ 0x10,0x10,0x10,0x10,0x10,0x10 }, // ASCII - 196
{ 0x10,0x10,0x10,0xFF,0x10,0x10 }, // ASCII - 197
{ 0x00,0x00,0x00,0xFF,0x14,0x14 }, // ASCII - 198
{ 0x00,0x00,0xFF,0x00,0xFF,0x10 }, // ASCII - 199
{ 0x00,0x00,0x1F,0x10,0x17,0x14 }, // ASCII - 200
{ 0x00,0x00,0xFC,0x04,0xF4,0x14 }, // ASCII - 201
{ 0x14,0x14,0x17,0x10,0x17,0x14 }, // ASCII - 202
{ 0x14,0x14,0xF4,0x04,0xF4,0x14 }, // ASCII - 203
{ 0x00,0x00,0xFF,0x00,0xF7,0x14 }, // ASCII - 204
{ 0x14,0x14,0x14,0x14,0x14,0x14 }, // ASCII - 205
{ 0x14,0x14,0xF7,0x00,0xF7,0x14 }, // ASCII - 206
{ 0x14,0x14,0x14,0x17,0x14,0x14 }, // ASCII - 207
{ 0x10,0x10,0x1F,0x10,0x1F,0x10 }, // ASCII - 208
{ 0x14,0x14,0x14,0xF4,0x14,0x14 }, // ASCII - 209
{ 0x10,0x10,0xF0,0x10,0xF0,0x10 }, // ASCII - 210
{ 0x00,0x00,0x1F,0x10,0x1F,0x10 }, // ASCII - 211
{ 0x00,0x00,0x00,0x1F,0x14,0x14 }, // ASCII - 212
{ 0x00,0x00,0x00,0xFC,0x14,0x14 }, // ASCII - 213
{ 0x00,0x00,0xF0,0x10,0xF0,0x10 }, // ASCII - 214
{ 0x10,0x10,0xFF,0x10,0xFF,0x10 }, // ASCII - 215
{ 0x14,0x14,0x14,0xFF,0x14,0x14 }, // ASCII - 216
{ 0x10,0x10,0x10,0x1F,0x00,0x00 }, // ASCII - 217
{ 0x00,0x00,0x00,0xF0,0x10,0x10 }, // ASCII - 218
{ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }, // ASCII - 219
{ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0 }, // ASCII - 220
{ 0xFF,0xFF,0xFF,0x00,0x00,0x00 }, // ASCII - 221
{ 0x00,0x00,0x00,0xFF,0xFF,0xFF }, // ASCII - 222
{ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F }, // ASCII - 223
{ 0x38,0x44,0x44,0x38,0x44,0x00 }, // ASCII - 224
{ 0x7C,0x2A,0x2A,0x3E,0x14,0x00 }, // ASCII - 225
{ 0x7E,0x02,0x02,0x06,0x06,0x00 }, // ASCII - 226
{ 0x02,0x7E,0x02,0x7E,0x02,0x00 }, // ASCII - 227
{ 0x63,0x55,0x49,0x41,0x63,0x00 }, // ASCII - 228
{ 0x38,0x44,0x44,0x3C,0x04,0x00 }, // ASCII - 229
{ 0x40,0x7E,0x20,0x1E,0x20,0x00 }, // ASCII - 230
{ 0x06,0x02,0x7E,0x02,0x02,0x00 }, // ASCII - 231
{ 0x99,0xA5,0xE7,0xA5,0x99,0x00 }, // ASCII - 232
{ 0x1C,0x2A,0x49,0x2A,0x1C,0x00 }, // ASCII - 233
{ 0x4C,0x72,0x01,0x72,0x4C,0x00 }, // ASCII - 234
{ 0x30,0x4A,0x4D,0x4D,0x30,0x00 }, // ASCII - 235
{ 0x30,0x48,0x78,0x48,0x30,0x00 }, // ASCII - 236
{ 0xBC,0x62,0x5A,0x46,0x3D,0x00 }, // ASCII - 237
{ 0x3E,0x49,0x49,0x49,0x00,0x00 }, // ASCII - 238
{ 0x7E,0x01,0x01,0x01,0x7E,0x00 }, // ASCII - 239
{ 0x2A,0x2A,0x2A,0x2A,0x2A,0x00 }, // ASCII - 240
{ 0x44,0x44,0x5F,0x44,0x44,0x00 }, // ASCII - 241
{ 0x40,0x51,0x4A,0x44,0x40,0x00 }, // ASCII - 242
{ 0x40,0x44,0x4A,0x51,0x40,0x00 }, // ASCII - 243
{ 0x00,0x00,0xFF,0x01,0x03,0x00 }, // ASCII - 244
{ 0xE0,0x80,0xFF,0x00,0x00,0x00 }, // ASCII - 245
{ 0x08,0x08,0x6B,0x6B,0x08,0x08 }, // ASCII - 246
{ 0x36,0x12,0x36,0x24,0x36,0x00 }, // ASCII - 247
{ 0x06,0x0F,0x09,0x0F,0x06,0x00 }, // ASCII - 248
{ 0x00,0x00,0x18,0x18,0x00,0x00 }, // ASCII - 249
{ 0x00,0x00,0x10,0x10,0x00,0x00 }, // ASCII - 250
{ 0x30,0x40,0xFF,0x01,0x01,0x00 }, // ASCII - 251
{ 0x00,0x1F,0x01,0x01,0x1E,0x00 }, // ASCII - 252
{ 0x00,0x19,0x1D,0x17,0x12,0x00 }, // ASCII - 253
{ 0x00,0x3C,0x3C,0x3C,0x3C,0x00 }, // ASCII - 254
{ 0x00,0x00,0x00,0x00,0x00,0x00 } // ASCII - 255
};
 
/************************ E n d o f F i l e ****************************/
/Transportables_Koptertool/trunk/F8X6.d
0,0 → 1,0
F8X6.o F8X6.d : F8X6.c
/Transportables_Koptertool/trunk/F8X6.lst
0,0 → 1,1563
1 .file "F8X6.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global f8x6
19 .section .progmem.data,"a",@progbits
22 f8x6:
23 0000 00 .byte 0
24 0001 00 .byte 0
25 0002 00 .byte 0
26 0003 00 .byte 0
27 0004 00 .byte 0
28 0005 00 .byte 0
29 0006 3E .byte 62
30 0007 5B .byte 91
31 0008 4F .byte 79
32 0009 5B .byte 91
33 000a 3E .byte 62
34 000b 00 .byte 0
35 000c 3E .byte 62
36 000d 6B .byte 107
37 000e 4F .byte 79
38 000f 6B .byte 107
39 0010 3E .byte 62
40 0011 00 .byte 0
41 0012 1C .byte 28
42 0013 3E .byte 62
43 0014 7C .byte 124
44 0015 3E .byte 62
45 0016 1C .byte 28
46 0017 00 .byte 0
47 0018 18 .byte 24
48 0019 3C .byte 60
49 001a 7E .byte 126
50 001b 3C .byte 60
51 001c 18 .byte 24
52 001d 00 .byte 0
53 001e 1C .byte 28
54 001f 57 .byte 87
55 0020 7D .byte 125
56 0021 57 .byte 87
57 0022 1C .byte 28
58 0023 00 .byte 0
59 0024 1C .byte 28
60 0025 5E .byte 94
61 0026 7F .byte 127
62 0027 5E .byte 94
63 0028 1C .byte 28
64 0029 00 .byte 0
65 002a 00 .byte 0
66 002b 18 .byte 24
67 002c 3C .byte 60
68 002d 18 .byte 24
69 002e 00 .byte 0
70 002f 00 .byte 0
71 0030 FF .byte -1
72 0031 E7 .byte -25
73 0032 C3 .byte -61
74 0033 E7 .byte -25
75 0034 FF .byte -1
76 0035 00 .byte 0
77 0036 00 .byte 0
78 0037 18 .byte 24
79 0038 24 .byte 36
80 0039 18 .byte 24
81 003a 00 .byte 0
82 003b 00 .byte 0
83 003c FF .byte -1
84 003d E7 .byte -25
85 003e DB .byte -37
86 003f E7 .byte -25
87 0040 FF .byte -1
88 0041 00 .byte 0
89 0042 30 .byte 48
90 0043 48 .byte 72
91 0044 3A .byte 58
92 0045 06 .byte 6
93 0046 0E .byte 14
94 0047 00 .byte 0
95 0048 26 .byte 38
96 0049 29 .byte 41
97 004a 79 .byte 121
98 004b 29 .byte 41
99 004c 26 .byte 38
100 004d 00 .byte 0
101 004e 40 .byte 64
102 004f 7F .byte 127
103 0050 05 .byte 5
104 0051 05 .byte 5
105 0052 07 .byte 7
106 0053 00 .byte 0
107 0054 40 .byte 64
108 0055 7F .byte 127
109 0056 05 .byte 5
110 0057 25 .byte 37
111 0058 3F .byte 63
112 0059 00 .byte 0
113 005a 5A .byte 90
114 005b 3C .byte 60
115 005c E7 .byte -25
116 005d 3C .byte 60
117 005e 5A .byte 90
118 005f 00 .byte 0
119 0060 7F .byte 127
120 0061 3E .byte 62
121 0062 1C .byte 28
122 0063 1C .byte 28
123 0064 08 .byte 8
124 0065 00 .byte 0
125 0066 08 .byte 8
126 0067 1C .byte 28
127 0068 1C .byte 28
128 0069 3E .byte 62
129 006a 7F .byte 127
130 006b 00 .byte 0
131 006c 14 .byte 20
132 006d 22 .byte 34
133 006e 7F .byte 127
134 006f 22 .byte 34
135 0070 14 .byte 20
136 0071 00 .byte 0
137 0072 5F .byte 95
138 0073 5F .byte 95
139 0074 00 .byte 0
140 0075 5F .byte 95
141 0076 5F .byte 95
142 0077 00 .byte 0
143 0078 06 .byte 6
144 0079 09 .byte 9
145 007a 7F .byte 127
146 007b 01 .byte 1
147 007c 7F .byte 127
148 007d 00 .byte 0
149 007e 00 .byte 0
150 007f 66 .byte 102
151 0080 89 .byte -119
152 0081 95 .byte -107
153 0082 6A .byte 106
154 0083 00 .byte 0
155 0084 60 .byte 96
156 0085 60 .byte 96
157 0086 60 .byte 96
158 0087 60 .byte 96
159 0088 60 .byte 96
160 0089 60 .byte 96
161 008a 94 .byte -108
162 008b A2 .byte -94
163 008c FF .byte -1
164 008d A2 .byte -94
165 008e 94 .byte -108
166 008f 00 .byte 0
167 0090 08 .byte 8
168 0091 04 .byte 4
169 0092 7E .byte 126
170 0093 04 .byte 4
171 0094 08 .byte 8
172 0095 00 .byte 0
173 0096 10 .byte 16
174 0097 20 .byte 32
175 0098 7E .byte 126
176 0099 20 .byte 32
177 009a 10 .byte 16
178 009b 00 .byte 0
179 009c 08 .byte 8
180 009d 08 .byte 8
181 009e 2A .byte 42
182 009f 1C .byte 28
183 00a0 08 .byte 8
184 00a1 00 .byte 0
185 00a2 08 .byte 8
186 00a3 1C .byte 28
187 00a4 2A .byte 42
188 00a5 08 .byte 8
189 00a6 08 .byte 8
190 00a7 00 .byte 0
191 00a8 1E .byte 30
192 00a9 10 .byte 16
193 00aa 10 .byte 16
194 00ab 10 .byte 16
195 00ac 10 .byte 16
196 00ad 00 .byte 0
197 00ae 0C .byte 12
198 00af 1E .byte 30
199 00b0 0C .byte 12
200 00b1 1E .byte 30
201 00b2 0C .byte 12
202 00b3 00 .byte 0
203 00b4 30 .byte 48
204 00b5 38 .byte 56
205 00b6 3E .byte 62
206 00b7 38 .byte 56
207 00b8 30 .byte 48
208 00b9 00 .byte 0
209 00ba 06 .byte 6
210 00bb 0E .byte 14
211 00bc 3E .byte 62
212 00bd 0E .byte 14
213 00be 06 .byte 6
214 00bf 00 .byte 0
215 00c0 00 .byte 0
216 00c1 00 .byte 0
217 00c2 00 .byte 0
218 00c3 00 .byte 0
219 00c4 00 .byte 0
220 00c5 00 .byte 0
221 00c6 00 .byte 0
222 00c7 00 .byte 0
223 00c8 5F .byte 95
224 00c9 00 .byte 0
225 00ca 00 .byte 0
226 00cb 00 .byte 0
227 00cc 00 .byte 0
228 00cd 07 .byte 7
229 00ce 00 .byte 0
230 00cf 07 .byte 7
231 00d0 00 .byte 0
232 00d1 00 .byte 0
233 00d2 14 .byte 20
234 00d3 7F .byte 127
235 00d4 14 .byte 20
236 00d5 7F .byte 127
237 00d6 14 .byte 20
238 00d7 00 .byte 0
239 00d8 24 .byte 36
240 00d9 2A .byte 42
241 00da 7F .byte 127
242 00db 2A .byte 42
243 00dc 12 .byte 18
244 00dd 00 .byte 0
245 00de 23 .byte 35
246 00df 13 .byte 19
247 00e0 08 .byte 8
248 00e1 64 .byte 100
249 00e2 62 .byte 98
250 00e3 00 .byte 0
251 00e4 36 .byte 54
252 00e5 49 .byte 73
253 00e6 56 .byte 86
254 00e7 20 .byte 32
255 00e8 50 .byte 80
256 00e9 00 .byte 0
257 00ea 00 .byte 0
258 00eb 08 .byte 8
259 00ec 07 .byte 7
260 00ed 03 .byte 3
261 00ee 00 .byte 0
262 00ef 00 .byte 0
263 00f0 00 .byte 0
264 00f1 1C .byte 28
265 00f2 22 .byte 34
266 00f3 41 .byte 65
267 00f4 00 .byte 0
268 00f5 00 .byte 0
269 00f6 00 .byte 0
270 00f7 41 .byte 65
271 00f8 22 .byte 34
272 00f9 1C .byte 28
273 00fa 00 .byte 0
274 00fb 00 .byte 0
275 00fc 2A .byte 42
276 00fd 1C .byte 28
277 00fe 7F .byte 127
278 00ff 1C .byte 28
279 0100 2A .byte 42
280 0101 00 .byte 0
281 0102 08 .byte 8
282 0103 08 .byte 8
283 0104 3E .byte 62
284 0105 08 .byte 8
285 0106 08 .byte 8
286 0107 00 .byte 0
287 0108 00 .byte 0
288 0109 80 .byte -128
289 010a 70 .byte 112
290 010b 30 .byte 48
291 010c 00 .byte 0
292 010d 00 .byte 0
293 010e 08 .byte 8
294 010f 08 .byte 8
295 0110 08 .byte 8
296 0111 08 .byte 8
297 0112 08 .byte 8
298 0113 00 .byte 0
299 0114 00 .byte 0
300 0115 00 .byte 0
301 0116 60 .byte 96
302 0117 60 .byte 96
303 0118 00 .byte 0
304 0119 00 .byte 0
305 011a 20 .byte 32
306 011b 10 .byte 16
307 011c 08 .byte 8
308 011d 04 .byte 4
309 011e 02 .byte 2
310 011f 00 .byte 0
311 0120 3E .byte 62
312 0121 51 .byte 81
313 0122 49 .byte 73
314 0123 45 .byte 69
315 0124 3E .byte 62
316 0125 00 .byte 0
317 0126 00 .byte 0
318 0127 42 .byte 66
319 0128 7F .byte 127
320 0129 40 .byte 64
321 012a 00 .byte 0
322 012b 00 .byte 0
323 012c 72 .byte 114
324 012d 49 .byte 73
325 012e 49 .byte 73
326 012f 49 .byte 73
327 0130 46 .byte 70
328 0131 00 .byte 0
329 0132 21 .byte 33
330 0133 41 .byte 65
331 0134 49 .byte 73
332 0135 4D .byte 77
333 0136 33 .byte 51
334 0137 00 .byte 0
335 0138 18 .byte 24
336 0139 14 .byte 20
337 013a 12 .byte 18
338 013b 7F .byte 127
339 013c 10 .byte 16
340 013d 00 .byte 0
341 013e 27 .byte 39
342 013f 45 .byte 69
343 0140 45 .byte 69
344 0141 45 .byte 69
345 0142 39 .byte 57
346 0143 00 .byte 0
347 0144 3C .byte 60
348 0145 4A .byte 74
349 0146 49 .byte 73
350 0147 49 .byte 73
351 0148 31 .byte 49
352 0149 00 .byte 0
353 014a 41 .byte 65
354 014b 21 .byte 33
355 014c 11 .byte 17
356 014d 09 .byte 9
357 014e 07 .byte 7
358 014f 00 .byte 0
359 0150 36 .byte 54
360 0151 49 .byte 73
361 0152 49 .byte 73
362 0153 49 .byte 73
363 0154 36 .byte 54
364 0155 00 .byte 0
365 0156 46 .byte 70
366 0157 49 .byte 73
367 0158 49 .byte 73
368 0159 29 .byte 41
369 015a 1E .byte 30
370 015b 00 .byte 0
371 015c 00 .byte 0
372 015d 00 .byte 0
373 015e 14 .byte 20
374 015f 00 .byte 0
375 0160 00 .byte 0
376 0161 00 .byte 0
377 0162 00 .byte 0
378 0163 40 .byte 64
379 0164 34 .byte 52
380 0165 00 .byte 0
381 0166 00 .byte 0
382 0167 00 .byte 0
383 0168 00 .byte 0
384 0169 08 .byte 8
385 016a 14 .byte 20
386 016b 22 .byte 34
387 016c 41 .byte 65
388 016d 00 .byte 0
389 016e 14 .byte 20
390 016f 14 .byte 20
391 0170 14 .byte 20
392 0171 14 .byte 20
393 0172 14 .byte 20
394 0173 00 .byte 0
395 0174 00 .byte 0
396 0175 41 .byte 65
397 0176 22 .byte 34
398 0177 14 .byte 20
399 0178 08 .byte 8
400 0179 00 .byte 0
401 017a 02 .byte 2
402 017b 01 .byte 1
403 017c 59 .byte 89
404 017d 09 .byte 9
405 017e 06 .byte 6
406 017f 00 .byte 0
407 0180 3E .byte 62
408 0181 41 .byte 65
409 0182 5D .byte 93
410 0183 59 .byte 89
411 0184 4E .byte 78
412 0185 00 .byte 0
413 0186 7C .byte 124
414 0187 12 .byte 18
415 0188 11 .byte 17
416 0189 12 .byte 18
417 018a 7C .byte 124
418 018b 00 .byte 0
419 018c 7F .byte 127
420 018d 49 .byte 73
421 018e 49 .byte 73
422 018f 49 .byte 73
423 0190 36 .byte 54
424 0191 00 .byte 0
425 0192 3E .byte 62
426 0193 41 .byte 65
427 0194 41 .byte 65
428 0195 41 .byte 65
429 0196 22 .byte 34
430 0197 00 .byte 0
431 0198 7F .byte 127
432 0199 41 .byte 65
433 019a 41 .byte 65
434 019b 41 .byte 65
435 019c 3E .byte 62
436 019d 00 .byte 0
437 019e 7F .byte 127
438 019f 49 .byte 73
439 01a0 49 .byte 73
440 01a1 49 .byte 73
441 01a2 41 .byte 65
442 01a3 00 .byte 0
443 01a4 7F .byte 127
444 01a5 09 .byte 9
445 01a6 09 .byte 9
446 01a7 09 .byte 9
447 01a8 01 .byte 1
448 01a9 00 .byte 0
449 01aa 3E .byte 62
450 01ab 41 .byte 65
451 01ac 41 .byte 65
452 01ad 51 .byte 81
453 01ae 73 .byte 115
454 01af 00 .byte 0
455 01b0 7F .byte 127
456 01b1 08 .byte 8
457 01b2 08 .byte 8
458 01b3 08 .byte 8
459 01b4 7F .byte 127
460 01b5 00 .byte 0
461 01b6 00 .byte 0
462 01b7 41 .byte 65
463 01b8 7F .byte 127
464 01b9 41 .byte 65
465 01ba 00 .byte 0
466 01bb 00 .byte 0
467 01bc 20 .byte 32
468 01bd 40 .byte 64
469 01be 41 .byte 65
470 01bf 3F .byte 63
471 01c0 01 .byte 1
472 01c1 00 .byte 0
473 01c2 7F .byte 127
474 01c3 08 .byte 8
475 01c4 14 .byte 20
476 01c5 22 .byte 34
477 01c6 41 .byte 65
478 01c7 00 .byte 0
479 01c8 7F .byte 127
480 01c9 40 .byte 64
481 01ca 40 .byte 64
482 01cb 40 .byte 64
483 01cc 40 .byte 64
484 01cd 00 .byte 0
485 01ce 7F .byte 127
486 01cf 02 .byte 2
487 01d0 1C .byte 28
488 01d1 02 .byte 2
489 01d2 7F .byte 127
490 01d3 00 .byte 0
491 01d4 7F .byte 127
492 01d5 04 .byte 4
493 01d6 08 .byte 8
494 01d7 10 .byte 16
495 01d8 7F .byte 127
496 01d9 00 .byte 0
497 01da 3E .byte 62
498 01db 41 .byte 65
499 01dc 41 .byte 65
500 01dd 41 .byte 65
501 01de 3E .byte 62
502 01df 00 .byte 0
503 01e0 7F .byte 127
504 01e1 09 .byte 9
505 01e2 09 .byte 9
506 01e3 09 .byte 9
507 01e4 06 .byte 6
508 01e5 00 .byte 0
509 01e6 3E .byte 62
510 01e7 41 .byte 65
511 01e8 51 .byte 81
512 01e9 21 .byte 33
513 01ea 5E .byte 94
514 01eb 00 .byte 0
515 01ec 7F .byte 127
516 01ed 09 .byte 9
517 01ee 19 .byte 25
518 01ef 29 .byte 41
519 01f0 46 .byte 70
520 01f1 00 .byte 0
521 01f2 26 .byte 38
522 01f3 49 .byte 73
523 01f4 49 .byte 73
524 01f5 49 .byte 73
525 01f6 32 .byte 50
526 01f7 00 .byte 0
527 01f8 03 .byte 3
528 01f9 01 .byte 1
529 01fa 7F .byte 127
530 01fb 01 .byte 1
531 01fc 03 .byte 3
532 01fd 00 .byte 0
533 01fe 3F .byte 63
534 01ff 40 .byte 64
535 0200 40 .byte 64
536 0201 40 .byte 64
537 0202 3F .byte 63
538 0203 00 .byte 0
539 0204 1F .byte 31
540 0205 20 .byte 32
541 0206 40 .byte 64
542 0207 20 .byte 32
543 0208 1F .byte 31
544 0209 00 .byte 0
545 020a 3F .byte 63
546 020b 40 .byte 64
547 020c 38 .byte 56
548 020d 40 .byte 64
549 020e 3F .byte 63
550 020f 00 .byte 0
551 0210 63 .byte 99
552 0211 14 .byte 20
553 0212 08 .byte 8
554 0213 14 .byte 20
555 0214 63 .byte 99
556 0215 00 .byte 0
557 0216 03 .byte 3
558 0217 04 .byte 4
559 0218 78 .byte 120
560 0219 04 .byte 4
561 021a 03 .byte 3
562 021b 00 .byte 0
563 021c 61 .byte 97
564 021d 59 .byte 89
565 021e 49 .byte 73
566 021f 4D .byte 77
567 0220 43 .byte 67
568 0221 00 .byte 0
569 0222 00 .byte 0
570 0223 7F .byte 127
571 0224 41 .byte 65
572 0225 41 .byte 65
573 0226 41 .byte 65
574 0227 00 .byte 0
575 0228 02 .byte 2
576 0229 04 .byte 4
577 022a 08 .byte 8
578 022b 10 .byte 16
579 022c 20 .byte 32
580 022d 00 .byte 0
581 022e 00 .byte 0
582 022f 41 .byte 65
583 0230 41 .byte 65
584 0231 41 .byte 65
585 0232 7F .byte 127
586 0233 00 .byte 0
587 0234 04 .byte 4
588 0235 02 .byte 2
589 0236 01 .byte 1
590 0237 02 .byte 2
591 0238 04 .byte 4
592 0239 00 .byte 0
593 023a 40 .byte 64
594 023b 40 .byte 64
595 023c 40 .byte 64
596 023d 40 .byte 64
597 023e 40 .byte 64
598 023f 00 .byte 0
599 0240 00 .byte 0
600 0241 03 .byte 3
601 0242 07 .byte 7
602 0243 08 .byte 8
603 0244 00 .byte 0
604 0245 00 .byte 0
605 0246 20 .byte 32
606 0247 54 .byte 84
607 0248 54 .byte 84
608 0249 78 .byte 120
609 024a 40 .byte 64
610 024b 00 .byte 0
611 024c 7F .byte 127
612 024d 28 .byte 40
613 024e 44 .byte 68
614 024f 44 .byte 68
615 0250 38 .byte 56
616 0251 00 .byte 0
617 0252 38 .byte 56
618 0253 44 .byte 68
619 0254 44 .byte 68
620 0255 44 .byte 68
621 0256 28 .byte 40
622 0257 00 .byte 0
623 0258 38 .byte 56
624 0259 44 .byte 68
625 025a 44 .byte 68
626 025b 28 .byte 40
627 025c 7F .byte 127
628 025d 00 .byte 0
629 025e 38 .byte 56
630 025f 54 .byte 84
631 0260 54 .byte 84
632 0261 54 .byte 84
633 0262 18 .byte 24
634 0263 00 .byte 0
635 0264 00 .byte 0
636 0265 08 .byte 8
637 0266 7E .byte 126
638 0267 09 .byte 9
639 0268 02 .byte 2
640 0269 00 .byte 0
641 026a 18 .byte 24
642 026b A4 .byte -92
643 026c A4 .byte -92
644 026d 9C .byte -100
645 026e 78 .byte 120
646 026f 00 .byte 0
647 0270 7F .byte 127
648 0271 08 .byte 8
649 0272 04 .byte 4
650 0273 04 .byte 4
651 0274 78 .byte 120
652 0275 00 .byte 0
653 0276 00 .byte 0
654 0277 44 .byte 68
655 0278 7D .byte 125
656 0279 40 .byte 64
657 027a 00 .byte 0
658 027b 00 .byte 0
659 027c 20 .byte 32
660 027d 40 .byte 64
661 027e 40 .byte 64
662 027f 3D .byte 61
663 0280 00 .byte 0
664 0281 00 .byte 0
665 0282 7F .byte 127
666 0283 10 .byte 16
667 0284 28 .byte 40
668 0285 44 .byte 68
669 0286 00 .byte 0
670 0287 00 .byte 0
671 0288 00 .byte 0
672 0289 41 .byte 65
673 028a 7F .byte 127
674 028b 40 .byte 64
675 028c 00 .byte 0
676 028d 00 .byte 0
677 028e 7C .byte 124
678 028f 04 .byte 4
679 0290 78 .byte 120
680 0291 04 .byte 4
681 0292 78 .byte 120
682 0293 00 .byte 0
683 0294 7C .byte 124
684 0295 08 .byte 8
685 0296 04 .byte 4
686 0297 04 .byte 4
687 0298 78 .byte 120
688 0299 00 .byte 0
689 029a 38 .byte 56
690 029b 44 .byte 68
691 029c 44 .byte 68
692 029d 44 .byte 68
693 029e 38 .byte 56
694 029f 00 .byte 0
695 02a0 FC .byte -4
696 02a1 18 .byte 24
697 02a2 24 .byte 36
698 02a3 24 .byte 36
699 02a4 18 .byte 24
700 02a5 00 .byte 0
701 02a6 18 .byte 24
702 02a7 24 .byte 36
703 02a8 24 .byte 36
704 02a9 18 .byte 24
705 02aa FC .byte -4
706 02ab 00 .byte 0
707 02ac 7C .byte 124
708 02ad 08 .byte 8
709 02ae 04 .byte 4
710 02af 04 .byte 4
711 02b0 08 .byte 8
712 02b1 00 .byte 0
713 02b2 48 .byte 72
714 02b3 54 .byte 84
715 02b4 54 .byte 84
716 02b5 54 .byte 84
717 02b6 24 .byte 36
718 02b7 00 .byte 0
719 02b8 04 .byte 4
720 02b9 04 .byte 4
721 02ba 3F .byte 63
722 02bb 44 .byte 68
723 02bc 24 .byte 36
724 02bd 00 .byte 0
725 02be 3C .byte 60
726 02bf 40 .byte 64
727 02c0 40 .byte 64
728 02c1 20 .byte 32
729 02c2 7C .byte 124
730 02c3 00 .byte 0
731 02c4 1C .byte 28
732 02c5 20 .byte 32
733 02c6 40 .byte 64
734 02c7 20 .byte 32
735 02c8 1C .byte 28
736 02c9 00 .byte 0
737 02ca 3C .byte 60
738 02cb 40 .byte 64
739 02cc 30 .byte 48
740 02cd 40 .byte 64
741 02ce 3C .byte 60
742 02cf 00 .byte 0
743 02d0 44 .byte 68
744 02d1 28 .byte 40
745 02d2 10 .byte 16
746 02d3 28 .byte 40
747 02d4 44 .byte 68
748 02d5 00 .byte 0
749 02d6 4C .byte 76
750 02d7 90 .byte -112
751 02d8 90 .byte -112
752 02d9 90 .byte -112
753 02da 7C .byte 124
754 02db 00 .byte 0
755 02dc 44 .byte 68
756 02dd 64 .byte 100
757 02de 54 .byte 84
758 02df 4C .byte 76
759 02e0 44 .byte 68
760 02e1 00 .byte 0
761 02e2 00 .byte 0
762 02e3 08 .byte 8
763 02e4 36 .byte 54
764 02e5 41 .byte 65
765 02e6 00 .byte 0
766 02e7 00 .byte 0
767 02e8 00 .byte 0
768 02e9 00 .byte 0
769 02ea 77 .byte 119
770 02eb 00 .byte 0
771 02ec 00 .byte 0
772 02ed 00 .byte 0
773 02ee 00 .byte 0
774 02ef 41 .byte 65
775 02f0 36 .byte 54
776 02f1 08 .byte 8
777 02f2 00 .byte 0
778 02f3 00 .byte 0
779 02f4 02 .byte 2
780 02f5 01 .byte 1
781 02f6 02 .byte 2
782 02f7 04 .byte 4
783 02f8 02 .byte 2
784 02f9 00 .byte 0
785 02fa 3C .byte 60
786 02fb 26 .byte 38
787 02fc 23 .byte 35
788 02fd 26 .byte 38
789 02fe 3C .byte 60
790 02ff 00 .byte 0
791 0300 1E .byte 30
792 0301 A1 .byte -95
793 0302 A1 .byte -95
794 0303 61 .byte 97
795 0304 12 .byte 18
796 0305 00 .byte 0
797 0306 3A .byte 58
798 0307 40 .byte 64
799 0308 40 .byte 64
800 0309 20 .byte 32
801 030a 7A .byte 122
802 030b 00 .byte 0
803 030c 38 .byte 56
804 030d 54 .byte 84
805 030e 54 .byte 84
806 030f 55 .byte 85
807 0310 59 .byte 89
808 0311 00 .byte 0
809 0312 21 .byte 33
810 0313 55 .byte 85
811 0314 55 .byte 85
812 0315 79 .byte 121
813 0316 41 .byte 65
814 0317 00 .byte 0
815 0318 21 .byte 33
816 0319 54 .byte 84
817 031a 54 .byte 84
818 031b 78 .byte 120
819 031c 41 .byte 65
820 031d 00 .byte 0
821 031e 21 .byte 33
822 031f 55 .byte 85
823 0320 54 .byte 84
824 0321 78 .byte 120
825 0322 40 .byte 64
826 0323 00 .byte 0
827 0324 20 .byte 32
828 0325 54 .byte 84
829 0326 55 .byte 85
830 0327 79 .byte 121
831 0328 40 .byte 64
832 0329 00 .byte 0
833 032a 0C .byte 12
834 032b 1E .byte 30
835 032c 52 .byte 82
836 032d 72 .byte 114
837 032e 12 .byte 18
838 032f 00 .byte 0
839 0330 39 .byte 57
840 0331 55 .byte 85
841 0332 55 .byte 85
842 0333 55 .byte 85
843 0334 59 .byte 89
844 0335 00 .byte 0
845 0336 39 .byte 57
846 0337 54 .byte 84
847 0338 54 .byte 84
848 0339 54 .byte 84
849 033a 59 .byte 89
850 033b 00 .byte 0
851 033c 39 .byte 57
852 033d 55 .byte 85
853 033e 54 .byte 84
854 033f 54 .byte 84
855 0340 58 .byte 88
856 0341 00 .byte 0
857 0342 00 .byte 0
858 0343 00 .byte 0
859 0344 45 .byte 69
860 0345 7C .byte 124
861 0346 41 .byte 65
862 0347 00 .byte 0
863 0348 00 .byte 0
864 0349 02 .byte 2
865 034a 45 .byte 69
866 034b 7D .byte 125
867 034c 42 .byte 66
868 034d 00 .byte 0
869 034e 00 .byte 0
870 034f 01 .byte 1
871 0350 45 .byte 69
872 0351 7C .byte 124
873 0352 40 .byte 64
874 0353 00 .byte 0
875 0354 79 .byte 121
876 0355 14 .byte 20
877 0356 12 .byte 18
878 0357 14 .byte 20
879 0358 79 .byte 121
880 0359 00 .byte 0
881 035a F0 .byte -16
882 035b 28 .byte 40
883 035c 25 .byte 37
884 035d 28 .byte 40
885 035e F0 .byte -16
886 035f 00 .byte 0
887 0360 7C .byte 124
888 0361 54 .byte 84
889 0362 55 .byte 85
890 0363 45 .byte 69
891 0364 00 .byte 0
892 0365 00 .byte 0
893 0366 20 .byte 32
894 0367 54 .byte 84
895 0368 54 .byte 84
896 0369 7C .byte 124
897 036a 54 .byte 84
898 036b 44 .byte 68
899 036c 7C .byte 124
900 036d 0A .byte 10
901 036e 09 .byte 9
902 036f 7F .byte 127
903 0370 49 .byte 73
904 0371 41 .byte 65
905 0372 32 .byte 50
906 0373 49 .byte 73
907 0374 49 .byte 73
908 0375 49 .byte 73
909 0376 32 .byte 50
910 0377 00 .byte 0
911 0378 32 .byte 50
912 0379 48 .byte 72
913 037a 48 .byte 72
914 037b 48 .byte 72
915 037c 32 .byte 50
916 037d 00 .byte 0
917 037e 32 .byte 50
918 037f 4A .byte 74
919 0380 48 .byte 72
920 0381 48 .byte 72
921 0382 30 .byte 48
922 0383 00 .byte 0
923 0384 3A .byte 58
924 0385 41 .byte 65
925 0386 41 .byte 65
926 0387 21 .byte 33
927 0388 7A .byte 122
928 0389 00 .byte 0
929 038a 3A .byte 58
930 038b 42 .byte 66
931 038c 40 .byte 64
932 038d 20 .byte 32
933 038e 78 .byte 120
934 038f 00 .byte 0
935 0390 00 .byte 0
936 0391 9D .byte -99
937 0392 A0 .byte -96
938 0393 A0 .byte -96
939 0394 7D .byte 125
940 0395 00 .byte 0
941 0396 39 .byte 57
942 0397 44 .byte 68
943 0398 44 .byte 68
944 0399 44 .byte 68
945 039a 39 .byte 57
946 039b 00 .byte 0
947 039c 3D .byte 61
948 039d 40 .byte 64
949 039e 40 .byte 64
950 039f 40 .byte 64
951 03a0 3D .byte 61
952 03a1 00 .byte 0
953 03a2 3C .byte 60
954 03a3 24 .byte 36
955 03a4 FF .byte -1
956 03a5 24 .byte 36
957 03a6 24 .byte 36
958 03a7 00 .byte 0
959 03a8 48 .byte 72
960 03a9 7E .byte 126
961 03aa 49 .byte 73
962 03ab 43 .byte 67
963 03ac 66 .byte 102
964 03ad 00 .byte 0
965 03ae 2B .byte 43
966 03af 2F .byte 47
967 03b0 FC .byte -4
968 03b1 2F .byte 47
969 03b2 2B .byte 43
970 03b3 00 .byte 0
971 03b4 FF .byte -1
972 03b5 09 .byte 9
973 03b6 29 .byte 41
974 03b7 F6 .byte -10
975 03b8 20 .byte 32
976 03b9 00 .byte 0
977 03ba C0 .byte -64
978 03bb 88 .byte -120
979 03bc 7E .byte 126
980 03bd 09 .byte 9
981 03be 03 .byte 3
982 03bf 00 .byte 0
983 03c0 20 .byte 32
984 03c1 54 .byte 84
985 03c2 54 .byte 84
986 03c3 79 .byte 121
987 03c4 41 .byte 65
988 03c5 00 .byte 0
989 03c6 00 .byte 0
990 03c7 00 .byte 0
991 03c8 44 .byte 68
992 03c9 7D .byte 125
993 03ca 41 .byte 65
994 03cb 00 .byte 0
995 03cc 30 .byte 48
996 03cd 48 .byte 72
997 03ce 48 .byte 72
998 03cf 4A .byte 74
999 03d0 32 .byte 50
1000 03d1 00 .byte 0
1001 03d2 38 .byte 56
1002 03d3 40 .byte 64
1003 03d4 40 .byte 64
1004 03d5 22 .byte 34
1005 03d6 7A .byte 122
1006 03d7 00 .byte 0
1007 03d8 00 .byte 0
1008 03d9 7A .byte 122
1009 03da 0A .byte 10
1010 03db 0A .byte 10
1011 03dc 72 .byte 114
1012 03dd 00 .byte 0
1013 03de 7D .byte 125
1014 03df 0D .byte 13
1015 03e0 19 .byte 25
1016 03e1 31 .byte 49
1017 03e2 7D .byte 125
1018 03e3 00 .byte 0
1019 03e4 26 .byte 38
1020 03e5 29 .byte 41
1021 03e6 29 .byte 41
1022 03e7 2F .byte 47
1023 03e8 28 .byte 40
1024 03e9 00 .byte 0
1025 03ea 26 .byte 38
1026 03eb 29 .byte 41
1027 03ec 29 .byte 41
1028 03ed 29 .byte 41
1029 03ee 26 .byte 38
1030 03ef 00 .byte 0
1031 03f0 30 .byte 48
1032 03f1 48 .byte 72
1033 03f2 4D .byte 77
1034 03f3 40 .byte 64
1035 03f4 20 .byte 32
1036 03f5 00 .byte 0
1037 03f6 38 .byte 56
1038 03f7 08 .byte 8
1039 03f8 08 .byte 8
1040 03f9 08 .byte 8
1041 03fa 08 .byte 8
1042 03fb 00 .byte 0
1043 03fc 08 .byte 8
1044 03fd 08 .byte 8
1045 03fe 08 .byte 8
1046 03ff 08 .byte 8
1047 0400 38 .byte 56
1048 0401 00 .byte 0
1049 0402 2F .byte 47
1050 0403 10 .byte 16
1051 0404 C8 .byte -56
1052 0405 AC .byte -84
1053 0406 BA .byte -70
1054 0407 00 .byte 0
1055 0408 2F .byte 47
1056 0409 10 .byte 16
1057 040a 28 .byte 40
1058 040b 34 .byte 52
1059 040c FA .byte -6
1060 040d 00 .byte 0
1061 040e 00 .byte 0
1062 040f 00 .byte 0
1063 0410 7B .byte 123
1064 0411 00 .byte 0
1065 0412 00 .byte 0
1066 0413 00 .byte 0
1067 0414 08 .byte 8
1068 0415 14 .byte 20
1069 0416 2A .byte 42
1070 0417 14 .byte 20
1071 0418 22 .byte 34
1072 0419 00 .byte 0
1073 041a 22 .byte 34
1074 041b 14 .byte 20
1075 041c 2A .byte 42
1076 041d 14 .byte 20
1077 041e 08 .byte 8
1078 041f 00 .byte 0
1079 0420 AA .byte -86
1080 0421 00 .byte 0
1081 0422 55 .byte 85
1082 0423 00 .byte 0
1083 0424 AA .byte -86
1084 0425 00 .byte 0
1085 0426 AA .byte -86
1086 0427 55 .byte 85
1087 0428 AA .byte -86
1088 0429 55 .byte 85
1089 042a AA .byte -86
1090 042b 55 .byte 85
1091 042c 55 .byte 85
1092 042d AA .byte -86
1093 042e 55 .byte 85
1094 042f AA .byte -86
1095 0430 55 .byte 85
1096 0431 AA .byte -86
1097 0432 00 .byte 0
1098 0433 00 .byte 0
1099 0434 00 .byte 0
1100 0435 FF .byte -1
1101 0436 00 .byte 0
1102 0437 00 .byte 0
1103 0438 10 .byte 16
1104 0439 10 .byte 16
1105 043a 10 .byte 16
1106 043b FF .byte -1
1107 043c 00 .byte 0
1108 043d 00 .byte 0
1109 043e 14 .byte 20
1110 043f 14 .byte 20
1111 0440 14 .byte 20
1112 0441 FF .byte -1
1113 0442 00 .byte 0
1114 0443 00 .byte 0
1115 0444 10 .byte 16
1116 0445 10 .byte 16
1117 0446 FF .byte -1
1118 0447 00 .byte 0
1119 0448 FF .byte -1
1120 0449 00 .byte 0
1121 044a 10 .byte 16
1122 044b 10 .byte 16
1123 044c F0 .byte -16
1124 044d 10 .byte 16
1125 044e F0 .byte -16
1126 044f 00 .byte 0
1127 0450 14 .byte 20
1128 0451 14 .byte 20
1129 0452 14 .byte 20
1130 0453 FC .byte -4
1131 0454 00 .byte 0
1132 0455 00 .byte 0
1133 0456 14 .byte 20
1134 0457 14 .byte 20
1135 0458 F7 .byte -9
1136 0459 00 .byte 0
1137 045a FF .byte -1
1138 045b 00 .byte 0
1139 045c 00 .byte 0
1140 045d 00 .byte 0
1141 045e FF .byte -1
1142 045f 00 .byte 0
1143 0460 FF .byte -1
1144 0461 00 .byte 0
1145 0462 14 .byte 20
1146 0463 14 .byte 20
1147 0464 F4 .byte -12
1148 0465 04 .byte 4
1149 0466 FC .byte -4
1150 0467 00 .byte 0
1151 0468 14 .byte 20
1152 0469 14 .byte 20
1153 046a 17 .byte 23
1154 046b 10 .byte 16
1155 046c 1F .byte 31
1156 046d 00 .byte 0
1157 046e 10 .byte 16
1158 046f 10 .byte 16
1159 0470 1F .byte 31
1160 0471 10 .byte 16
1161 0472 1F .byte 31
1162 0473 00 .byte 0
1163 0474 14 .byte 20
1164 0475 14 .byte 20
1165 0476 14 .byte 20
1166 0477 1F .byte 31
1167 0478 00 .byte 0
1168 0479 00 .byte 0
1169 047a 10 .byte 16
1170 047b 10 .byte 16
1171 047c 10 .byte 16
1172 047d F0 .byte -16
1173 047e 00 .byte 0
1174 047f 00 .byte 0
1175 0480 00 .byte 0
1176 0481 00 .byte 0
1177 0482 00 .byte 0
1178 0483 1F .byte 31
1179 0484 10 .byte 16
1180 0485 10 .byte 16
1181 0486 10 .byte 16
1182 0487 10 .byte 16
1183 0488 10 .byte 16
1184 0489 1F .byte 31
1185 048a 10 .byte 16
1186 048b 10 .byte 16
1187 048c 10 .byte 16
1188 048d 10 .byte 16
1189 048e 10 .byte 16
1190 048f F0 .byte -16
1191 0490 10 .byte 16
1192 0491 10 .byte 16
1193 0492 00 .byte 0
1194 0493 00 .byte 0
1195 0494 00 .byte 0
1196 0495 FF .byte -1
1197 0496 10 .byte 16
1198 0497 10 .byte 16
1199 0498 10 .byte 16
1200 0499 10 .byte 16
1201 049a 10 .byte 16
1202 049b 10 .byte 16
1203 049c 10 .byte 16
1204 049d 10 .byte 16
1205 049e 10 .byte 16
1206 049f 10 .byte 16
1207 04a0 10 .byte 16
1208 04a1 FF .byte -1
1209 04a2 10 .byte 16
1210 04a3 10 .byte 16
1211 04a4 00 .byte 0
1212 04a5 00 .byte 0
1213 04a6 00 .byte 0
1214 04a7 FF .byte -1
1215 04a8 14 .byte 20
1216 04a9 14 .byte 20
1217 04aa 00 .byte 0
1218 04ab 00 .byte 0
1219 04ac FF .byte -1
1220 04ad 00 .byte 0
1221 04ae FF .byte -1
1222 04af 10 .byte 16
1223 04b0 00 .byte 0
1224 04b1 00 .byte 0
1225 04b2 1F .byte 31
1226 04b3 10 .byte 16
1227 04b4 17 .byte 23
1228 04b5 14 .byte 20
1229 04b6 00 .byte 0
1230 04b7 00 .byte 0
1231 04b8 FC .byte -4
1232 04b9 04 .byte 4
1233 04ba F4 .byte -12
1234 04bb 14 .byte 20
1235 04bc 14 .byte 20
1236 04bd 14 .byte 20
1237 04be 17 .byte 23
1238 04bf 10 .byte 16
1239 04c0 17 .byte 23
1240 04c1 14 .byte 20
1241 04c2 14 .byte 20
1242 04c3 14 .byte 20
1243 04c4 F4 .byte -12
1244 04c5 04 .byte 4
1245 04c6 F4 .byte -12
1246 04c7 14 .byte 20
1247 04c8 00 .byte 0
1248 04c9 00 .byte 0
1249 04ca FF .byte -1
1250 04cb 00 .byte 0
1251 04cc F7 .byte -9
1252 04cd 14 .byte 20
1253 04ce 14 .byte 20
1254 04cf 14 .byte 20
1255 04d0 14 .byte 20
1256 04d1 14 .byte 20
1257 04d2 14 .byte 20
1258 04d3 14 .byte 20
1259 04d4 14 .byte 20
1260 04d5 14 .byte 20
1261 04d6 F7 .byte -9
1262 04d7 00 .byte 0
1263 04d8 F7 .byte -9
1264 04d9 14 .byte 20
1265 04da 14 .byte 20
1266 04db 14 .byte 20
1267 04dc 14 .byte 20
1268 04dd 17 .byte 23
1269 04de 14 .byte 20
1270 04df 14 .byte 20
1271 04e0 10 .byte 16
1272 04e1 10 .byte 16
1273 04e2 1F .byte 31
1274 04e3 10 .byte 16
1275 04e4 1F .byte 31
1276 04e5 10 .byte 16
1277 04e6 14 .byte 20
1278 04e7 14 .byte 20
1279 04e8 14 .byte 20
1280 04e9 F4 .byte -12
1281 04ea 14 .byte 20
1282 04eb 14 .byte 20
1283 04ec 10 .byte 16
1284 04ed 10 .byte 16
1285 04ee F0 .byte -16
1286 04ef 10 .byte 16
1287 04f0 F0 .byte -16
1288 04f1 10 .byte 16
1289 04f2 00 .byte 0
1290 04f3 00 .byte 0
1291 04f4 1F .byte 31
1292 04f5 10 .byte 16
1293 04f6 1F .byte 31
1294 04f7 10 .byte 16
1295 04f8 00 .byte 0
1296 04f9 00 .byte 0
1297 04fa 00 .byte 0
1298 04fb 1F .byte 31
1299 04fc 14 .byte 20
1300 04fd 14 .byte 20
1301 04fe 00 .byte 0
1302 04ff 00 .byte 0
1303 0500 00 .byte 0
1304 0501 FC .byte -4
1305 0502 14 .byte 20
1306 0503 14 .byte 20
1307 0504 00 .byte 0
1308 0505 00 .byte 0
1309 0506 F0 .byte -16
1310 0507 10 .byte 16
1311 0508 F0 .byte -16
1312 0509 10 .byte 16
1313 050a 10 .byte 16
1314 050b 10 .byte 16
1315 050c FF .byte -1
1316 050d 10 .byte 16
1317 050e FF .byte -1
1318 050f 10 .byte 16
1319 0510 14 .byte 20
1320 0511 14 .byte 20
1321 0512 14 .byte 20
1322 0513 FF .byte -1
1323 0514 14 .byte 20
1324 0515 14 .byte 20
1325 0516 10 .byte 16
1326 0517 10 .byte 16
1327 0518 10 .byte 16
1328 0519 1F .byte 31
1329 051a 00 .byte 0
1330 051b 00 .byte 0
1331 051c 00 .byte 0
1332 051d 00 .byte 0
1333 051e 00 .byte 0
1334 051f F0 .byte -16
1335 0520 10 .byte 16
1336 0521 10 .byte 16
1337 0522 FF .byte -1
1338 0523 FF .byte -1
1339 0524 FF .byte -1
1340 0525 FF .byte -1
1341 0526 FF .byte -1
1342 0527 FF .byte -1
1343 0528 F0 .byte -16
1344 0529 F0 .byte -16
1345 052a F0 .byte -16
1346 052b F0 .byte -16
1347 052c F0 .byte -16
1348 052d F0 .byte -16
1349 052e FF .byte -1
1350 052f FF .byte -1
1351 0530 FF .byte -1
1352 0531 00 .byte 0
1353 0532 00 .byte 0
1354 0533 00 .byte 0
1355 0534 00 .byte 0
1356 0535 00 .byte 0
1357 0536 00 .byte 0
1358 0537 FF .byte -1
1359 0538 FF .byte -1
1360 0539 FF .byte -1
1361 053a 0F .byte 15
1362 053b 0F .byte 15
1363 053c 0F .byte 15
1364 053d 0F .byte 15
1365 053e 0F .byte 15
1366 053f 0F .byte 15
1367 0540 38 .byte 56
1368 0541 44 .byte 68
1369 0542 44 .byte 68
1370 0543 38 .byte 56
1371 0544 44 .byte 68
1372 0545 00 .byte 0
1373 0546 7C .byte 124
1374 0547 2A .byte 42
1375 0548 2A .byte 42
1376 0549 3E .byte 62
1377 054a 14 .byte 20
1378 054b 00 .byte 0
1379 054c 7E .byte 126
1380 054d 02 .byte 2
1381 054e 02 .byte 2
1382 054f 06 .byte 6
1383 0550 06 .byte 6
1384 0551 00 .byte 0
1385 0552 02 .byte 2
1386 0553 7E .byte 126
1387 0554 02 .byte 2
1388 0555 7E .byte 126
1389 0556 02 .byte 2
1390 0557 00 .byte 0
1391 0558 63 .byte 99
1392 0559 55 .byte 85
1393 055a 49 .byte 73
1394 055b 41 .byte 65
1395 055c 63 .byte 99
1396 055d 00 .byte 0
1397 055e 38 .byte 56
1398 055f 44 .byte 68
1399 0560 44 .byte 68
1400 0561 3C .byte 60
1401 0562 04 .byte 4
1402 0563 00 .byte 0
1403 0564 40 .byte 64
1404 0565 7E .byte 126
1405 0566 20 .byte 32
1406 0567 1E .byte 30
1407 0568 20 .byte 32
1408 0569 00 .byte 0
1409 056a 06 .byte 6
1410 056b 02 .byte 2
1411 056c 7E .byte 126
1412 056d 02 .byte 2
1413 056e 02 .byte 2
1414 056f 00 .byte 0
1415 0570 99 .byte -103
1416 0571 A5 .byte -91
1417 0572 E7 .byte -25
1418 0573 A5 .byte -91
1419 0574 99 .byte -103
1420 0575 00 .byte 0
1421 0576 1C .byte 28
1422 0577 2A .byte 42
1423 0578 49 .byte 73
1424 0579 2A .byte 42
1425 057a 1C .byte 28
1426 057b 00 .byte 0
1427 057c 4C .byte 76
1428 057d 72 .byte 114
1429 057e 01 .byte 1
1430 057f 72 .byte 114
1431 0580 4C .byte 76
1432 0581 00 .byte 0
1433 0582 30 .byte 48
1434 0583 4A .byte 74
1435 0584 4D .byte 77
1436 0585 4D .byte 77
1437 0586 30 .byte 48
1438 0587 00 .byte 0
1439 0588 30 .byte 48
1440 0589 48 .byte 72
1441 058a 78 .byte 120
1442 058b 48 .byte 72
1443 058c 30 .byte 48
1444 058d 00 .byte 0
1445 058e BC .byte -68
1446 058f 62 .byte 98
1447 0590 5A .byte 90
1448 0591 46 .byte 70
1449 0592 3D .byte 61
1450 0593 00 .byte 0
1451 0594 3E .byte 62
1452 0595 49 .byte 73
1453 0596 49 .byte 73
1454 0597 49 .byte 73
1455 0598 00 .byte 0
1456 0599 00 .byte 0
1457 059a 7E .byte 126
1458 059b 01 .byte 1
1459 059c 01 .byte 1
1460 059d 01 .byte 1
1461 059e 7E .byte 126
1462 059f 00 .byte 0
1463 05a0 2A .byte 42
1464 05a1 2A .byte 42
1465 05a2 2A .byte 42
1466 05a3 2A .byte 42
1467 05a4 2A .byte 42
1468 05a5 00 .byte 0
1469 05a6 44 .byte 68
1470 05a7 44 .byte 68
1471 05a8 5F .byte 95
1472 05a9 44 .byte 68
1473 05aa 44 .byte 68
1474 05ab 00 .byte 0
1475 05ac 40 .byte 64
1476 05ad 51 .byte 81
1477 05ae 4A .byte 74
1478 05af 44 .byte 68
1479 05b0 40 .byte 64
1480 05b1 00 .byte 0
1481 05b2 40 .byte 64
1482 05b3 44 .byte 68
1483 05b4 4A .byte 74
1484 05b5 51 .byte 81
1485 05b6 40 .byte 64
1486 05b7 00 .byte 0
1487 05b8 00 .byte 0
1488 05b9 00 .byte 0
1489 05ba FF .byte -1
1490 05bb 01 .byte 1
1491 05bc 03 .byte 3
1492 05bd 00 .byte 0
1493 05be E0 .byte -32
1494 05bf 80 .byte -128
1495 05c0 FF .byte -1
1496 05c1 00 .byte 0
1497 05c2 00 .byte 0
1498 05c3 00 .byte 0
1499 05c4 08 .byte 8
1500 05c5 08 .byte 8
1501 05c6 6B .byte 107
1502 05c7 6B .byte 107
1503 05c8 08 .byte 8
1504 05c9 08 .byte 8
1505 05ca 36 .byte 54
1506 05cb 12 .byte 18
1507 05cc 36 .byte 54
1508 05cd 24 .byte 36
1509 05ce 36 .byte 54
1510 05cf 00 .byte 0
1511 05d0 06 .byte 6
1512 05d1 0F .byte 15
1513 05d2 09 .byte 9
1514 05d3 0F .byte 15
1515 05d4 06 .byte 6
1516 05d5 00 .byte 0
1517 05d6 00 .byte 0
1518 05d7 00 .byte 0
1519 05d8 18 .byte 24
1520 05d9 18 .byte 24
1521 05da 00 .byte 0
1522 05db 00 .byte 0
1523 05dc 00 .byte 0
1524 05dd 00 .byte 0
1525 05de 10 .byte 16
1526 05df 10 .byte 16
1527 05e0 00 .byte 0
1528 05e1 00 .byte 0
1529 05e2 30 .byte 48
1530 05e3 40 .byte 64
1531 05e4 FF .byte -1
1532 05e5 01 .byte 1
1533 05e6 01 .byte 1
1534 05e7 00 .byte 0
1535 05e8 00 .byte 0
1536 05e9 1F .byte 31
1537 05ea 01 .byte 1
1538 05eb 01 .byte 1
1539 05ec 1E .byte 30
1540 05ed 00 .byte 0
1541 05ee 00 .byte 0
1542 05ef 19 .byte 25
1543 05f0 1D .byte 29
1544 05f1 17 .byte 23
1545 05f2 12 .byte 18
1546 05f3 00 .byte 0
1547 05f4 00 .byte 0
1548 05f5 3C .byte 60
1549 05f6 3C .byte 60
1550 05f7 3C .byte 60
1551 05f8 3C .byte 60
1552 05f9 00 .byte 0
1553 05fa 00 .byte 0
1554 05fb 00 .byte 0
1555 05fc 00 .byte 0
1556 05fd 00 .byte 0
1557 05fe 00 .byte 0
1558 05ff 00 .byte 0
1559 .text
1560 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 F8X6.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cceYaaaa.s:22 .progmem.data:00000000 f8x6
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
/Transportables_Koptertool/trunk/MMT.aps
0,0 → 1,0
<AVRStudio><MANAGEMENT><ProjectName>MMT</ProjectName><Created>16-May-2008 00:42:21</Created><LastEdit>22-May-2008 20:56:53</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>16-May-2008 00:42:21</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\MMT.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>D:\Develop\MMT\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>ICE50</CURRENT_TARGET><CURRENT_PART>ATmega32</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>1</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>base64.c</SOURCEFILE><SOURCEFILE>displ_val.c</SOURCEFILE><SOURCEFILE>display.c</SOURCEFILE><SOURCEFILE>F8X6.c</SOURCEFILE><SOURCEFILE>lcd.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>motortest.c</SOURCEFILE><SOURCEFILE>parameter.c</SOURCEFILE><SOURCEFILE>rs232.c</SOURCEFILE><SOURCEFILE>timer.c</SOURCEFILE><SOURCEFILE>settings.c</SOURCEFILE><SOURCEFILE>debug.c</SOURCEFILE><HEADERFILE>base64.h</HEADERFILE><HEADERFILE>displ_val.h</HEADERFILE><HEADERFILE>display.h</HEADERFILE><HEADERFILE>font8x6.h</HEADERFILE><HEADERFILE>lcd.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>motortest.h</HEADERFILE><HEADERFILE>parameter.h</HEADERFILE><HEADERFILE>rs232.h</HEADERFILE><HEADERFILE>timer.h</HEADERFILE><HEADERFILE>settings.h</HEADERFILE><HEADERFILE>debug.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega32</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>MMT.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>D:\WinAVR-20070525\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>D:\WinAVR-20070525\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>lcd.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>settings.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>settings.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>main.h</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>lcd.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>main.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.c</FileName><Status>1</Status></File00006></Files><Workspace><File00000><Position>270 211 1117 677</Position><LineCol>26 0</LineCol></File00000><File00001><Position>312 267 1159 733</Position><LineCol>9 0</LineCol></File00001><File00002><Position>179 65 1188 768</Position><LineCol>4 0</LineCol></File00002><File00003><Position>211 128 1058 594</Position><LineCol>43 0</LineCol></File00003><File00004><Position>255 186 1102 652</Position><LineCol>27 0</LineCol></File00004><File00005><Position>277 215 1124 681</Position><LineCol>88 0</LineCol></File00005><File00006><Position>188 71 1197 774</Position><LineCol>0 0</LineCol><State>Maximized</State></File00006></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/Transportables_Koptertool/trunk/base64.c
0,0 → 1,116
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "rs232.h"
#include "base64.h"
#include "lcd.h"
 
uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert)
uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext
//struct str_DebugIn *p_buffer;
 
 
uint8_t get_message() // Liest eine komplette Übertragung und dekodiert sie
{
uint8_t index, comm;
timer = 20; // Timer für Timeout
while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen #
if (timer > 0) // Falls kein Timeout auftrat
{
index = 0; // Die Rohdaten in r_buffer einlesen
do
{
comm = RS232_get();
r_buffer[index++] = comm;
if (index > 127) // Schutz vor Puffer-Überlauf
index = 127;
}
while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt...
base64_decode(index); // Die base64-kodierten Rohdaten umwandeln
return 0; // kein Fehler aufgetreten
}
else
{
return 1; // Fehler aufgetreten
}
}
 
 
uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um
{
uint8_t p,q;
uint8_t a,b,c,d;
 
p = 2;
q = 0;
while (p < number)
{
a = r_buffer[p + 0] - 61;
b = r_buffer[p + 1] - 61;
c = r_buffer[p + 2] - 61;
d = r_buffer[p + 3] - 61;
p += 4;
p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer
p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
p_buffer[q + 2] = ((c & 0x03) << 6) | d;
q += 3;
}
return q; // Rückgabe der Anzahl der Datenbytes
}
 
void base64_send(uint8_t number) // Sendet Daten zur Flight-Control
{ // Die Daten werden in p_buffer erwartet, umcodiert und gesendet
uint8_t bpointer,spointer;
uint8_t x,y,z,a;
uint16_t checksum;
 
r_buffer[0] = p_buffer[0];
r_buffer[1] = p_buffer[1];
r_buffer[2] = p_buffer[2];
 
bpointer = 3;
spointer = 3;
 
while (spointer < number)
{
x = p_buffer[spointer];
y = p_buffer[spointer + 1];
z = p_buffer[spointer + 2];
spointer += 3;
r_buffer[bpointer + 0] = (x >> 2) + 61;
r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61;
r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61;
r_buffer[bpointer + 3] = (z & 0x3F) + 61;
bpointer += 4;
}
 
checksum = 0;
for(a=0;a<bpointer;a++)
checksum += r_buffer[a];
checksum %= 4096;
r_buffer[bpointer] = (checksum / 64) + 61;
r_buffer[bpointer + 1] = (checksum % 64) + 61;
r_buffer[bpointer + 2] = 13;
r_buffer[bpointer + 3] = 0;
bpointer += 3;
for(a=0;a<bpointer;a++)
RS232_send(r_buffer[a]);
}
/Transportables_Koptertool/trunk/base64.d
0,0 → 1,0
base64.o base64.d : base64.c main.h rs232.h base64.h lcd.h
/Transportables_Koptertool/trunk/base64.h
0,0 → 1,12
#ifndef base64_h
#define base64_h
 
uint8_t base64_decode(uint8_t number);
void base64_send(uint8_t number);
uint8_t get_message(void);
 
uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext
uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert)
 
 
#endif
/Transportables_Koptertool/trunk/base64.lst
0,0 → 1,363
1 .file "base64.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global base64_decode
20 base64_decode:
21 .LFB5:
22 .LM1:
23 /* prologue: frame size=0 */
24 /* prologue end (size=0) */
25 0000 A82F mov r26,r24
26 .LM2:
27 0002 62E0 ldi r22,lo8(2)
28 .LM3:
29 0004 70E0 ldi r23,lo8(0)
30 .L7:
31 .LM4:
32 0006 6A17 cp r22,r26
33 0008 B0F5 brsh .L6
34 .LM5:
35 000a E62F mov r30,r22
36 000c FF27 clr r31
37 000e E050 subi r30,lo8(-(r_buffer))
38 0010 F040 sbci r31,hi8(-(r_buffer))
39 0012 8081 ld r24,Z
40 0014 8D53 subi r24,lo8(-(-61))
41 .LM6:
42 0016 3181 ldd r19,Z+1
43 0018 3D53 subi r19,lo8(-(-61))
44 .LM7:
45 001a 5281 ldd r21,Z+2
46 001c 5D53 subi r21,lo8(-(-61))
47 .LM8:
48 001e 4381 ldd r20,Z+3
49 0020 4D53 subi r20,lo8(-(-61))
50 .LM9:
51 0022 6C5F subi r22,lo8(-(4))
52 .LM10:
53 0024 E72F mov r30,r23
54 0026 FF27 clr r31
55 0028 E050 subi r30,lo8(-(p_buffer))
56 002a F040 sbci r31,hi8(-(p_buffer))
57 002c 9927 clr r25
58 002e 880F lsl r24
59 0030 991F rol r25
60 0032 880F lsl r24
61 0034 991F rol r25
62 0036 232F mov r18,r19
63 0038 2295 swap r18
64 003a 2F70 andi r18,0x0f
65 003c 282B or r18,r24
66 003e 2083 st Z,r18
67 .LM11:
68 0040 832F mov r24,r19
69 0042 9927 clr r25
70 0044 8F70 andi r24,lo8(15)
71 0046 9070 andi r25,hi8(15)
72 0048 34E0 ldi r19,4
73 004a 880F 1: lsl r24
74 004c 991F rol r25
75 004e 3A95 dec r19
76 0050 E1F7 brne 1b
77 0052 252F mov r18,r21
78 0054 2695 lsr r18
79 0056 2695 lsr r18
80 0058 282B or r18,r24
81 005a 2183 std Z+1,r18
82 .LM12:
83 005c 852F mov r24,r21
84 005e 9927 clr r25
85 0060 8370 andi r24,lo8(3)
86 0062 9070 andi r25,hi8(3)
87 0064 26E0 ldi r18,6
88 0066 880F 1: lsl r24
89 0068 991F rol r25
90 006a 2A95 dec r18
91 006c E1F7 brne 1b
92 006e 482B or r20,r24
93 0070 4283 std Z+2,r20
94 .LM13:
95 0072 7D5F subi r23,lo8(-(3))
96 0074 C8CF rjmp .L7
97 .L6:
98 .LM14:
99 0076 872F mov r24,r23
100 0078 9927 clr r25
101 /* epilogue: frame size=0 */
102 007a 0895 ret
103 /* epilogue end (size=1) */
104 /* function base64_decode size 62 (61) */
105 .LFE5:
107 .global get_message
109 get_message:
110 .LFB4:
111 .LM15:
112 /* prologue: frame size=0 */
113 007c CF93 push r28
114 /* prologue end (size=1) */
115 .LM16:
116 007e 84E1 ldi r24,lo8(20)
117 0080 8093 0000 sts timer,r24
118 .L9:
119 .LM17:
120 0084 0E94 0000 call RS232_get
121 0088 8332 cpi r24,lo8(35)
122 008a 21F0 breq .L10
123 008c 8091 0000 lds r24,timer
124 0090 8823 tst r24
125 0092 C1F7 brne .L9
126 .L10:
127 .LM18:
128 0094 8091 0000 lds r24,timer
129 0098 8823 tst r24
130 009a 99F0 breq .L12
131 .LM19:
132 009c C0E0 ldi r28,lo8(0)
133 .L13:
134 .LM20:
135 009e 0E94 0000 call RS232_get
136 .LM21:
137 00a2 EC2F mov r30,r28
138 00a4 FF27 clr r31
139 00a6 E050 subi r30,lo8(-(r_buffer))
140 00a8 F040 sbci r31,hi8(-(r_buffer))
141 00aa 8083 st Z,r24
142 00ac CF5F subi r28,lo8(-(1))
143 .LM22:
144 00ae C7FD sbrc r28,7
145 .LM23:
146 00b0 CFE7 ldi r28,lo8(127)
147 .L15:
148 .LM24:
149 00b2 8D30 cpi r24,lo8(13)
150 00b4 A1F7 brne .L13
151 .LM25:
152 00b6 8C2F mov r24,r28
153 00b8 0E94 0000 call base64_decode
154 .LM26:
155 00bc 80E0 ldi r24,lo8(0)
156 00be 90E0 ldi r25,hi8(0)
157 00c0 02C0 rjmp .L8
158 .L12:
159 .LM27:
160 00c2 81E0 ldi r24,lo8(1)
161 00c4 90E0 ldi r25,hi8(1)
162 .L8:
163 /* epilogue: frame size=0 */
164 00c6 CF91 pop r28
165 00c8 0895 ret
166 /* epilogue end (size=2) */
167 /* function get_message size 40 (37) */
168 .LFE4:
170 .global base64_send
172 base64_send:
173 .LFB6:
174 .LM28:
175 /* prologue: frame size=0 */
176 00ca FF92 push r15
177 00cc 0F93 push r16
178 00ce 1F93 push r17
179 00d0 CF93 push r28
180 /* prologue end (size=4) */
181 00d2 A82F mov r26,r24
182 .LM29:
183 00d4 8091 0000 lds r24,p_buffer
184 00d8 8093 0000 sts r_buffer,r24
185 .LM30:
186 00dc 8091 0000 lds r24,p_buffer+1
187 00e0 8093 0000 sts r_buffer+1,r24
188 .LM31:
189 00e4 8091 0000 lds r24,p_buffer+2
190 00e8 8093 0000 sts r_buffer+2,r24
191 .LM32:
192 00ec 43E0 ldi r20,lo8(3)
193 00ee F42E mov r15,r20
194 .LM33:
195 00f0 7F2D mov r23,r15
196 .LM34:
197 00f2 FA16 cp r15,r26
198 00f4 E0F5 brsh .L31
199 .L21:
200 .LM35:
201 00f6 E72F mov r30,r23
202 00f8 FF27 clr r31
203 00fa E050 subi r30,lo8(-(p_buffer))
204 00fc F040 sbci r31,hi8(-(p_buffer))
205 00fe 9081 ld r25,Z
206 .LM36:
207 0100 2181 ldd r18,Z+1
208 .LM37:
209 0102 6281 ldd r22,Z+2
210 .LM38:
211 0104 7D5F subi r23,lo8(-(3))
212 .LM39:
213 0106 EF2D mov r30,r15
214 0108 FF27 clr r31
215 010a E050 subi r30,lo8(-(r_buffer))
216 010c F040 sbci r31,hi8(-(r_buffer))
217 010e 892F mov r24,r25
218 0110 8695 lsr r24
219 0112 8695 lsr r24
220 0114 835C subi r24,lo8(-(61))
221 0116 8083 st Z,r24
222 .LM40:
223 0118 892F mov r24,r25
224 011a 9927 clr r25
225 011c 8370 andi r24,lo8(3)
226 011e 9070 andi r25,hi8(3)
227 0120 34E0 ldi r19,4
228 0122 880F 1: lsl r24
229 0124 991F rol r25
230 0126 3A95 dec r19
231 0128 E1F7 brne 1b
232 012a 422F mov r20,r18
233 012c 5527 clr r21
234 012e 9A01 movw r18,r20
235 0130 94E0 ldi r25,4
236 0132 3695 1: lsr r19
237 0134 2795 ror r18
238 0136 9A95 dec r25
239 0138 E1F7 brne 1b
240 013a 822B or r24,r18
241 013c 835C subi r24,lo8(-(61))
242 013e 8183 std Z+1,r24
243 .LM41:
244 0140 4F70 andi r20,lo8(15)
245 0142 5070 andi r21,hi8(15)
246 0144 440F lsl r20
247 0146 551F rol r21
248 0148 440F lsl r20
249 014a 551F rol r21
250 014c 862F mov r24,r22
251 014e 9927 clr r25
252 0150 16E0 ldi r17,6
253 0152 9695 1: lsr r25
254 0154 8795 ror r24
255 0156 1A95 dec r17
256 0158 E1F7 brne 1b
257 015a 842B or r24,r20
258 015c 835C subi r24,lo8(-(61))
259 015e 8283 std Z+2,r24
260 .LM42:
261 0160 6F73 andi r22,lo8(63)
262 0162 635C subi r22,lo8(-(61))
263 0164 6383 std Z+3,r22
264 .LM43:
265 0166 84E0 ldi r24,lo8(4)
266 0168 F80E add r15,r24
267 016a 7A17 cp r23,r26
268 016c 20F2 brlo .L21
269 .L31:
270 .LM44:
271 016e 20E0 ldi r18,lo8(0)
272 0170 30E0 ldi r19,hi8(0)
273 .LM45:
274 0172 C0E0 ldi r28,lo8(0)
275 0174 CF15 cp r28,r15
276 0176 40F4 brsh .L33
277 0178 E0E0 ldi r30,lo8(r_buffer)
278 017a F0E0 ldi r31,hi8(r_buffer)
279 .L25:
280 .LM46:
281 017c 8191 ld r24,Z+
282 017e 280F add r18,r24
283 0180 311D adc r19,__zero_reg__
284 .LM47:
285 0182 CF5F subi r28,lo8(-(1))
286 0184 CF15 cp r28,r15
287 0186 D0F3 brlo .L25
288 .L33:
289 .LM48:
290 0188 3F70 andi r19,hi8(4095)
291 .LM49:
292 018a EF2D mov r30,r15
293 018c FF27 clr r31
294 018e E050 subi r30,lo8(-(r_buffer))
295 0190 F040 sbci r31,hi8(-(r_buffer))
296 0192 C901 movw r24,r18
297 0194 C6E0 ldi r28,6
298 0196 9695 1: lsr r25
299 0198 8795 ror r24
300 019a CA95 dec r28
301 019c E1F7 brne 1b
302 019e 835C subi r24,lo8(-(61))
303 01a0 8083 st Z,r24
304 .LM50:
305 01a2 2F73 andi r18,lo8(63)
306 01a4 3070 andi r19,hi8(63)
307 01a6 822F mov r24,r18
308 01a8 835C subi r24,lo8(-(61))
309 01aa 8183 std Z+1,r24
310 .LM51:
311 01ac 8DE0 ldi r24,lo8(13)
312 01ae 8283 std Z+2,r24
313 .LM52:
314 01b0 1382 std Z+3,__zero_reg__
315 .LM53:
316 01b2 83E0 ldi r24,lo8(3)
317 01b4 F80E add r15,r24
318 .LM54:
319 01b6 C381 ldd r28,Z+3
320 01b8 CF15 cp r28,r15
321 01ba 50F4 brsh .L35
322 01bc 00E0 ldi r16,lo8(r_buffer)
323 01be 10E0 ldi r17,hi8(r_buffer)
324 .L29:
325 .LM55:
326 01c0 F801 movw r30,r16
327 01c2 8191 ld r24,Z+
328 01c4 8F01 movw r16,r30
329 01c6 0E94 0000 call RS232_send
330 .LM56:
331 01ca CF5F subi r28,lo8(-(1))
332 01cc CF15 cp r28,r15
333 01ce C0F3 brlo .L29
334 .L35:
335 /* epilogue: frame size=0 */
336 01d0 CF91 pop r28
337 01d2 1F91 pop r17
338 01d4 0F91 pop r16
339 01d6 FF90 pop r15
340 01d8 0895 ret
341 /* epilogue end (size=5) */
342 /* function base64_send size 137 (128) */
343 .LFE6:
345 .comm r_buffer,128,1
346 .comm p_buffer,128,1
347 .comm display_buffer,1024,1
348 .comm display_buffer_pointer,2,1
349 .comm display_buffer_counter,1,1
350 .comm display_page_counter,1,1
351 .comm display_mode,1,1
352 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 base64.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:20 .text:00000000 base64_decode
*COM*:00000080 r_buffer
*COM*:00000080 p_buffer
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:109 .text:0000007c get_message
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccmIaaaa.s:172 .text:000000ca base64_send
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
timer
RS232_get
RS232_send
/Transportables_Koptertool/trunk/debug.c
0,0 → 1,228
// debug Data
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "lcd.h"
#include "rs232.h"
#include "base64.h"
#include "parameter.h"
#include "menu.h"
#include "debug.h"
 
uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert)
//uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext
//struct str_DebugIn *p_buffer;
 
uint8_t base64_decode_debug(unsigned char *ptrOut, uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um
{
uint8_t p,q;
uint8_t a,b,c,d;
 
p = 2;
q = 0;
while (p < number)
{
a = r_buffer[p + 0] - 61;
b = r_buffer[p + 1] - 61;
c = r_buffer[p + 2] - 61;
d = r_buffer[p + 3] - 61;
p += 4;
ptrOut[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer
ptrOut[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
ptrOut[q + 2] = ((c & 0x03) << 6) | d;
q += 3;
}
return q; // Rückgabe der Anzahl der Datenbytes
}
 
uint8_t get_message_debug() // Liest eine komplette Übertragung und dekodiert sie
{
uint8_t index, comm;
timer = 20; // Timer für Timeout
while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen #
if (timer > 0) // Falls kein Timeout auftrat
{
index = 0; // Die Rohdaten in r_buffer einlesen
do
{
comm = RS232_get();
r_buffer[index++] = comm;
if (index > 127) // Schutz vor Puffer-Überlauf
index = 127;
}
while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt...
base64_decode_debug((unsigned char *) &DebugIn, index); // Die base64-kodierten Rohdaten umwandeln
return 0; // kein Fehler aufgetreten
}
else
{
return 1; // Fehler aufgetreten
}
}
 
uint8_t read_debug(uint8_t command) //
{
uint8_t timeout;
timeout = 0;
p_buffer[0] = '#'; // Debug-Daten anfordern
p_buffer[1] = 'a';
p_buffer[2] = 'c';
p_buffer[3] = command;
p_buffer[4] = 0;
p_buffer[5] = 0;
base64_send(6);
do // warten, bis die Parameter gesendet werden
{
if (get_message_debug() == 1)
timeout = 30;
timeout ++;
}
while ((r_buffer[1] != 'D') && (timeout < 30));
if (timeout >= 30)
return 1;
else
return 0;
}
 
#define isminus 65536 / 2
 
void decimal_int (unsigned int data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um
{
int sign = 0;
text[0] = 0x20; // (schneller/kleiner als printf())
if (data > isminus)
{
data = 65536 - data;
sign = 1;
text[0] = '-';
}
 
text[1] = data/10000;
data -= (text[1] * 10000);
text[2] = data/1000;
data -= (text[2] *1000);
 
text[3] = data/100;
data -= (text[3] * 100);
text[4] = data/10;
data -= (text[4] *10);
 
 
text[5] = data + 0x30;
text[1] += 0x30;
text[2] += 0x30;
text[3] += 0x30;
text[4] += 0x30;
 
 
if (text[1] == 0x30)
{
text[0] = 0x20;
if (sign == 1) text[1] = '-'; else text[1] = 0x20;
if (text[2] == 0x30)
{
text[1] = 0x20;
if (sign == 1) text[2] = '-'; else text[2] = 0x20;
if (text[3] == 0x30)
{
text[2] = 0x20;
if (sign == 1) text[3] = '-'; else text[3] = 0x20;
if (text[4] == 0x30)
{
text[3] = 0x20;
if (sign == 1) text[4] = '-'; else text[4] = 0x20;
}
}
}
}
// if (sign == 1) text[0] = '-';
text[6] = 0x00;
}
 
void display_debug(void)
{
uint8_t line;
uint8_t zeile;
uint8_t text[10];
 
lcd_cls();
zeile = 0;
lcd_printp(PSTR("Debug-Display"),0);
do
{
while (key != 0x00);
if (read_debug(0) == 1)
{
lcd_printp(PSTR("\r\nTimeout!"),0);
timer = 200;
while (timer > 0);
break;
}
else
{
line = p_buffer[2];
text[0] = line;
text[1] = 0x00;
lcd_print_at(15,0,text,0);
//lcd_print_at(0,++zeile,p_buffer,0);
 
decimal_int(DebugIn.Analog[0],text);
lcd_print_at(0,1,"Nick",0);
lcd_print_at(10,1,text,0);
decimal_int(DebugIn.Analog[1],text);
lcd_print_at(0,2,"Roll",0);
lcd_print_at(10,2,text,0);
decimal_int(DebugIn.Analog[2],text);
lcd_print_at(0,3,"ACC Nick",0);
lcd_print_at(10,3,text,0);
decimal_int(DebugIn.Analog[3],text);
lcd_print_at(0,4,"ACC Roll",0);
lcd_print_at(10,4,text,0);
decimal_int(DebugIn.Analog[4],text);
lcd_print_at(0,5,"Gier",0);
lcd_print_at(10,5,text,0);
decimal_int(DebugIn.Analog[5],text);
lcd_print_at(0,6,"ACC",0);
lcd_print_at(10,6,text,0);
 
decimal_int(DebugIn.Analog[9],text);
lcd_print_at(0,7,"Spannung",0);
lcd_print_at(10,7,text,0);
 
// decimal_int(DebugIn.Analog[zeile],text);
// lcd_print_at(0,++zeile,text,0);
 
 
// decimal(p_buffer[zeile],text);
// lcd_print_at(0,++zeile,text,0);
 
if (zeile > 5) zeile = 0;
 
timer = 10;
while(timer > 0);
// if (key == 0x01)
// read_debug(1);
// if (key == 0x02)
// read_debug(2);
}
}
while (key != 0x04);
}
/Transportables_Koptertool/trunk/debug.h
0,0 → 1,15
#ifndef debug_h
#define debug_h
 
void display_debug(void);
 
struct str_DebugIn
{
unsigned char Digital[2];
unsigned int Analog[32]; // Debugwerte
};
 
struct str_DebugIn DebugIn;
//extern struct str_DebugIn *p_buffer;
 
#endif
/Transportables_Koptertool/trunk/default/MMT.eep
0,0 → 1,65
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:1000500000000000000000000000000000000000A0
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000080
:100080000000000000000000000000000000000070
:100090000000000000000000000000000000000060
:1000A0000000000000000000000000000000000050
:1000B0000000000000000000000000000000000040
:1000C0000000000000000000000000000000000030
:1000D0000000000000000000000000000000000020
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:1001000000000000000000000000000000000000EF
:1001100000000000000000000000000000000000DF
:1001200000000000000000000000000000000000CF
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000000000000000000000000000000002F
:1001D000000000000000000000000000000000001F
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:1002000000000000000000000000000000000000EE
:1002100000000000000000000000000000000000DE
:1002200000000000000000000000000000000000CE
:1002300000000000000000000000000000000000BE
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F00000000000000000000000000000000000FE
:1003000000000000000000000000000000000000ED
:1003100000000000000000000000000000000000DD
:1003200000000000000000000000000000000000CD
:1003300000000000000000000000000000000000BD
:1003400000000000000000000000000000000000AD
:10035000000000000000000000000000000000009D
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:00000001FF
/Transportables_Koptertool/trunk/default/MMT.elf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Transportables_Koptertool/trunk/default/MMT_Mega32_7.hex
0,0 → 1,716
:100000000C94C1060C94DE060C94DE060C94DE06FD
:100010000C94DE060C94DE060C94DE060C94DE06D0
:100020000C94DE060C94DE060C94CA120C94DE06C8
:100030000C94DE060C9470120C94DE060C94DE0612
:100040000C94DE060C94DE060C94DE060C94DE06A0
:100050000C94DE06202020202020000D0A54696D1B
:10006000656F75742100446973706C6179000000DC
:10007000000000003E5B4F5B3E003E6B4F6B3E005E
:100080001C3E7C3E1C00183C7E3C18001C577D57D3
:100090001C001C5E7F5E1C0000183C180000FFE77F
:1000A000C3E7FF00001824180000FFE7DBE7FF00AC
:1000B00030483A060E00262979292600407F05059A
:1000C0000700407F05253F005A3CE73C5A007F3E31
:1000D0001C1C0800081C1C3E7F0014227F221400F8
:1000E0005F5F005F5F0006097F017F000066899502
:1000F0006A0060606060606094A2FFA294000804DF
:100100007E04080010207E20100008082A1C080029
:10011000081C2A0808001E10101010000C1E0C1ECF
:100120000C0030383E383000060E3E0E060000004F
:100130000000000000005F00000000070007000052
:10014000147F147F1400242A7F2A120023130864CA
:100150006200364956205000000807030000001CCA
:10016000224100000041221C00002A1C7F1C2A00A2
:1001700008083E08080000807030000008080808E1
:1001800008000000606000002010080402003E51DA
:1001900049453E0000427F400000724949494600FF
:1001A0002141494D33001814127F10002745454561
:1001B00039003C4A494931004121110907003649BB
:1001C00049493600464949291E0000001400000034
:1001D00000403400000000081422410014141414DC
:1001E00014000041221408000201590906003E4192
:1001F0005D594E007C1211127C007F49494936003E
:100200003E41414122007F4141413E007F494949F1
:1002100041007F09090901003E41415173007F08F7
:1002200008087F0000417F4100002040413F01005D
:100230007F08142241007F40404040007F021C02A2
:100240007F007F0408107F003E4141413E007F094E
:10025000090906003E4151215E007F091929460027
:1002600026494949320003017F0103003F404040D5
:100270003F001F2040201F003F4038403F006314D4
:10028000081463000304780403006159494D4300D6
:10029000007F41414100020408102000004141411B
:1002A0007F0004020102040040404040400000037F
:1002B000070800002054547840007F284444380048
:1002C000384444442800384444287F003854545467
:1002D000180000087E09020018A4A49C78007F087A
:1002E0000404780000447D4000002040403D0000B0
:1002F0007F102844000000417F4000007C04780407
:1003000078007C0804047800384444443800FC1821
:100310002424180018242418FC007C080404080075
:1003200048545454240004043F4424003C404020DA
:100330007C001C2040201C003C4030403C004428F5
:10034000102844004C9090907C004464544C44002D
:100350000008364100000000770000000041360828
:1003600000000201020402003C2623263C001EA1DC
:10037000A16112003A4040207A0038545455590087
:100380002155557941002154547841002155547824
:1003900040002054557940000C1E5272120039550D
:1003A000555559003954545459003955545458002E
:1003B0000000457C41000002457D42000001457C73
:1003C0004000791412147900F0282528F0007C549C
:1003D000554500002054547C54447C0A097F49410F
:1003E000324949493200324848483200324A484886
:1003F00030003A4141217A003A4240207800009D85
:10040000A0A07D003944444439003D4040403D00B7
:100410003C24FF242400487E494366002B2FFC2FF8
:100420002B00FF0929F62000C0887E090300205414
:10043000547941000000447D41003048484A320070
:10044000384040227A00007A0A0A72007D0D193184
:100450007D002629292F2800262929292600304811
:100460004D4020003808080808000808080838002F
:100470002F10C8ACBA002F102834FA0000007B00FF
:10048000000008142A14220022142A140800AA00CA
:100490005500AA00AA55AA55AA5555AA55AA55AA63
:1004A000000000FF0000101010FF0000141414FFE3
:1004B00000001010FF00FF001010F010F0001414E6
:1004C00014FC00001414F700FF000000FF00FF0000
:1004D0001414F404FC00141417101F0010101F1043
:1004E0001F001414141F0000101010F00000000072
:1004F000001F10101010101F1010101010F010100E
:10050000000000FF1010101010101010101010FF3D
:100510001010000000FF14140000FF00FF10000086
:100520001F1017140000FC04F414141417101714EF
:100530001414F404F4140000FF00F7141414141439
:1005400014141414F700F7141414141714141010BE
:100550001F101F10141414F414141010F010F010C5
:1005600000001F101F100000001F1414000000FCEA
:1005700014140000F010F0101010FF10FF101414ED
:1005800014FF14141010101F0000000000F01010D1
:10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4
:1005A0000000000000FFFFFF0F0F0F0F0F0F384478
:1005B000443844007C2A2A3E14007E0202060600CB
:1005C000027E027E02006355494163003844443C88
:1005D0000400407E201E200006027E02020099A533
:1005E000E7A599001C2A492A1C004C7201724C0094
:1005F000304A4D4D3000304878483000BC625A4691
:100600003D003E49494900007E0101017E002A2A41
:100610002A2A2A0044445F44440040514A4440008E
:1006200040444A5140000000FF010300E080FF0009
:10063000000008086B6B0808361236243600060FD7
:10064000090F06000000181800000000101000003C
:100650003040FF010100001F01011E0000191D179D
:100660001200003C3C3C3C000000000000004D6FCC
:1006700064206279204D696B656C6A6F2030352F7C
:1006800030380053657474696E67730D0A004465F1
:1006900062756720446174656E0D0A004D6F746F5A
:1006A00072746573740D0A00506172616D657465D2
:1006B000720D0A000D0A446973706C61790D0A00AD
:1006C00048617570746D656EFC2842455441205632
:1006D000302E31290D0A002A002000546173746500
:1006E000206472FC636B656E0D0A00436F6E666971
:1006F0006720202020004368616E6E656C732020A7
:1007000000537469636B202020202000486F6568C7
:10071000652020202020004779726F202020202093
:1007200020004C6F6F70696E672020200043616D60
:100730006572612020202000536F6E7374696765B5
:100740007320005573657220202020202000436F05
:1007500075706C696E67202000436F6E666967284C
:10076000322920004C6F6F70696E677365740002E8
:10077000020202020202020004040404040403034D
:1007800003080808080505080808000509090909FB
:100790000707070707070606060A0A0606050505EE
:1007A0000909090900070B0B0B0B0C0C0C0C0C0CAA
:1007B0000C0C0108020108020108020108020108EC
:1007C0000201080201080201080200000000FF0403
:1007D00000FF0400FF0400FF0400320400FF0400D7
:1007E000060300400300140300200821FA08003229
:1007F0000800FF0800000500000500FA0800FA08DC
:1008000000FA0800010000FF0500FF0900FF0900D1
:10081000FF0900FF0900FF0700FA0700FA0700FAC6
:100820000700190700FF0600FA0600FA0600FF0A93
:1008300000FF0A00FA0600FA0600FA0500FA0500B1
:10084000FF0500FF0900FF0900FF0900FF09000084
:10085000010001070000000000000000000000008F
:100860000000000000000000000000000000000088
:100870000000000000000000004C6F6F70207570D9
:100880002020202020202020004C6F6F7020646FDB
:10089000776E092020202000004C6F6F70206C655F
:1008A0006674202020202020004C6F6F7020726919
:1008B00067687420202020200048F668656E726505
:1008C000676C6572202020200048F668656E7363AF
:1008D00068616C74657220200048656164686F6CA3
:1008E0006409090000000000004B6F6D70617373B4
:1008F0000909000000000000004B6F6D7061737308
:1009000046697809090000000047505309090900A9
:1009100000000000000000000041636873656E6B1A
:100920006F70706C756E67200044726568726174D8
:100930006509090000000000004E69636B2020205B
:10094000202020202020202000526F6C6C202020AE
:1009500020202020202020200047617320202020FC
:1009600020202020202020200047696572090909E5
:10097000000000000000000000506F746931090998
:10098000090000000000000000506F74693209097E
:10099000090000000000000000506F74693309096D
:1009A000090000000000000000506F74693409095C
:1009B000090000000000000000436F6E66696709CF
:1009C000090900000000000000486F6568655F4D80
:1009D000696E476173202020004C756674647275DF
:1009E000636B5F4420202020004D6178486F65686C
:1009F000652020202020202000486F6568655F501A
:100A0000202020202020202000486F6568655F5648
:100A1000657273746165726B00486F6568655F41EC
:100A200043435F5769726B2E00537469636B5F5069
:100A3000202020202020202000537469636B5F4415
:100A4000202020202020202000476965725F502050
:100A50002020202020202020004761735F4D696EF8
:100A60002020202020202020004761735F4D6178E6
:100A70002020202020202020004779726F416363CE
:100A800046616B746F720900004B6F6D7061737318
:100A90005769726B756E6720004779726F5F5020DF
:100AA0000909000000000000004779726F5F4909E2
:100AB000090900000000000000556E746572737033
:100AC000616E6E756E672020004E6F74476173090A
:100AD0000909000000000000004E6F744761735A5E
:100AE00065697420202020200055666F417573725F
:100AF00069636874756E672000495F46616B746F47
:100B000072202020202020200055736572506172D1
:100B1000616D310909000000005573657250617202
:100B2000616D3209090000000055736572506172F1
:100B3000616D3309090000000055736572506172E0
:100B4000616D34090900000000536572766F4E69CB
:100B5000636B4374726C090000536572766F4E6963
:100B6000636B436F6D70090000536572766F4E6959
:100B7000636B4D696E09000000536572766F4E69B4
:100B8000636B4D617809000000536572766F4E69A2
:100B9000636B526566727368004C6F6F7047617368
:100BA0004C696D6974090000004C6F6F7054687275
:100BB0006573686F6C640900004C6F6F70487973DF
:100BC000746572657365090000416368734B6F70EB
:100BD000706C756E67090000004163687347656754
:100BE000656E4B6F70706C2E0057696E6B6C556D37
:100BF0007363686C4E69636B0057696E6B6C556DFF
:100C00007363686C526F6C6C004779726F416363F9
:100C10004162676C656963680044726966746B6FF2
:100C20006D700909000000000044796E616D696310
:100C300053746162696C69740055736572506172B6
:100C4000616D3509090000000055736572506172CD
:100C5000616D3609090000000055736572506172BC
:100C6000616D3709090000000055736572506172AB
:100C7000616D380909000000004C6F6F70436F6EA2
:100C8000666967090900000000536572766F4E6956
:100C9000636B436F6D70496E000D0A4E6963687433
:100CA000206765737065696368657274000D0A502A
:100CB0006172616D657465722067657370656963E3
:100CC00068657274000D0A2D2D2D3E005061726111
:100CD0006D657465722073706569636865726E3FD7
:100CE0000D0A20206A610D0A20206E65696E00548D
:100CF000696D656F75740020353A0D0A0020343A2D
:100D00000D0A0020333A0D0A0020323A0D0A002065
:100D1000313A0D0A004C61646520506172616D6565
:100D20007465720D0A002D002D002D004578697440
:100D30000D0A00526563687465636B0D0A004C69A7
:100D40006E69650D0A004F7269656E74696572752A
:100D50006E670D0A000D0A0045696E7374656C6C50
:100D6000756E67656E3A0D0A000D0A54696D656F00
:100D70007574210044656275672D446973706C61F8
:100D8000790011241FBECFE5D8E0DEBFCDBF10E053
:100D9000A0E6B0E0E8E7FCE202C005900D92AE38B4
:100DA000B107D9F715E0AEE8B0E001C01D92A83F49
:100DB000B107E1F70E94DC0D0C943B160C94000087
:100DC000782F52E060E026C0E52FFF27EC5EFA4F57
:100DD00021812D5332813D5343814D535C5FDC01B2
:100DE000AF56BB4F80818D53880F880F922F9295FD
:100DF0009F70892B8C932295207F832F86958695D3
:100E0000282BFD0121833295330F330F307C342B97
:100E100032836D5F862F99275717B0F208950F938D
:100E20001F93B82F809191048093140580919204B0
:100E3000809315058091930480931605A3E073E0D9
:100E400035C0E72FFF27EF56FB4F8081418162813C
:100E50007D5FEA2FFF27EC5EFA4F282F2695269517
:100E6000235C2083552799278370907024E0880F96
:100E7000991F2A95E1F79A0104E0369527950A957E
:100E8000E1F7822B835C81834F705070440F551FB4
:100E9000440F551F862F8295869586958370842BE7
:100EA000835C82836F73635C6383AC5F7B1748F200
:100EB00090E020E030E008C0E92FFF27EC5EFA4F19
:100EC0008081280F311D9F5F9A17B1F73F70EA2F7D
:100ED000FF27EC5EFA4FC90136E0969587953A9563
:100EE000E1F7835C80832F73235C21838DE0828311
:100EF00013820A2F0D5F10E008C0E12FFF27EC5E80
:100F0000FA4F80810E94BC121F5F1017B1F71F912A
:100F10000F9108951F9384E1809397050E94971283
:100F2000833221F0809197058823C1F7809197053E
:100F3000882319F481E090E017C00E9497128093F3
:100F4000140511E00AC00E949712E12FFF27EC5E02
:100F5000FA4F80831F5F17FD1FE78D30A1F7812FA8
:100F60000E94E00680E090E01F9108951F93CF93C8
:100F7000DF93CDB7DEB761970FB6F894DEBF0FBE33
:100F8000CDBF182F83E28093910481E68093920471
:100F900080939304109394041092950410929604F5
:100FA00086E00E940F070E948A0780911505813410
:100FB000D1F7E1E9F4E0DE01119681918D9384E0AF
:100FC000E13AF807D1F7198A177020E0AE014F5FB8
:100FD0005F4F612F80E00E94DA0A61960FB6F894A5
:100FE000DEBF0FBECDBFDF91CF911F9108959F92BD
:100FF000AF92BF92CF92DF92EF92FF920F931F9327
:10100000CF93DF93CDB7DEB761970FB6F894DEBF0D
:101010000FBECDBF0E9438099924A92CBB2453E0F0
:10102000AA0CBB1C5A95E1F7FA2C00E010E08F2DBA
:10103000800F0E94B6070F5F1F4F08301105B9F7E8
:101040000E948A0780911505843489F57501EE0C9C
:10105000FF1C83E994E0E80EF91ECC24DD248E0108
:101060000F5F1F4FF701208181819927982F8827D3
:101070004AE050E0B801820F911D0E94AD1520E0BA
:1010800044E550E06C2D8EE00E94A40A20E0A80107
:101090006C2D8EE00E94DA0A0894C11CD11C82E0FB
:1010A00090E0E80EF91E98E0C916D104C1F68091CF
:1010B0009A05882329F280919A05813009F4939446
:1010C00080919A05823009F49A9480919A0588302B
:1010D00019F0E3E09E22A1CF61960FB6F894DEBF2F
:1010E0000FBECDBFDF91CF911F910F91FF90EF9079
:1010F000DF90CF90BF90AF909F9008951F9393E2A1
:101100009093910491E69093920498E690939304BF
:1011100080939404109295041092960486E00E94A5
:101120000F0710E00E948A07813009F41AE01F5F60
:10113000809115058053853018F01A3098F304C05B
:1011400080E090E01A3010F081E090E01F91089567
:101150001F93CF93DF93CDB7DEB72A970FB6F894DE
:10116000DEBF0FBECDBF0E94380960E086E690E08A
:101170000E94760A80919A058823E1F70E947E08F2
:10118000813069F460E08BE590E00E94760A88EC9B
:101190008093970580919705882369F1FBCF109183
:1011A000150519831A8220E0AE014F5F5F4F60E0A2
:1011B0008AE00E94DA0A1F5F20E041E954E0612FD3
:1011C00080E00E94DA0A8AE0809397058091970573
:1011D0008823E1F780919A05813011F40E947E08FE
:1011E00080919A05823011F40E947E0880919A05C0
:1011F000843009F0BFCF2A960FB6F894DEBF0FBE39
:10120000CDBFDF91CF911F910895C4988FB9779B7F
:10121000FECF8EB18EB9C49A08951F93CF93DF93FA
:10122000E0E9F0E0119284E0E039F807D9F710EB3B
:10123000C398812F0E94050980E10E9405098091D1
:101240008F000E940509C39AC0E0D0E080E00E94B0
:1012500005092196C038D105C9F71F5F183B41F732
:101260001092950510929605DF91CF911F910895E8
:101270000E940D09089583E397E00197F1F708951F
:101280000F931F93CF93DF938C01C0E0D0E003C096
:101290000E943B092196C017D107D1F7DF91CF916A
:1012A0001F910F91089510929505109296058FEF5A
:1012B00087BB8EE58DB9C49AC2988AE090E00E94FF
:1012C0004009C29AC498C39880E40E94050980919D
:1012D0008F00882329F481EA0E94050980EC04C06C
:1012E00080EA0E94050988EC0E94050986EA0E94AE
:1012F000050982EA0E9405098FE20E94050988EF2C
:101300000E94050980E00E94050987E20E94050904
:1013100081E80E94050986E10E9405098CEA0E9485
:10132000050980E00E9405098FEA0E9405090E94D4
:101330000D090895FF920F931F938C01F62EC39809
:10134000880F892F881F990B919580550E94050958
:1013500080918F000F77080F802F82958F70805FAC
:101360000E940509802F8F700E940509C39A8F2D56
:101370000E9405091F910F91FF900895EF92FF922F
:101380000F931F93CF93DF93C0E0D0E000E910E00C
:1013900030E1E32E31E0F32EF70181917F01F80176
:1013A000808361918F01CE010E949A092196F3E01A
:1013B000C038DF0789F700E114E0F80111928F01CE
:1013C00060E0CE010E949A092196F4E0C030DF0768
:1013D000A1F7DF91CF911F910F91FF90EF900895AA
:1013E000CF92DF92EF92FF920F931F93CF93DF93F1
:1013F000D22E4F3D81F0403E38F4463DB1F04C3D99
:10140000B1F0443CA9F40FC0463F49F04C3F49F0CD
:10141000443E71F402C041EE0BC044E809C044E907
:1014200007C041E805C04EE803C049E901C04AE9E8
:10143000062F11271695102F00271795079526E0E0
:10144000829FC0011124080F191F1370429F700161
:1014500011248EE690E0E80EF91ECC24E801C05776
:10146000DF4FF7019491F2E0DF16A1F0FD1530F0A7
:10147000DD2059F081E0D816B1F409C0E3E0DE16B2
:1014800061F0F4E0DF1679F40AC098830CC088811B
:10149000892B08C08881892705C0888102C088817E
:1014A0009095892388836991C8010E949A09C39401
:1014B0000894E11CF11C0F5F1F4F86E0C81689F6E7
:1014C000DF91CF911F910F91FF90EF90DF90CF9020
:1014D0000895809196058F5F80939605883028F057
:1014E0000E94BE0987E08093960508951F93CF93CD
:1014F000DF93EC01162F20C04032A0F02196212F5F
:1015000060919605809195050E94F009809195055E
:101510008F5F80939505853178F0109295050E9434
:10152000690A0AC04A3029F04D3029F41092950515
:1015300002C00E94690A2196FE0144914423E1F60B
:10154000DF91CF911F910895809395056093960543
:10155000622FCA010E94760A08951F93CF93DF93EA
:10156000EC01162F20C04032A0F02196212F60916F
:101570009605809195050E94F009809195058F5FF1
:1015800080939505853178F0109295050E94690A3F
:101590000AC04A3029F04D3029F41092950502C056
:1015A0000E94690A219648814423E9F6DF91CF9190
:1015B0001F9108958093950560939605622FCA0147
:1015C0000E94AD0A0895982F87FD39C06034B8F5A0
:1015D000862F869586958695282F33273695322F28
:1015E000222737952795290F311D677081E090E0FC
:1015F00001C0880F6A95EAF7682F3370413061F0B7
:10160000413018F04230A1F40DC0F901E057FF4F0E
:101610008081609586230BC0F901E057FF4F8081E0
:10162000862B05C0F901E057FF4F80818627808314
:10163000F901E057FF4F6081C9010E949A0908959E
:101640002F923F924F925F926F927F928F929F92D2
:10165000AF92BF92CF92DF92EF92FF920F931F93C0
:10166000CF93DF93CDB7DEB728970FB6F894DEBFE0
:101670000FBECDBF8D83162F0E83682E7724862E46
:101680009924842F99279C838B8386199709E22FAD
:10169000FF27FA83E9839F012819390997FF04C0BE
:1016A000FFEF2F2E3F2E07C040E050E0009711F0D3
:1016B00041E050E01A0137FF04C0EFEF4E2E5E2EDE
:1016C00008C040E050E02115310511F041E050E044
:1016D0002A016C0197FF04C0D094C194D108D3941F
:1016E000790137FF04C0F094E194F108F3944E813E
:1016F000682D862D0E94E30AEC14FD047CF5C601DA
:1017000062E070E00E94141644275527461B570BD1
:1017100058874F83A22CB62CB20C5D81052F112760
:1017200017C08F8198858E0D9F1D98878F831816FF
:10173000190634F4840C951C8C199D0998878F83A5
:101740004E81682D8B2D0E94E30A020D131DBA0CE9
:10175000EB81FC810E171F0721F72DC0C70162E046
:1017600070E00E94141644275527461B570B5887D4
:101770004F83A42CB82CB40C012F112717C08F81D4
:1017800098858C0D9D1D98878F831816190634F443
:10179000620C731C8E199F0998878F834E816B2D65
:1017A000862D0E94E30A040D151DBA0CE981FA8109
:1017B0000E171F0721F728960FB6F894DEBF0FBE4D
:1017C000CDBFDF91CF911F910F91FF90EF90DF90F0
:1017D000CF90BF90AF909F908F907F906F905F90D1
:1017E0004F903F902F900895BF92CF92DF92EF924B
:1017F000FF920F931F93CF93DF93182FB02E87FD87
:101800001FE7603408F06FE37727CB01820F911D4B
:101810009C01812F840F912D911D6C0191E8C916B7
:10182000D10418F0B0E8CB2ED12C79012134310548
:1018300018F0A0E4EA2EF12CEB0108C00B2D2C2FA0
:101840004C2D6C2F812F0E94200B2196EC16FD064B
:10185000A8F7DF91CF911F910F91FF90EF90DF904C
:10186000CF90BF900895CF92DF92EF92FF920F93A7
:101870001F93CF93DF93D82EC02E87FF02C08FE730
:10188000D82E162F603408F01FE3812F820F912D80
:10189000911DEC018D2D840F912D911D7C0191E8FE
:1018A000E916F10418F000E8E02EF12C0C2D212FA0
:1018B0004E2D612F8D2D0E94200BC134D10510F0CB
:1018C000C0E4D0E00C2D2C2F4E2D612F8E2D0E94C8
:1018D000200B2C2F4D2D6C2F8E2D0E94200B212F95
:1018E0004D2D6C2F8D2D0E94200BDF91CF911F91DC
:1018F0000F91FF90EF90DF90CF9008952F923F923D
:101900004F925F926F927F928F929F92AF92BF920F
:10191000CF92DF92EF92FF920F931F93CF93DF93BB
:10192000CDB7DEB724970FB6F894DEBF0FBECDBF9C
:101930008C016B017A01A22E21E030E0241B350BD3
:101940003C832B83CA01880F991F66247724681A69
:10195000790A462E502E640F4A2D802F0E94E30AEA
:101960006C2D6E194A2D802F0E94E30A4A2D6C2D92
:10197000802F8E0D0E94E30A4A2D6C2D802F8E1928
:101980000E94E30A4701222433241A82198258C094
:101990008B819C8197FD0BC0089481089108E2E03F
:1019A000F0E06E0E7F1E860D971D9C838B8308943E
:1019B000211C311C29813A812E5F3F4F3A832983B4
:1019C0008B819C810196820F931F9C838B83142DA6
:1019D000180DD52CD20C4A2D612F8D2D0E94E30AB3
:1019E000E52CE2184A2D612F8E2D0E94E30A142D5A
:1019F00018194A2D612F8D2D0E94E30A4A2D612F5F
:101A00008E2D0E94E30A142D120DE52CE80C4A2DB0
:101A1000612F8E2D0E94E30A952D9819092F4A2DCA
:101A2000612F892F0E94E30A142D12194A2D612F6C
:101A30008E2D0E94E30A4A2D612F802F0E94E30A17
:101A4000281439040CF4A4CF24960FB6F894DEBF02
:101A50000FBECDBFDF91CF911F910F91FF90EF90FF
:101A6000DF90CF90BF90AF909F908F907F906F90BE
:101A70005F904F903F902F9008952F923F924F92FA
:101A80005F926F927F928F929F92AF92BF92CF920E
:101A9000DF92EF92FF920F931F93CF93DF936B012F
:101AA0007A0151E0A52EB12CAE18BF089701220F84
:101AB000331F88249924821A930A662E782E262FA3
:101AC0002E196E0D01E0482F0E94200B472D4E1954
:101AD0002C2D6C2D872D8E0D0E94200BE7014424A8
:101AE0005524222433243AC0B7FC07C0219782E052
:101AF00090E0880E991EA80CB91C0894411C511C3A
:101B000082E090E0280E391E0894A11CB11CA20CA2
:101B1000B31C1C2F662D6C0FE72CE418D72CD40CAB
:101B200001E0262F4E2D8D2D0E94200B662D6C1B63
:101B3000262F4E2D8D2D0E94200B662D640DE72C37
:101B4000EC1A170D262F4E2D812F0E94200B662D8B
:101B50006419262F4E2D812F0E94200B4C165D06F6
:101B60001CF2DF91CF911F910F91FF90EF90DF90CA
:101B7000CF90BF90AF909F908F907F906F905F902D
:101B80004F903F902F900895A2E0B0E00E9427165A
:101B9000802D992780938F00089581E021E030E027
:101BA000D901082E0E942F1680E02F5F3F4FD901E8
:101BB000082E0E942F1608958FEF8BBB83E488BBFD
:101BC0008CEF85BB8CE782BB83E084BB80E881BB64
:101BD00021E030E0D9010E942716802D813071F07C
:101BE00081E0D901082E0E942F1680E02F5F3F4F21
:101BF000D901082E0E942F16215030402F5F3F4FF1
:101C0000D9010E942716802D992780938F000E946A
:101C100053090E9492120E94091378940E94650E43
:101C2000FDCF0F931F93062F142F20E049ED56E0B0
:101C3000682F812F0E94A40A20E047ED56E0602F14
:101C4000812F0E94A40A1F910F910895EF92FF9295
:101C50000F931F93082FE62EF42E682F0E94110E6B
:101C6000102F912F80919A058823E1F780919A0592
:101C70008823E1F380919A05823019F41E1508F447
:101C80001F5F80919A05813019F4011708F41150F3
:101C90004F2D612F892F0E94110E80919A05883057
:101CA00021F080919A058430E1F680919A05843084
:101CB00009F41FEF80919A058823E1F7812F992776
:101CC0001F910F91FF90EF9008950E94380960E0F6
:101CD00080EC96E00E94760A60E084EB96E00E9439
:101CE000760A60E088EA96E00E94760A60E08CE975
:101CF00096E00E94760A60E08EE896E00E94760AFE
:101D000060E083E896E00E94760A60E08EE696E066
:101D10000E94760A4CE066E082E00E94260E843043
:101D200091F0853028F4823041F08330A1F408C06E
:101D3000853061F0863079F40CC00E94A8080895BF
:101D40000E94BD1108950E94AC0E08950E94D41403
:101D500008950E94271308950E94380980919A05DA
:101D60008823E1F760E08BED96E00E94760A80918F
:101D70009A058823E1F380919A058830C9F483E2BB
:101D80008093910481E68093920484E78093930486
:101D90008AE08093940480939504809396048093C2
:101DA0009704109298041092990489E00E940F07FA
:101DB00080919A058823E1F780919A058823E1F3C1
:101DC00083E28093910481E68093920484E7809378
:101DD0009304109294041092950410929604109219
:101DE0009704109298041092990489E00E940F07BA
:101DF0000895FB0120E030E0482F552761E0CA013B
:101E0000022E02C0959587950A94E2F780FF02C0E2
:101E1000608301C010822F5F3F4F3196283031051B
:101E200071F7089540E020E030E061E070E0FC01EF
:101E30008191813041F4CB01022E02C0880F991F9D
:101E40000A94E2F7480F2F5F3F4F2830310581F7A2
:101E5000842F99270895482FFB0164E60E94F4150A
:101E6000808324E6829FC0011124481B842F6AE0EE
:101E70000E94F4152AE0829F90011124421B405DCC
:101E800042839081905D9083805D8183903329F4BB
:101E900090E29083803309F4918313820895CF9266
:101EA000DF92EF92FF920F931F93CF93DF93CDB703
:101EB000DEB762970FB6F894DEBF0FBECDBF82309B
:101EC00008F455C0615044E080E00E94260EC82E00
:101ED0008FEFC81609F421C1EC2CFF24F701E25260
:101EE000FA4FE081FF27EF56FB4FD08020E04AE217
:101EF0005DE06C2D84E00E94A40A80919A058823FD
:101F0000E1F780919A05813009F4DA9480919A057D
:101F1000823009F4D3948E01075F1F4FB8018D2DD5
:101F20000E942B0F20E0A8016C2D80E00E94DA0AAD
:101F300084E180939705809197058823E1F780914C
:101F40009A05843021F080919A058830D1F68091ED
:101F50009A05883009F0E1C0AEEDB5E0EA0EFB1E4F
:101F6000D701EC91FF27EF56FB4FD082D6C08130CE
:101F700009F069C08E010F5F1F4FB8018091C50441
:101F80000E94F90E1A8644E063E080E00E94260E6B
:101F9000D82EBFEF8B1709F4C0C0E82EFF240E0D1A
:101FA0001F1DF801008120E048E25DE0682F84E019
:101FB0000E94A40A80919A05813009F400E0809182
:101FC0009A05823009F401E0005D0987005320E0A2
:101FD000AE01475F5F4F6D2D80E00E94DA0A84E119
:101FE00080939705809197058823E1F780919A0562
:101FF000883021F080919A058430E1F680919A052D
:10200000883051F4CE010196E80EF91ED7010C93E9
:102010000E94120F8093C5040E9438098E01075F49
:102020001F4FB8018091C5040E942B0F60E0C801CA
:102030000E94AD0A88EC80939705809197058823CC
:1020400009F46BC0FACF882309F067C08E010F5FD7
:102050001F4FB801809199040E94F90E1A8644E03E
:1020600067E080E00E94260ED82EBFEF8B1709F4A0
:1020700054C0E82EFF240E0D1F1DF801008120E042
:1020800046E25DE0682F84E00E94A40A80919A05F0
:10209000813009F400E080919A05823009F401E072
:1020A000005D0987005320E0AE01475F5F4F6D2D53
:1020B00080E00E94DA0A84E1809397058091970579
:1020C0008823E1F780919A05883021F080919A0564
:1020D0008430E1F680919A05883051F4CE01019662
:1020E000E80EF91ED7010C930E94120F80939904F9
:1020F0000E9438098E01075F1F4FB8018091990433
:102100000E942B0F60E0C8010E94AD0A88EC80930A
:102110009705809197058823E1F762960FB6F894AA
:10212000DEBF0FBECDBFDF91CF911F910F91FF900A
:10213000EF90DF90CF9008956F927F928F929F9251
:10214000AF92BF92CF92DF92EF92FF920F931F93C5
:10215000CF93DF93CDB7DEB7A1970FB6F894DEBF6C
:102160000FBECDBFE82E81E08E1508F044C044EBD1
:10217000A42E47E0B42E39E3632E39E0732EFF24FA
:10218000CC24DD2421E9822E24E0922EF5018491D5
:102190008E15E9F4EF2DFF27E252FA4FC0828E012F
:1021A000075F1F4FB801F40180810E942B0F20E0D0
:1021B000A8016F2D80E00E94DA0A20E0A3016F2DB4
:1021C00085E00E94A40AF7E0FF1508F0F394089454
:1021D000C11CD11C83E090E0A80EB91E0894811C9C
:1021E000911CE0E1F0E06E0E7F1EF2E4CF16D10408
:1021F00009F463C0CBCF81E0E81679F58E010F5F5B
:102200001F4FB8018091C5040E94F90E1A8699E704
:10221000A92E98E0B92E6801CE0101961C2D181B3D
:10222000F60181916F01805D898720E0AE01475FF3
:102230005F4F612F80E00E94DA0A20E0A501612F44
:1022400085E00E94A40A80E190E0A80EB91ECE01AC
:102250000596C816D90681F1DFCFEE2069F58E010B
:102260000F5F1F4FB801809199040E94F90E1A86E2
:10227000680189EBA82E88E0B82ECE010196FC2CCF
:10228000F81AF60181916F01805D89878E01075FE1
:102290001F4F20E0A8016F2D80E00E94DA0A20E0A5
:1022A000A5016F2D85E00E94A40A80E190E0A80EB0
:1022B000B91EC016D10609F7FF248F2D9927A196C4
:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147
:1022D0000F91FF90EF90DF90CF90BF90AF909F90C5
:1022E0008F907F906F900895982F8630D8F426E4D1
:1022F00030E0E7EDF4E08081838321503040319776
:102300008FEF2F3F3807B9F783E28093910481E67E
:10231000809392049559909393041092DB048BE47C
:102320000E940F0708951F9393E29093910491E602
:102330009093920491E79093930480939404109265
:1023400095041092960486E00E940F0710E00E9408
:102350008A07813009F41EE11F5F809115058C54B6
:10236000853018F01E3198F304C080E090E01E31F3
:1023700010F081E090E01F910895FF920F931F935A
:10238000CF93DF93CDB7DEB72F970FB6F894DEBFAC
:102390000FBECDBF0E94380960E085E19DE00E943C
:1023A000760A60E08FE09DE00E94760A60E089E0B6
:1023B0009DE00E94760A60E083E09DE00E94760A3C
:1023C00060E08DEF9CE00E94760A60E087EF9CE081
:1023D0000E94760A40E065E081E00E94260E0E949D
:1023E0009311813041F420E04FEE5CE066E080E044
:1023F0000E94A40A62C062E0F62E0E9438098E0193
:102400000F5F1F4F4AE050E0B8018F2D99270E94BF
:10241000CE1560E0C8010E94AD0A82E38093970563
:10242000809197058823E1F70E9438098F2D0E943B
:102430009C10682F80919A058823E1F380919A057A
:10244000823009F4F39480919A05813009F4FA946A
:102450008FEFF81619F45CE0F52E04C08CE08F15B0
:1024600008F4FF2480919A05883019F48F2D0E947A
:102470004F0F80919A05843009F0BFCF0E94380930
:1024800060E08CEC9CE00E94760A40E062E081E033
:102490000E94260E813061F460E085EC9CE00E9491
:1024A000760A85E00E94741160E08DEA9CE003C02A
:1024B00060E089E99CE00E94760A84E680939705B3
:1024C000809197058823E1F72F960FB6F894DEBF29
:1024D0000FBECDBFDF91CF911F910F91FF90089557
:1024E0001F920F920FB60F9211248F939F93EF9329
:1024F000FF938091E6059CB1E8EEF5E0E80FF11D51
:1025000090838F5F8093E6058091E6058F708093BE
:10251000E605FF91EF919F918F910F900FBE0F9065
:102520001F90189588E98AB987E089B908958AE0EB
:10253000809399059091E7058091E605981721F41D
:10254000809199058823B1F780919905882311F42A
:10255000E0E00FC08091E705E82FFF27E851FA4F30
:10256000E0818F5F8093E7058091E7058F7080930E
:10257000E7058E2F992708955D9BFECF8CB90895AE
:10258000FC0104C05D9BFECF8CB93196808188230D
:10259000C9F708951F920F920FB60F9211248F93CF
:1025A0009F9380919805882331F080919805815000
:1025B0008093980515C08AE08093980589B3992780
:1025C00080959095689413F8959587951694E1F702
:1025D0008F7080939A0580919B058F5F80939B05F8
:1025E00080919705882329F08091970581508093E9
:1025F000970580919905882329F08091990581504C
:10260000809399059F918F910F900FBE0F901F900F
:1026100018958DE083BF88E48CBF89B7826089BF3D
:102620000895F89480918F00882321F484E08093AA
:102630008F0002C010928F0080918F00A2E0B0E066
:10264000082E0E942F160E945309789408950F9324
:102650001F9311E00E94380960E088E59DE00E9428
:10266000760A60E085E59DE00E94760A60E086E4F7
:102670009DE00E94760A60E08EE39DE00E94760A6B
:1026800060E083E39DE00E94760A60E08CE29DE0DA
:102690000E94760A4FE065E082E00E94260E8330B9
:1026A00049F08430C9F0823011F010E026C00E9459
:1026B000111323C00E94380901E022E344E664E1DB
:1026C0008AE00E94200B80919A058830B1F08091B9
:1026D0009A05843091F0F7CF0E94380901E028E292
:1026E00044E664E18AE00E94330C80919A058830C8
:1026F00021F080919A058430C1F7112309F0AACF07
:102700001F910F910895CF93DF93EC0152E070E099
:1027100026C0E52FFF27EC5EFA4F21812D53328131
:102720003D5343814D535C5FDE01A80FB91F80818B
:102730008D53880F880F922F92959F70892B8C93C1
:102740002295207F832F86958695282BFD01218356
:102750003295330F330F307C342B32837D5F872FDC
:1027600099275617B0F2DF91CF9108954F925F925B
:102770006F927F928F929F92AF92BF92CF92DF9291
:10278000EF92FF920F931F93CF93DF93FC01EB0126
:1027900080E2888340E8E130F40718F46624772467
:1027A00008C0F095E195FF4F8DE2888351E0652EDA
:1027B000712C2E010894411C511CCF0160E177E27D
:1027C0000E9400168B01262F332780E197E2BC017F
:1027D000269FC001279F900D369F900D11249F01C9
:1027E000281B390B42E0C42ED12CCC0EDD1EC901B2
:1027F00068EE73E00E9400167B01462F552788EE95
:1028000093E0FC014E9FC0014F9F900D5E9F900D85
:102810001124281B390B93E0A92EB12CAC0EBD1E40
:10282000C90164E670E00E940016FB0184E6689F1F
:10283000C0011124281B390B84E0882E912C8C0EAA
:102840009D1EC9016AE070E00E9400168AE0689F40
:10285000C0011124281B390B205D2D83005D0983E5
:10286000F0E3EF0EEA82E05DEB83605D6C830033A2
:1028700091F580E2888341E06416710409F48DE2E9
:102880008983F6018081803331F580E2F201808313
:10289000F1E06F16710409F48DE2F6018083F50111
:1028A00080818033C1F480E2F6018083F1E06F160D
:1028B000710409F48DE2F5018083F4018081803395
:1028C00051F480E2F5018083F1E06F16710409F4A0
:1028D0008DE2F40180831E82DF91CF911F910F91D1
:1028E000FF90EF90DF90CF90BF90AF909F908F9030
:1028F0007F906F905F904F9008951F9384E1809335
:1029000097050E949712833221F0809197058823C2
:10291000C1F780919705882319F481E090E019C0F0
:102920000E9497128093140511E00AC00E9497122A
:10293000E12FFF27EC5EFA4F80831F5F17FD1FE733
:102940008D30A1F7612F8CE995E00E94831380E020
:1029500090E01F9108951F9393E29093910491E664
:102960009093920493E6909393048093940410922E
:1029700095041092960486E00E940F0710E00E94D2
:102980007D14813009F41EE11F5F809115058434A8
:1029900019F01E31A0F304C080E090E01E3110F069
:1029A00081E090E01F9108950F931F93CF93DF93E1
:1029B000CDB7DEB72A970FB6F894DEBF0FBECDBFF6
:1029C0000E94380960E084E79DE00E94760A8091C9
:1029D0009A058823E1F70E94AB14813071F460E01E
:1029E00089E69DE00E94760A88EC809397058091A5
:1029F0009705882309F4A6C0FACF809193048983B0
:102A00001A8220E08E010F5F1F4FA80160E08FE067
:102A10000E94DA0AB80180919E0590919F050E945C
:102A2000B61320E040E650E061E080E00E94DA0A60
:102A300020E0A80161E08AE00E94DA0AB8018091F2
:102A4000A0059091A1050E94B61320E045E650E054
:102A500062E080E00E94DA0A20E0A80162E08AE0F9
:102A60000E94DA0AB8018091A2059091A3050E9404
:102A7000B61320E04AE650E063E080E00E94DA0A04
:102A800020E0A80163E08AE00E94DA0AB8018091A0
:102A9000A4059091A5050E94B61320E043E750E0FD
:102AA00064E080E00E94DA0A20E0A80164E08AE0A5
:102AB0000E94DA0AB8018091A6059091A7050E94AC
:102AC000B61320E04CE750E065E080E00E94DA0AAF
:102AD00020E0A80165E08AE00E94DA0AB80180914E
:102AE000A8059091A9050E94B61320E041E850E0A6
:102AF00066E080E00E94DA0A20E0A80166E08AE051
:102B00000E94DA0AB8018091B0059091B1050E9447
:102B1000B61320E045E850E067E080E00E94DA0A62
:102B200020E0A80167E08AE00E94DA0A8AE0809348
:102B30009705809197058823E1F780919A05843065
:102B400009F045CF2A960FB6F894DEBF0FBECDBF71
:102B5000DF91CF911F910F910895FB019F01E894A0
:102B60004230C4F04532B4F44A3029F497FB1EF4E5
:102B7000909581959F4F642F77270E940016805D66
:102B80008A330CF0895D8193CB010097A1F716F48D
:102B90005DE251931082C9010C94E415FB019F0181
:102BA000423074F0453264F4642F77270E94001697
:102BB000805D8A330CF0895D8193CB010097A1F78A
:102BC0001082C9010C94E415DC01FC01672F71919E
:102BD0007723E1F7329704C07C916D937083629103
:102BE000AE17BF07C8F30895991B79E004C0991F79
:102BF000961708F0961B881F7A95C9F78095089557
:102C0000AA1BBB1B51E107C0AA1FBB1FA617B70712
:102C100010F0A61BB70B881F991F5A95A9F780952E
:102C20009095BC01CD01089597FB092E07260AD087
:102C300077FD04D0E5DF06D000201AF47095619589
:102C40007F4F0895F6F7909581959F4F0895E199EC
:102C5000FECFBFBBAEBBE09A11960DB20895E199CD
:102C6000FECFBFBBAEBB0DBA11960FB6F894E29A79
:082C7000E19A0FBE0895FFCFA9
:102C78004E69636B00526F6C6C00414343204E6990
:102C8800636B0041434320526F6C6C004769657267
:0E2C980000414343005370616E6E756E67001D
:00000001FF
/Transportables_Koptertool/trunk/default/Makefile
0,0 → 1,110
###############################################################################
# Makefile for the project MMT
###############################################################################
 
## General Flags
PROJECT = MMT
MCU = atmega32
TARGET = MMT.elf
CC = avr-gcc.exe
 
## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)
 
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
 
## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
 
## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS +=
 
 
## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom
 
HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
 
 
## Objects that must be built in order to link
OBJECTS = base64.o displ_val.o display.o F8X6.o lcd.o main.o menu.o motortest.o parameter.o rs232.o timer.o settings.o debug.o
 
## Objects explicitly added by the user
LINKONLYOBJECTS =
 
## Build
all: $(TARGET) MMT.hex MMT.eep size
 
## Compile
base64.o: ../base64.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
displ_val.o: ../displ_val.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
display.o: ../display.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
F8X6.o: ../F8X6.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
lcd.o: ../lcd.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
main.o: ../main.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
menu.o: ../menu.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
motortest.o: ../motortest.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
parameter.o: ../parameter.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
rs232.o: ../rs232.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
timer.o: ../timer.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
settings.o: ../settings.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
debug.o: ../debug.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
 
##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
 
%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
 
%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
 
%.lss: $(TARGET)
avr-objdump -h -S $< > $@
 
size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}
 
## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) MMT.elf dep/* MMT.hex MMT.eep
 
## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
 
/Transportables_Koptertool/trunk/default/dep/F8X6.o.d
0,0 → 1,27
F8X6.o: ../F8X6.c d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
/Transportables_Koptertool/trunk/default/dep/base64.o.d
0,0 → 1,42
base64.o: ../base64.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../rs232.h \
../base64.h ../lcd.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../rs232.h:
 
../base64.h:
 
../lcd.h:
/Transportables_Koptertool/trunk/default/dep/debug.o.d
0,0 → 1,48
debug.o: ../debug.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h ../rs232.h \
../base64.h ../parameter.h ../menu.h ../debug.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
 
../rs232.h:
 
../base64.h:
 
../parameter.h:
 
../menu.h:
 
../debug.h:
/Transportables_Koptertool/trunk/default/dep/displ_val.o.d
0,0 → 1,43
displ_val.o: ../displ_val.c \
d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../base64.h ../lcd.h \
../rs232.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../base64.h:
 
../lcd.h:
 
../rs232.h:
/Transportables_Koptertool/trunk/default/dep/display.o.d
0,0 → 1,46
display.o: ../display.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h ../rs232.h \
../base64.h ../parameter.h ../menu.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
 
../rs232.h:
 
../base64.h:
 
../parameter.h:
 
../menu.h:
/Transportables_Koptertool/trunk/default/dep/lcd.o.d
0,0 → 1,45
lcd.o: ../lcd.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h \
d:/winavr-20070525/bin/../avr/include/util/delay.h \
d:/winavr-20070525/bin/../avr/include/util/delay_basic.h ../font8x6.h \
../main.h d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
d:/winavr-20070525/bin/../avr/include/util/delay.h:
 
d:/winavr-20070525/bin/../avr/include/util/delay_basic.h:
 
../font8x6.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
/Transportables_Koptertool/trunk/default/dep/main.o.d
0,0 → 1,59
main.o: ../main.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/util/delay.h \
d:/winavr-20070525/bin/../avr/include/util/delay_basic.h \
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h ../rs232.h \
../parameter.h ../menu.h ../display.h ../base64.h ../timer.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/util/delay.h:
 
d:/winavr-20070525/bin/../avr/include/util/delay_basic.h:
 
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
 
../rs232.h:
 
../parameter.h:
 
../menu.h:
 
../display.h:
 
../base64.h:
 
../timer.h:
/Transportables_Koptertool/trunk/default/dep/menu.o.d
0,0 → 1,55
menu.o: ../menu.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h ../rs232.h \
../base64.h ../parameter.h ../menu.h ../display.h ../motortest.h \
../debug.h ../settings.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
 
../rs232.h:
 
../base64.h:
 
../parameter.h:
 
../menu.h:
 
../display.h:
 
../motortest.h:
 
../debug.h:
 
../settings.h:
/Transportables_Koptertool/trunk/default/dep/motortest.o.d
0,0 → 1,43
motortest.o: ../motortest.c \
d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../motortest.h \
../lcd.h ../base64.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../motortest.h:
 
../lcd.h:
 
../base64.h:
/Transportables_Koptertool/trunk/default/dep/parameter.o.d
0,0 → 1,47
parameter.o: ../parameter.c \
d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../lcd.h ../rs232.h \
../base64.h ../parameter.h ../menu.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../lcd.h:
 
../rs232.h:
 
../base64.h:
 
../parameter.h:
 
../menu.h:
/Transportables_Koptertool/trunk/default/dep/rs232.o.d
0,0 → 1,37
rs232.o: ../rs232.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/stdlib.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../rs232.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/stdlib.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../rs232.h:
/Transportables_Koptertool/trunk/default/dep/settings.o.d
0,0 → 1,42
settings.o: ../settings.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h \
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h ../menu.h ../lcd.h \
../settings.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/avr/pgmspace.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
../menu.h:
 
../lcd.h:
 
../settings.h:
/Transportables_Koptertool/trunk/default/dep/timer.o.d
0,0 → 1,34
timer.o: ../timer.c d:/winavr-20070525/bin/../avr/include/avr/io.h \
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h \
d:/winavr-20070525/bin/../avr/include/inttypes.h \
d:/winavr-20070525/bin/../avr/include/stdint.h \
d:/winavr-20070525/bin/../avr/include/avr/iom32.h \
d:/winavr-20070525/bin/../avr/include/avr/portpins.h \
d:/winavr-20070525/bin/../avr/include/avr/version.h \
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h ../main.h \
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h \
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h ../timer.h
 
d:/winavr-20070525/bin/../avr/include/avr/io.h:
 
d:/winavr-20070525/bin/../avr/include/avr/sfr_defs.h:
 
d:/winavr-20070525/bin/../avr/include/inttypes.h:
 
d:/winavr-20070525/bin/../avr/include/stdint.h:
 
d:/winavr-20070525/bin/../avr/include/avr/iom32.h:
 
d:/winavr-20070525/bin/../avr/include/avr/portpins.h:
 
d:/winavr-20070525/bin/../avr/include/avr/version.h:
 
d:/winavr-20070525/bin/../avr/include/avr/interrupt.h:
 
../main.h:
 
d:/winavr-20070525/bin/../avr/include/avr/eeprom.h:
 
d:\winavr-20070525\bin\../lib/gcc/avr/4.1.2/include/stddef.h:
 
../timer.h:
/Transportables_Koptertool/trunk/displ_val.c
0,0 → 1,83
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "base64.h"
#include "lcd.h"
#include "rs232.h"
 
// Insgesamt 32 Werte können angezeigt werden
// jeweils 8 Stück werden gleichzeitg angezeigt
// Auswahl über Tasten
 
uint8_t displ_page;
 
 
void displ_get_text(uint8_t number)
{
uint8_t text[17];
uint8_t i;
p_buffer[0] = '#';
p_buffer[1] = 'a';
p_buffer[2] = 'a';
p_buffer[3] = number;
p_buffer[4] = 0;
p_buffer[5] = 0;
base64_send(6);
 
do
{
get_message();
}
while (r_buffer[1] != 'A');
 
for (i=0;i<16;i++)
text[i] = p_buffer[i];
text[16] = 0x00;
lcd_print_at(0,(number & 0x07),text,0);
}
 
void displ_values(void)
{
uint8_t displ_page, i;
int16_t value;
uint8_t text[17];
 
displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte)
lcd_cls(); // LCD löschen
do
{
for (i=0;i<8;i++) // Texte lesen und anzeigen
displ_get_text(i+displ_page*8);
do
{
get_message();
if(r_buffer[1] == 'D')
{
for (i=0;i<8;i++)
{
value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3];
itoa(value,text,10);
lcd_print_atp(14,i,PSTR(" "),0);
lcd_print_at(14,i,text,0);
}
}
}
while (key == 0x00);
if (key == 0x01)
displ_page++;
if (key == 0x02)
displ_page--;
displ_page &= 0x03;
}
while(key != 0x08);
}
 
/Transportables_Koptertool/trunk/displ_val.d
0,0 → 1,0
displ_val.o displ_val.d : displ_val.c main.h base64.h lcd.h rs232.h
/Transportables_Koptertool/trunk/displ_val.h
0,0 → 1,6
#ifndef displ_val_h
#define displ_val_h
 
void displ_values(void);
 
#endif
/Transportables_Koptertool/trunk/displ_val.lst
0,0 → 1,284
1 .file "displ_val.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global displ_get_text
20 displ_get_text:
21 .LFB4:
22 .LM1:
23 /* prologue: frame size=17 */
24 0000 1F93 push r17
25 0002 CF93 push r28
26 0004 DF93 push r29
27 0006 CDB7 in r28,__SP_L__
28 0008 DEB7 in r29,__SP_H__
29 000a 6197 sbiw r28,17
30 000c 0FB6 in __tmp_reg__,__SREG__
31 000e F894 cli
32 0010 DEBF out __SP_H__,r29
33 0012 0FBE out __SREG__,__tmp_reg__
34 0014 CDBF out __SP_L__,r28
35 /* prologue end (size=11) */
36 0016 182F mov r17,r24
37 .LM2:
38 0018 83E2 ldi r24,lo8(35)
39 001a 8093 0000 sts p_buffer,r24
40 .LM3:
41 001e 81E6 ldi r24,lo8(97)
42 0020 8093 0000 sts p_buffer+1,r24
43 .LM4:
44 0024 8093 0000 sts p_buffer+2,r24
45 .LM5:
46 0028 1093 0000 sts p_buffer+3,r17
47 .LM6:
48 002c 1092 0000 sts p_buffer+4,__zero_reg__
49 .LM7:
50 0030 1092 0000 sts p_buffer+5,__zero_reg__
51 .LM8:
52 0034 86E0 ldi r24,lo8(6)
53 0036 0E94 0000 call base64_send
54 .L2:
55 .LM9:
56 003a 0E94 0000 call get_message
57 .LM10:
58 003e 8091 0000 lds r24,r_buffer+1
59 0042 8134 cpi r24,lo8(65)
60 0044 D1F7 brne .L2
61 0046 DE01 movw r26,r28
62 0048 1196 adiw r26,1
63 004a E0E0 ldi r30,lo8(p_buffer)
64 004c F0E0 ldi r31,hi8(p_buffer)
65 004e 9FE0 ldi r25,lo8(15)
66 .L8:
67 .LM11:
68 0050 8191 ld r24,Z+
69 0052 8D93 st X+,r24
70 .LM12:
71 0054 9150 subi r25,lo8(-(-1))
72 0056 97FF sbrs r25,7
73 0058 FBCF rjmp .L8
74 .LM13:
75 005a 198A std Y+17,__zero_reg__
76 .LM14:
77 005c 1770 andi r17,lo8(7)
78 005e 2989 ldd r18,Y+17
79 0060 AE01 movw r20,r28
80 0062 4F5F subi r20,lo8(-(1))
81 0064 5F4F sbci r21,hi8(-(1))
82 0066 612F mov r22,r17
83 0068 822F mov r24,r18
84 006a 0E94 0000 call lcd_print_at
85 /* epilogue: frame size=17 */
86 006e 6196 adiw r28,17
87 0070 0FB6 in __tmp_reg__,__SREG__
88 0072 F894 cli
89 0074 DEBF out __SP_H__,r29
90 0076 0FBE out __SREG__,__tmp_reg__
91 0078 CDBF out __SP_L__,r28
92 007a DF91 pop r29
93 007c CF91 pop r28
94 007e 1F91 pop r17
95 0080 0895 ret
96 /* epilogue end (size=10) */
97 /* function displ_get_text size 65 (44) */
98 .LFE4:
100 .section .progmem.data,"a",@progbits
103 __c.0:
104 0000 2020 2020 .string " "
104 2020 00
105 .text
106 .global displ_values
108 displ_values:
109 .LFB5:
110 .LM15:
111 /* prologue: frame size=17 */
112 0082 CF92 push r12
113 0084 DF92 push r13
114 0086 EF92 push r14
115 0088 FF92 push r15
116 008a 0F93 push r16
117 008c 1F93 push r17
118 008e CF93 push r28
119 0090 DF93 push r29
120 0092 CDB7 in r28,__SP_L__
121 0094 DEB7 in r29,__SP_H__
122 0096 6197 sbiw r28,17
123 0098 0FB6 in __tmp_reg__,__SREG__
124 009a F894 cli
125 009c DEBF out __SP_H__,r29
126 009e 0FBE out __SREG__,__tmp_reg__
127 00a0 CDBF out __SP_L__,r28
128 /* prologue end (size=16) */
129 .LM16:
130 00a2 00E0 ldi r16,lo8(0)
131 .LM17:
132 00a4 0E94 0000 call lcd_cls
133 .L12:
134 .LM18:
135 00a8 10E0 ldi r17,lo8(0)
136 .L18:
137 .LM19:
138 00aa C02E mov r12,r16
139 00ac DD24 clr r13
140 00ae C601 movw r24,r12
141 00b0 53E0 ldi r21,3
142 00b2 880F 1: lsl r24
143 00b4 991F rol r25
144 00b6 5A95 dec r21
145 00b8 E1F7 brne 1b
146 00ba 810F add r24,r17
147 00bc 0E94 0000 call displ_get_text
148 .LM20:
149 00c0 1F5F subi r17,lo8(-(1))
150 00c2 1830 cpi r17,lo8(8)
151 00c4 90F3 brlo .L18
152 .L19:
153 .LM21:
154 00c6 0E94 0000 call get_message
155 .LM22:
156 00ca 8091 0000 lds r24,r_buffer+1
157 00ce 8434 cpi r24,lo8(68)
158 00d0 91F5 brne .L21
159 .LM23:
160 00d2 10E0 ldi r17,lo8(0)
161 00d4 EE24 clr r14
162 00d6 FF24 clr r15
163 .L26:
164 .LM24:
165 00d8 F601 movw r30,r12
166 00da 43E0 ldi r20,3
167 00dc EE0F 1: lsl r30
168 00de FF1F rol r31
169 00e0 4A95 dec r20
170 00e2 E1F7 brne 1b
171 00e4 EE0D add r30,r14
172 00e6 FF1D adc r31,r15
173 00e8 EE0F add r30,r30
174 00ea FF1F adc r31,r31
175 00ec E050 subi r30,lo8(-(p_buffer))
176 00ee F040 sbci r31,hi8(-(p_buffer))
177 00f0 2281 ldd r18,Z+2
178 00f2 8381 ldd r24,Z+3
179 00f4 9927 clr r25
180 00f6 982F mov r25,r24
181 00f8 8827 clr r24
182 .LM25:
183 00fa 4AE0 ldi r20,lo8(10)
184 00fc 50E0 ldi r21,hi8(10)
185 00fe BE01 movw r22,r28
186 0100 6F5F subi r22,lo8(-(1))
187 0102 7F4F sbci r23,hi8(-(1))
188 0104 820F add r24,r18
189 0106 911D adc r25,__zero_reg__
190 0108 0E94 0000 call itoa
191 .LM26:
192 010c 20E0 ldi r18,lo8(0)
193 010e 40E0 ldi r20,lo8(__c.0)
194 0110 50E0 ldi r21,hi8(__c.0)
195 0112 612F mov r22,r17
196 0114 8EE0 ldi r24,lo8(14)
197 0116 0E94 0000 call lcd_print_atp
198 .LM27:
199 011a 20E0 ldi r18,lo8(0)
200 011c AE01 movw r20,r28
201 011e 4F5F subi r20,lo8(-(1))
202 0120 5F4F sbci r21,hi8(-(1))
203 0122 612F mov r22,r17
204 0124 8EE0 ldi r24,lo8(14)
205 0126 0E94 0000 call lcd_print_at
206 .LM28:
207 012a 1F5F subi r17,lo8(-(1))
208 012c 0894 sec
209 012e E11C adc r14,__zero_reg__
210 0130 F11C adc r15,__zero_reg__
211 0132 1830 cpi r17,lo8(8)
212 0134 88F2 brlo .L26
213 .L21:
214 .LM29:
215 0136 8091 0000 lds r24,key
216 013a 8823 tst r24
217 013c 21F2 breq .L19
218 .LM30:
219 013e 8091 0000 lds r24,key
220 0142 8130 cpi r24,lo8(1)
221 0144 09F4 brne .L27
222 .LM31:
223 0146 0F5F subi r16,lo8(-(1))
224 .L27:
225 .LM32:
226 0148 8091 0000 lds r24,key
227 014c 8230 cpi r24,lo8(2)
228 014e 09F4 brne .L28
229 .LM33:
230 0150 0150 subi r16,lo8(-(-1))
231 .L28:
232 .LM34:
233 0152 0370 andi r16,lo8(3)
234 .LM35:
235 0154 8091 0000 lds r24,key
236 0158 8830 cpi r24,lo8(8)
237 015a 09F0 breq .+2
238 015c A5CF rjmp .L12
239 /* epilogue: frame size=17 */
240 015e 6196 adiw r28,17
241 0160 0FB6 in __tmp_reg__,__SREG__
242 0162 F894 cli
243 0164 DEBF out __SP_H__,r29
244 0166 0FBE out __SREG__,__tmp_reg__
245 0168 CDBF out __SP_L__,r28
246 016a DF91 pop r29
247 016c CF91 pop r28
248 016e 1F91 pop r17
249 0170 0F91 pop r16
250 0172 FF90 pop r15
251 0174 EF90 pop r14
252 0176 DF90 pop r13
253 0178 CF90 pop r12
254 017a 0895 ret
255 /* epilogue end (size=15) */
256 /* function displ_values size 125 (94) */
257 .LFE5:
259 .comm r_buffer,128,1
260 .comm p_buffer,128,1
261 .comm display_buffer,1024,1
262 .comm display_buffer_pointer,2,1
263 .comm display_buffer_counter,1,1
264 .comm display_page_counter,1,1
265 .comm display_mode,1,1
266 .comm displ_page,1,1
267 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 displ_val.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:20 .text:00000000 displ_get_text
*COM*:00000080 p_buffer
*COM*:00000080 r_buffer
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:103 .progmem.data:00000000 __c.0
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccG6aaaa.s:108 .text:00000082 displ_values
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
*COM*:00000001 displ_page
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
base64_send
get_message
lcd_print_at
lcd_cls
itoa
lcd_print_atp
key
/Transportables_Koptertool/trunk/display.c
0,0 → 1,78
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "lcd.h"
#include "rs232.h"
#include "base64.h"
#include "parameter.h"
#include "menu.h"
 
uint8_t read_display (uint8_t command) //
{
uint8_t timeout;
timeout = 0;
p_buffer[0] = '#'; // Display-Zeile anfordern
p_buffer[1] = 'a';
p_buffer[2] = 'h';
p_buffer[3] = command;
p_buffer[4] = 0;
p_buffer[5] = 0;
base64_send(6);
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1)
timeout = 10;
timeout ++;
}
while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10));
if (timeout >= 10)
return 1;
else
return 0;
}
 
void display_data (void)
{
uint8_t line;
uint8_t text[10];
 
lcd_cls();
lcd_printp(PSTR("Display"),0);
do
{
while (key != 0x00);
if (read_display(0) == 1)
{
lcd_printp(PSTR("\r\nTimeout!"),0);
timer = 200;
while (timer > 0);
break;
}
else
{
line = r_buffer[1];
text[0] = line;
text[1] = 0x00;
lcd_print_at(10,0,text,0);
lcd_print_at(0,line+1,p_buffer,0);
timer = 10;
while(timer > 0);
if (key == 0x01)
read_display(1);
if (key == 0x02)
read_display(2);
}
}
while (key != 0x04);
}
/Transportables_Koptertool/trunk/display.d
0,0 → 1,0
display.o display.d : display.c main.h lcd.h rs232.h base64.h parameter.h menu.h
/Transportables_Koptertool/trunk/display.h
0,0 → 1,6
#ifndef display_h
#define display_h
 
void display_data (void);
 
#endif
/Transportables_Koptertool/trunk/display.lst
0,0 → 1,235
1 .file "display.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global read_display
20 read_display:
21 .LFB4:
22 .LM1:
23 /* prologue: frame size=0 */
24 0000 CF93 push r28
25 /* prologue end (size=1) */
26 .LM2:
27 0002 C0E0 ldi r28,lo8(0)
28 .LM3:
29 0004 93E2 ldi r25,lo8(35)
30 0006 9093 0000 sts p_buffer,r25
31 .LM4:
32 000a 91E6 ldi r25,lo8(97)
33 000c 9093 0000 sts p_buffer+1,r25
34 .LM5:
35 0010 98E6 ldi r25,lo8(104)
36 0012 9093 0000 sts p_buffer+2,r25
37 .LM6:
38 0016 8093 0000 sts p_buffer+3,r24
39 .LM7:
40 001a C093 0000 sts p_buffer+4,r28
41 .LM8:
42 001e C093 0000 sts p_buffer+5,r28
43 .LM9:
44 0022 86E0 ldi r24,lo8(6)
45 0024 0E94 0000 call base64_send
46 .L2:
47 .LM10:
48 0028 0E94 0000 call get_message
49 002c 8130 cpi r24,lo8(1)
50 002e 09F4 brne .L5
51 .LM11:
52 0030 CAE0 ldi r28,lo8(10)
53 .L5:
54 .LM12:
55 0032 CF5F subi r28,lo8(-(1))
56 .LM13:
57 0034 8091 0000 lds r24,r_buffer+1
58 0038 8053 subi r24,lo8(-(-48))
59 003a 8530 cpi r24,lo8(5)
60 003c 10F0 brlo .L3
61 003e CA30 cpi r28,lo8(10)
62 0040 98F3 brlo .L2
63 .L3:
64 .LM14:
65 0042 CA30 cpi r28,lo8(10)
66 0044 18F0 brlo .L6
67 .LM15:
68 0046 81E0 ldi r24,lo8(1)
69 0048 90E0 ldi r25,hi8(1)
70 004a 02C0 rjmp .L1
71 .L6:
72 .LM16:
73 004c 80E0 ldi r24,lo8(0)
74 004e 90E0 ldi r25,hi8(0)
75 .L1:
76 /* epilogue: frame size=0 */
77 0050 CF91 pop r28
78 0052 0895 ret
79 /* epilogue end (size=2) */
80 /* function read_display size 42 (39) */
81 .LFE4:
83 .section .progmem.data,"a",@progbits
86 __c.0:
87 0000 4469 7370 .string "Display"
87 6C61 7900
90 __c.1:
91 0008 0D0A 5469 .string "\r\nTimeout!"
91 6D65 6F75
91 7421 00
92 .text
93 .global display_data
95 display_data:
96 .LFB5:
97 .LM17:
98 /* prologue: frame size=10 */
99 0054 0F93 push r16
100 0056 1F93 push r17
101 0058 CF93 push r28
102 005a DF93 push r29
103 005c CDB7 in r28,__SP_L__
104 005e DEB7 in r29,__SP_H__
105 0060 2A97 sbiw r28,10
106 0062 0FB6 in __tmp_reg__,__SREG__
107 0064 F894 cli
108 0066 DEBF out __SP_H__,r29
109 0068 0FBE out __SREG__,__tmp_reg__
110 006a CDBF out __SP_L__,r28
111 /* prologue end (size=12) */
112 .LM18:
113 006c 0E94 0000 call lcd_cls
114 .LM19:
115 0070 60E0 ldi r22,lo8(0)
116 0072 80E0 ldi r24,lo8(__c.0)
117 0074 90E0 ldi r25,hi8(__c.0)
118 0076 0E94 0000 call lcd_printp
119 .L28:
120 .LM20:
121 007a 0091 0000 lds r16,key
122 007e 0023 tst r16
123 0080 E1F7 brne .L28
124 .LM21:
125 0082 802F mov r24,r16
126 0084 0E94 0000 call read_display
127 0088 8130 cpi r24,lo8(1)
128 008a 69F4 brne .L15
129 .LM22:
130 008c 602F mov r22,r16
131 008e 80E0 ldi r24,lo8(__c.1)
132 0090 90E0 ldi r25,hi8(__c.1)
133 0092 0E94 0000 call lcd_printp
134 .LM23:
135 0096 88EC ldi r24,lo8(-56)
136 0098 8093 0000 sts timer,r24
137 .L16:
138 .LM24:
139 009c 8091 0000 lds r24,timer
140 00a0 8823 tst r24
141 00a2 E1F7 brne .L16
142 .LM25:
143 00a4 2CC0 rjmp .L10
144 .L15:
145 .LM26:
146 00a6 1091 0000 lds r17,r_buffer+1
147 .LM27:
148 00aa 1983 std Y+1,r17
149 .LM28:
150 00ac 0A83 std Y+2,r16
151 .LM29:
152 00ae 202F mov r18,r16
153 00b0 AE01 movw r20,r28
154 00b2 4F5F subi r20,lo8(-(1))
155 00b4 5F4F sbci r21,hi8(-(1))
156 00b6 602F mov r22,r16
157 00b8 8AE0 ldi r24,lo8(10)
158 00ba 0E94 0000 call lcd_print_at
159 .LM30:
160 00be 1F5F subi r17,lo8(-(1))
161 00c0 202F mov r18,r16
162 00c2 40E0 ldi r20,lo8(p_buffer)
163 00c4 50E0 ldi r21,hi8(p_buffer)
164 00c6 612F mov r22,r17
165 00c8 802F mov r24,r16
166 00ca 0E94 0000 call lcd_print_at
167 .LM31:
168 00ce 8AE0 ldi r24,lo8(10)
169 00d0 8093 0000 sts timer,r24
170 .L20:
171 .LM32:
172 00d4 8091 0000 lds r24,timer
173 00d8 8823 tst r24
174 00da E1F7 brne .L20
175 .LM33:
176 00dc 8091 0000 lds r24,key
177 00e0 8130 cpi r24,lo8(1)
178 00e2 11F4 brne .L23
179 .LM34:
180 00e4 0E94 0000 call read_display
181 .L23:
182 .LM35:
183 00e8 8091 0000 lds r24,key
184 00ec 8230 cpi r24,lo8(2)
185 00ee 11F4 brne .L11
186 .LM36:
187 00f0 0E94 0000 call read_display
188 .L11:
189 .LM37:
190 00f4 8091 0000 lds r24,key
191 00f8 8430 cpi r24,lo8(4)
192 00fa 09F0 breq .+2
193 00fc BECF rjmp .L28
194 .L10:
195 /* epilogue: frame size=10 */
196 00fe 2A96 adiw r28,10
197 0100 0FB6 in __tmp_reg__,__SREG__
198 0102 F894 cli
199 0104 DEBF out __SP_H__,r29
200 0106 0FBE out __SREG__,__tmp_reg__
201 0108 CDBF out __SP_L__,r28
202 010a DF91 pop r29
203 010c CF91 pop r28
204 010e 1F91 pop r17
205 0110 0F91 pop r16
206 0112 0895 ret
207 /* epilogue end (size=11) */
208 /* function display_data size 96 (73) */
209 .LFE5:
211 .comm r_buffer,128,1
212 .comm p_buffer,128,1
213 .comm display_buffer,1024,1
214 .comm display_buffer_pointer,2,1
215 .comm display_buffer_counter,1,1
216 .comm display_page_counter,1,1
217 .comm display_mode,1,1
218 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 display.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:20 .text:00000000 read_display
*COM*:00000080 p_buffer
*COM*:00000080 r_buffer
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:86 .progmem.data:00000000 __c.0
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:90 .progmem.data:00000008 __c.1
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc8Aaaaa.s:95 .text:00000054 display_data
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
base64_send
get_message
lcd_cls
lcd_printp
key
timer
lcd_print_at
/Transportables_Koptertool/trunk/font8x6.h
0,0 → 1,9
 
#ifndef font8x6_h
#define font8x6_h
 
#include <avr/pgmspace.h>
 
extern prog_uint8_t f8x6[256][6];
 
#endif
/Transportables_Koptertool/trunk/lcd.c
0,0 → 1,557
 
#define F_CPU 7372800UL
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
 
#include "font8x6.h"
#include "main.h"
#include "lcd.h"
 
#define DISP_W 128
#define DISP_H 64
// #define LCD_ORIENTATION 0 // 0 MJ Tasten unten / 4 Original Tasten oben
 
 
uint8_t lcd_xpos;
uint8_t lcd_ypos;
//volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann
//volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte
//volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page
//volatile uint8_t display_page_counter; // aktuelle Page-Nummer
//volatile uint8_t display_mode; // Modus für State-Machine
 
 
void send_byte (uint8_t data)
{
clr_cs();
SPDR = data;
while(!(SPSR & (1<<SPIF)));
SPSR = SPSR;
set_cs();
}
 
void cls (void)
{
uint16_t i,j;
for (i=0;i<1024;i++)
display_buffer[i] = 0x00;
for (i=0;i<8;i++)
{
clr_A0();
send_byte(0xB0+i); //1011xxxx
send_byte(0x10); //00010000
// send_byte(0x04); //00000100 gedreht plus 4 Byte
// send_byte(0x00); //00000000
send_byte(LCD_ORIENTATION); //00000000
 
set_A0();
for (j=0;j<128;j++)
send_byte(0x00);
}
lcd_xpos = 0;
lcd_ypos = 0;
}
 
void lcd_cls (void)
{
cls();
}
 
void wait_1ms(void)
{
_delay_ms (1.0);
}
 
void wait_ms (uint16_t time)
{
uint16_t i;
for (i=0; i<time; i++)
wait_1ms();
}
 
void lcd_init (void)
{
lcd_xpos = 0;
lcd_ypos = 0;
 
DDRB = 0xFF;
SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1);
set_cs();
clr_reset();
wait_ms(10);
set_reset();
clr_cs();
clr_A0();
send_byte(0x40);
 
if (LCD_ORIENTATION == 0)
{
send_byte(0xA1); // A1 normal A0 reverse(original)
send_byte(0xC0); // C0 normal C8 reverse(original)
}
else
{
send_byte(0xA0); // A1 normal A0 reverse(original)
send_byte(0xC8); // C0 normal C8 reverse(original)
}
send_byte(0xA6);
send_byte(0xA2);
send_byte(0x2F);
send_byte(0xF8);
send_byte(0x00);
send_byte(0x27);
send_byte(0x81);
send_byte(0x16);
send_byte(0xAC);
send_byte(0x00);
send_byte(0xAF);
cls();
 
}
 
void set_adress (uint16_t adress, uint8_t data)
{
uint8_t page;
uint8_t column;
page = adress >> 7;
clr_A0();
send_byte(0xB0 + page);
// column = (adress & 0x7F) + 4; Wenn gedreht
// column = (adress & 0x7F);
column = (adress & 0x7F) + LCD_ORIENTATION;
 
send_byte(0x10 + (column >> 4));
send_byte(column & 0x0F);
set_A0();
send_byte(data);
}
 
void scroll (void)
{
uint16_t adress;
for (adress=0;adress<896;adress++)
{
display_buffer[adress] = display_buffer[adress+128];
set_adress(adress,display_buffer[adress]);
}
for (adress=896;adress<1024;adress++)
{
display_buffer[adress] = 0;
set_adress(adress,0);
}
}
 
//
// x,y = character-Pos. !
//
// mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode)
{
uint8_t ch;
uint8_t i;
uint16_t adress;
 
switch(c)
{
case 'ä':
c = 0x84;
break;
case 'ö':
c = 0x94;
break;
case 'ü':
c = 0x81;
break;
case 'Ä':
c = 0x8E;
break;
case 'Ö':
c = 0x99;
break;
case 'Ü':
c = 0x9A;
break;
case 'ß':
c = 0xE1;
break;
}
adress = y*128 + x*6;
adress &= 0x3FF;
for (i=0;i<6;i++)
{
ch = pgm_read_byte (&f8x6[0][0] + i + c * 6);
switch (mode)
{
case 0:
display_buffer[adress+i] = ch;
break;
case 1:
display_buffer[adress+i] |= ch;
break;
case 2:
display_buffer[adress+i] ^= ch;
break;
case 3:
display_buffer[adress+i] &= ch;
break;
case 4:
display_buffer[adress+i] &= ~ch;
break;
}
set_adress(adress+i,display_buffer[adress+i]);
}
}
 
void new_line (void)
{
lcd_ypos++;
if (lcd_ypos > 7)
{
scroll();
lcd_ypos = 7;
}
}
 
 
void lcd_printp (const char *text, uint8_t mode)
{
while (pgm_read_byte(text))
{
if (pgm_read_byte(text) > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (pgm_read_byte(text))
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
}
}
}
 
void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode)
{
lcd_xpos = x;
lcd_ypos = y;
lcd_printp (text, mode);
}
 
 
void lcd_print (uint8_t *text, uint8_t mode)
{
while (*text)
{
if (*text > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,*text++,mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (*text)
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
}
}
}
 
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode)
{
lcd_xpos = x;
lcd_ypos = y;
lcd_print(text, mode);
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Plot (set one Pixel)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// mode:
// 0=Clear, 1=Set, 2=XOR
void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode)
{
uint16_t adress;
uint8_t mask;
if ((xpos < 128) && (ypos < 64))
{
adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0
mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1
adress &= 0x3FF;
switch (mode)
{
case 0:
display_buffer[adress] &=~mask;
break;
case 1:
display_buffer[adress] |= mask;
break;
case 2:
display_buffer[adress] ^= mask;
break;
}
set_adress(adress,display_buffer[adress]);
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Line (draws a line from x1,y1 to x2,y2
// + Based on Bresenham line-Algorithm
// + found in the internet, modified by thkais 2007
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode)
 
{
int x,y,count,xs,ys,xm,ym;
 
x=(int)x1;
y=(int)y1;
xs=(int)x2 - (int)x1;
ys=(int)y2 - (int)y1;
if(xs < 0)
xm= -1;
else
if(xs > 0)
xm= 1;
else
xm= 0;
if(ys < 0)
ym= -1;
else
if(ys > 0)
ym= 1;
else
ym= 0;
if(xs < 0)
xs= -xs;
if(ys < 0)
ys= -ys;
 
lcd_plot((unsigned char)x, (unsigned char)y, mode);
 
if(xs > ys) // Flat Line <45 degrees
{
count= -(xs / 2);
while(x != x2)
{
count= count + ys;
x= x + xm;
if(count > 0)
{
y= y + ym;
count= count - xs;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
}
}
else // Line >=45 degrees
{
count=- (ys / 2);
while(y != y2)
{
count= count + xs;
y= y + ym;
if(count > 0)
{
x= x + xm;
count= count - ys;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
}
}
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Filled rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
uint16_t x2, y2;
uint16_t i;
 
if (x1 >= DISP_W)
x1 = DISP_W - 1;
if (y1 >= DISP_H)
y1 = DISP_H - 1;
x2 = x1 + widthx;
y2 = y1 + widthy;
if (x2 > DISP_W)
x2 = DISP_W;
if (y2 > DISP_H)
y2 = DISP_H;
for (i=y1;i<=y2;i++)
{
lcd_line(x1,i,x2,i,mode);
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
uint16_t x2, y2;
 
if (x1 >= DISP_W)
x1 = DISP_W - 1;
if (y1 >= DISP_H)
y1 = DISP_H - 1;
x2 = x1 + widthx;
y2 = y1 + widthy;
if (x2 > DISP_W)
x2 = DISP_W;
if (y2 > DISP_H)
y2 = DISP_H;
 
lcd_line (x1, y1, x2, y1, mode);
lcd_line (x2, y1, x2, y2, mode);
lcd_line (x2, y2, x1, y2, mode);
lcd_line (x1, y2, x1, y1, mode);
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of a circle
// + Based on Bresenham-algorithm found in wikipedia
// + modified by thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode)
{
int16_t f = 1 - radius;
int16_t ddF_x = 0;
int16_t ddF_y = -2 * radius;
int16_t x = 0;
int16_t y = radius;
 
lcd_plot(x0, y0 + radius, mode);
lcd_plot(x0, y0 - radius, mode);
lcd_plot(x0 + radius, y0, mode);
lcd_plot(x0 - radius, y0, mode);
 
while(x < y)
{
if(f >= 0)
{
y --;
ddF_y += 2;
f += ddF_y;
}
x ++;
ddF_x += 2;
f += ddF_x + 1;
 
lcd_plot(x0 + x, y0 + y, mode);
lcd_plot(x0 - x, y0 + y, mode);
lcd_plot(x0 + x, y0 - y, mode);
lcd_plot(x0 - x, y0 - y, mode);
lcd_plot(x0 + y, y0 + x, mode);
lcd_plot(x0 - y, y0 + x, mode);
lcd_plot(x0 + y, y0 - x, mode);
lcd_plot(x0 - y, y0 - x, mode);
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + filled Circle
// + modified circle-algorithm thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void draw_fcircle(int16_t x0, int16_t y0, int16_t radius)
{
int16_t f = 1 - radius;
int16_t ddF_x = 0;
int16_t ddF_y = -2 * radius;
int16_t x = 0;
int16_t y = radius;
lcd_line(x0, y0 + radius,x0, y0 - radius,1);
lcd_line(x0 + radius, y0,x0 - radius, y0,1);
while(x < y)
{
if(f >= 0)
{
y--;
ddF_y += 2;
f += ddF_y;
}
x++;
ddF_x += 2;
f += ddF_x + 1;
lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1);
lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1);
lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1);
lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1);
}
}
/Transportables_Koptertool/trunk/lcd.d
0,0 → 1,0
lcd.o lcd.d : lcd.c font8x6.h main.h lcd.h
/Transportables_Koptertool/trunk/lcd.h
0,0 → 1,27
 
#ifndef graphics_h
#define graphics_h
 
void lcd_init (void);
void lcd_plot (uint8_t x, uint8_t y, uint8_t mode);
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy,uint8_t mode);
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t mode);
void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode);
void draw_fcircle(int16_t x0, int16_t y0, int16_t radius);
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode);
void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode);
void send_byte (uint8_t data);
void lcd_print(uint8_t *text, uint8_t mode);
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode);
void lcd_printp (const char *text, uint8_t mode);
void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode);
void lcd_cls (void);
 
volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann
volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte
volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page
volatile uint8_t display_page_counter; // aktuelle Page-Nummer
volatile uint8_t display_mode; // Modus für State-Machine
volatile uint8_t LCD_ORIENTATION;
 
#endif
/Transportables_Koptertool/trunk/lcd.lst
0,0 → 1,1805
1 .file "lcd.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global send_byte
20 send_byte:
21 .LFB8:
22 .LM1:
23 /* prologue: frame size=0 */
24 /* prologue end (size=0) */
25 .LM2:
26 0000 C498 cbi 56-0x20,4
27 .LM3:
28 0002 8FB9 out 47-0x20,r24
29 .L2:
30 .LM4:
31 0004 779B sbis 46-0x20,7
32 0006 FECF rjmp .L2
33 .LM5:
34 0008 8EB1 in r24,46-0x20
35 000a 8EB9 out 46-0x20,r24
36 .LM6:
37 000c C49A sbi 56-0x20,4
38 /* epilogue: frame size=0 */
39 000e 0895 ret
40 /* epilogue end (size=1) */
41 /* function send_byte size 8 (7) */
42 .LFE8:
44 .global cls
46 cls:
47 .LFB9:
48 .LM7:
49 /* prologue: frame size=0 */
50 0010 0F93 push r16
51 0012 1F93 push r17
52 0014 CF93 push r28
53 0016 DF93 push r29
54 /* prologue end (size=4) */
55 0018 80E0 ldi r24,lo8(display_buffer)
56 001a 90E0 ldi r25,hi8(display_buffer)
57 001c FC01 movw r30,r24
58 .L9:
59 .LM8:
60 001e 1192 st Z+,__zero_reg__
61 0020 0196 adiw r24,1
62 .LM9:
63 0022 20E0 ldi r18,hi8(display_buffer+1023)
64 0024 8030 cpi r24,lo8(display_buffer+1023)
65 0026 9207 cpc r25,r18
66 0028 D1F3 breq .L9
67 002a C8F3 brlo .L9
68 .LM10:
69 002c 00E0 ldi r16,lo8(0)
70 002e 10E0 ldi r17,hi8(0)
71 .L17:
72 .LM11:
73 0030 C398 cbi 56-0x20,3
74 .LM12:
75 0032 802F mov r24,r16
76 0034 8055 subi r24,lo8(-(-80))
77 0036 0E94 0000 call send_byte
78 .LM13:
79 003a 80E1 ldi r24,lo8(16)
80 003c 0E94 0000 call send_byte
81 .LM14:
82 0040 84E0 ldi r24,lo8(4)
83 0042 0E94 0000 call send_byte
84 .LM15:
85 0046 C39A sbi 56-0x20,3
86 0048 CFE7 ldi r28,lo8(127)
87 004a D0E0 ldi r29,hi8(127)
88 .L16:
89 .LM16:
90 004c 80E0 ldi r24,lo8(0)
91 004e 0E94 0000 call send_byte
92 .LM17:
93 0052 2197 sbiw r28,1
94 0054 D7FF sbrs r29,7
95 0056 FACF rjmp .L16
96 .LM18:
97 0058 0F5F subi r16,lo8(-(1))
98 005a 1F4F sbci r17,hi8(-(1))
99 005c 0830 cpi r16,8
100 005e 1105 cpc r17,__zero_reg__
101 0060 38F3 brlo .L17
102 .LM19:
103 0062 1092 0000 sts lcd_xpos,__zero_reg__
104 .LM20:
105 0066 1092 0000 sts lcd_ypos,__zero_reg__
106 /* epilogue: frame size=0 */
107 006a DF91 pop r29
108 006c CF91 pop r28
109 006e 1F91 pop r17
110 0070 0F91 pop r16
111 0072 0895 ret
112 /* epilogue end (size=5) */
113 /* function cls size 50 (41) */
114 .LFE9:
116 .global lcd_cls
118 lcd_cls:
119 .LFB10:
120 .LM21:
121 /* prologue: frame size=0 */
122 /* prologue end (size=0) */
123 .LM22:
124 0074 0E94 0000 call cls
125 /* epilogue: frame size=0 */
126 0078 0895 ret
127 /* epilogue end (size=1) */
128 /* function lcd_cls size 3 (2) */
129 .LFE10:
131 .global wait_1ms
133 wait_1ms:
134 .LFB11:
135 .LM23:
136 /* prologue: frame size=0 */
137 /* prologue end (size=0) */
138 .LBB2:
139 .LBB3:
140 .LM24:
141 007a 83E3 ldi r24,lo8(1843)
142 007c 97E0 ldi r25,hi8(1843)
143 .LBB4:
144 .LBB5:
145 .LM25:
146 /* #APP */
147 007e 0197 1: sbiw r24,1
148 0080 F1F7 brne 1b
149 /* #NOAPP */
150 .LBE5:
151 .LBE4:
152 .LBE3:
153 .LBE2:
154 /* epilogue: frame size=0 */
155 0082 0895 ret
156 /* epilogue end (size=1) */
157 /* function wait_1ms size 7 (6) */
158 .LFE11:
160 .global wait_ms
162 wait_ms:
163 .LFB12:
164 .LM26:
165 /* prologue: frame size=0 */
166 0084 0F93 push r16
167 0086 1F93 push r17
168 0088 CF93 push r28
169 008a DF93 push r29
170 /* prologue end (size=4) */
171 008c 8C01 movw r16,r24
172 .LM27:
173 008e C0E0 ldi r28,lo8(0)
174 0090 D0E0 ldi r29,hi8(0)
175 0092 C817 cp r28,r24
176 0094 D907 cpc r29,r25
177 0096 30F4 brsh .L40
178 .L38:
179 .LM28:
180 0098 0E94 0000 call wait_1ms
181 .LM29:
182 009c 2196 adiw r28,1
183 009e C017 cp r28,r16
184 00a0 D107 cpc r29,r17
185 00a2 D0F3 brlo .L38
186 .L40:
187 /* epilogue: frame size=0 */
188 00a4 DF91 pop r29
189 00a6 CF91 pop r28
190 00a8 1F91 pop r17
191 00aa 0F91 pop r16
192 00ac 0895 ret
193 /* epilogue end (size=5) */
194 /* function wait_ms size 21 (12) */
195 .LFE12:
197 .global lcd_init
199 lcd_init:
200 .LFB13:
201 .LM30:
202 /* prologue: frame size=0 */
203 /* prologue end (size=0) */
204 .LM31:
205 00ae 1092 0000 sts lcd_xpos,__zero_reg__
206 .LM32:
207 00b2 1092 0000 sts lcd_ypos,__zero_reg__
208 .LM33:
209 00b6 8FEF ldi r24,lo8(-1)
210 00b8 87BB out 55-0x20,r24
211 .LM34:
212 00ba 8EE5 ldi r24,lo8(94)
213 00bc 8DB9 out 45-0x20,r24
214 .LM35:
215 00be C49A sbi 56-0x20,4
216 .LM36:
217 00c0 C298 cbi 56-0x20,2
218 .LM37:
219 00c2 8AE0 ldi r24,lo8(10)
220 00c4 90E0 ldi r25,hi8(10)
221 00c6 0E94 0000 call wait_ms
222 .LM38:
223 00ca C29A sbi 56-0x20,2
224 .LM39:
225 00cc C498 cbi 56-0x20,4
226 .LM40:
227 00ce C398 cbi 56-0x20,3
228 .LM41:
229 00d0 80E4 ldi r24,lo8(64)
230 00d2 0E94 0000 call send_byte
231 .LM42:
232 00d6 80EA ldi r24,lo8(-96)
233 00d8 0E94 0000 call send_byte
234 .LM43:
235 00dc 88EC ldi r24,lo8(-56)
236 00de 0E94 0000 call send_byte
237 .LM44:
238 00e2 86EA ldi r24,lo8(-90)
239 00e4 0E94 0000 call send_byte
240 .LM45:
241 00e8 82EA ldi r24,lo8(-94)
242 00ea 0E94 0000 call send_byte
243 .LM46:
244 00ee 8FE2 ldi r24,lo8(47)
245 00f0 0E94 0000 call send_byte
246 .LM47:
247 00f4 88EF ldi r24,lo8(-8)
248 00f6 0E94 0000 call send_byte
249 .LM48:
250 00fa 80E0 ldi r24,lo8(0)
251 00fc 0E94 0000 call send_byte
252 .LM49:
253 0100 87E2 ldi r24,lo8(39)
254 0102 0E94 0000 call send_byte
255 .LM50:
256 0106 81E8 ldi r24,lo8(-127)
257 0108 0E94 0000 call send_byte
258 .LM51:
259 010c 86E1 ldi r24,lo8(22)
260 010e 0E94 0000 call send_byte
261 .LM52:
262 0112 8CEA ldi r24,lo8(-84)
263 0114 0E94 0000 call send_byte
264 .LM53:
265 0118 80E0 ldi r24,lo8(0)
266 011a 0E94 0000 call send_byte
267 .LM54:
268 011e 8FEA ldi r24,lo8(-81)
269 0120 0E94 0000 call send_byte
270 .LM55:
271 0124 0E94 0000 call cls
272 /* epilogue: frame size=0 */
273 0128 0895 ret
274 /* epilogue end (size=1) */
275 /* function lcd_init size 62 (61) */
276 .LFE13:
278 .global set_adress
280 set_adress:
281 .LFB14:
282 .LM56:
283 /* prologue: frame size=0 */
284 012a FF92 push r15
285 012c 0F93 push r16
286 012e 1F93 push r17
287 /* prologue end (size=3) */
288 0130 8C01 movw r16,r24
289 0132 F62E mov r15,r22
290 .LM57:
291 0134 880F lsl r24
292 0136 892F mov r24,r25
293 0138 881F rol r24
294 013a 990B sbc r25,r25
295 013c 9195 neg r25
296 .LM58:
297 013e C398 cbi 56-0x20,3
298 .LM59:
299 0140 8055 subi r24,lo8(-(-80))
300 0142 0E94 0000 call send_byte
301 .LM60:
302 0146 102F mov r17,r16
303 0148 1F77 andi r17,lo8(127)
304 014a 1C5F subi r17,lo8(-(4))
305 .LM61:
306 014c 812F mov r24,r17
307 014e 8295 swap r24
308 0150 8F70 andi r24,0x0f
309 0152 805F subi r24,lo8(-(16))
310 0154 0E94 0000 call send_byte
311 .LM62:
312 0158 812F mov r24,r17
313 015a 8F70 andi r24,lo8(15)
314 015c 0E94 0000 call send_byte
315 .LM63:
316 0160 C39A sbi 56-0x20,3
317 .LM64:
318 0162 8F2D mov r24,r15
319 0164 0E94 0000 call send_byte
320 /* epilogue: frame size=0 */
321 0168 1F91 pop r17
322 016a 0F91 pop r16
323 016c FF90 pop r15
324 016e 0895 ret
325 /* epilogue end (size=4) */
326 /* function set_adress size 35 (28) */
327 .LFE14:
329 .global scroll
331 scroll:
332 .LFB15:
333 .LM65:
334 /* prologue: frame size=0 */
335 0170 EF92 push r14
336 0172 FF92 push r15
337 0174 0F93 push r16
338 0176 1F93 push r17
339 0178 CF93 push r28
340 017a DF93 push r29
341 /* prologue end (size=6) */
342 .LM66:
343 017c C0E0 ldi r28,lo8(0)
344 017e D0E0 ldi r29,hi8(0)
345 0180 30E0 ldi r19,lo8(display_buffer+128)
346 0182 E32E mov r14,r19
347 0184 30E0 ldi r19,hi8(display_buffer+128)
348 0186 F32E mov r15,r19
349 0188 8701 movw r16,r14
350 018a 0058 subi r16,lo8(-(-128))
351 018c 1040 sbci r17,hi8(-(-128))
352 .L47:
353 .LM67:
354 018e F701 movw r30,r14
355 0190 8191 ld r24,Z+
356 0192 7F01 movw r14,r30
357 0194 F801 movw r30,r16
358 0196 8083 st Z,r24
359 .LM68:
360 0198 6191 ld r22,Z+
361 019a 8F01 movw r16,r30
362 019c CE01 movw r24,r28
363 019e 0E94 0000 call set_adress
364 .LM69:
365 01a2 2196 adiw r28,1
366 01a4 F3E0 ldi r31,hi8(896)
367 01a6 C038 cpi r28,lo8(896)
368 01a8 DF07 cpc r29,r31
369 01aa 88F3 brlo .L47
370 01ac C0E8 ldi r28,lo8(896)
371 01ae D3E0 ldi r29,hi8(896)
372 01b0 00E0 ldi r16,lo8(display_buffer+896)
373 01b2 10E0 ldi r17,hi8(display_buffer+896)
374 .L51:
375 .LM70:
376 01b4 F801 movw r30,r16
377 01b6 1192 st Z+,__zero_reg__
378 01b8 8F01 movw r16,r30
379 .LM71:
380 01ba 60E0 ldi r22,lo8(0)
381 01bc CE01 movw r24,r28
382 01be 0E94 0000 call set_adress
383 .LM72:
384 01c2 2196 adiw r28,1
385 01c4 F4E0 ldi r31,hi8(1024)
386 01c6 C030 cpi r28,lo8(1024)
387 01c8 DF07 cpc r29,r31
388 01ca A0F3 brlo .L51
389 /* epilogue: frame size=0 */
390 01cc DF91 pop r29
391 01ce CF91 pop r28
392 01d0 1F91 pop r17
393 01d2 0F91 pop r16
394 01d4 FF90 pop r15
395 01d6 EF90 pop r14
396 01d8 0895 ret
397 /* epilogue end (size=7) */
398 /* function scroll size 53 (40) */
399 .LFE15:
401 .global put_char
403 put_char:
404 .LFB16:
405 .LM73:
406 /* prologue: frame size=0 */
407 01da BF92 push r11
408 01dc CF92 push r12
409 01de DF92 push r13
410 01e0 EF92 push r14
411 01e2 FF92 push r15
412 01e4 0F93 push r16
413 01e6 1F93 push r17
414 01e8 CF93 push r28
415 01ea DF93 push r29
416 /* prologue end (size=9) */
417 01ec 382F mov r19,r24
418 01ee F42E mov r15,r20
419 01f0 B22E mov r11,r18
420 .LM74:
421 01f2 842F mov r24,r20
422 01f4 9927 clr r25
423 01f6 8F3D cpi r24,223
424 01f8 9105 cpc r25,__zero_reg__
425 01fa 89F1 breq .L64
426 .LM75:
427 01fc 803E cpi r24,224
428 01fe 9105 cpc r25,__zero_reg__
429 0200 74F4 brge .L65
430 0202 863D cpi r24,214
431 0204 9105 cpc r25,__zero_reg__
432 0206 29F1 breq .L62
433 0208 873D cpi r24,215
434 020a 9105 cpc r25,__zero_reg__
435 020c 24F4 brge .L66
436 020e 843C cpi r24,196
437 0210 9105 cpc r25,__zero_reg__
438 0212 E1F0 breq .L61
439 0214 26C0 rjmp .L57
440 .L66:
441 0216 8C3D cpi r24,220
442 0218 9105 cpc r25,__zero_reg__
443 021a F1F0 breq .L63
444 021c 22C0 rjmp .L57
445 .L65:
446 021e 863F cpi r24,246
447 0220 9105 cpc r25,__zero_reg__
448 0222 71F0 breq .L59
449 0224 873F cpi r24,247
450 0226 9105 cpc r25,__zero_reg__
451 0228 24F4 brge .L67
452 022a 843E cpi r24,228
453 022c 9105 cpc r25,__zero_reg__
454 022e 29F0 breq .L58
455 0230 18C0 rjmp .L57
456 .L67:
457 0232 8C3F cpi r24,252
458 0234 9105 cpc r25,__zero_reg__
459 0236 39F0 breq .L60
460 0238 14C0 rjmp .L57
461 .L58:
462 .LM76:
463 023a 14E8 ldi r17,lo8(-124)
464 023c F12E mov r15,r17
465 .LM77:
466 023e 11C0 rjmp .L57
467 .L59:
468 .LM78:
469 0240 C4E9 ldi r28,lo8(-108)
470 0242 FC2E mov r15,r28
471 .LM79:
472 0244 0EC0 rjmp .L57
473 .L60:
474 .LM80:
475 0246 B1E8 ldi r27,lo8(-127)
476 0248 FB2E mov r15,r27
477 .LM81:
478 024a 0BC0 rjmp .L57
479 .L61:
480 .LM82:
481 024c AEE8 ldi r26,lo8(-114)
482 024e FA2E mov r15,r26
483 .LM83:
484 0250 08C0 rjmp .L57
485 .L62:
486 .LM84:
487 0252 F9E9 ldi r31,lo8(-103)
488 0254 FF2E mov r15,r31
489 .LM85:
490 0256 05C0 rjmp .L57
491 .L63:
492 .LM86:
493 0258 EAE9 ldi r30,lo8(-102)
494 025a FE2E mov r15,r30
495 .LM87:
496 025c 02C0 rjmp .L57
497 .L64:
498 .LM88:
499 025e 71EE ldi r23,lo8(-31)
500 0260 F72E mov r15,r23
501 .L57:
502 .LM89:
503 0262 C62F mov r28,r22
504 0264 DD27 clr r29
505 0266 D695 lsr r29
506 0268 DC2F mov r29,r28
507 026a CC27 clr r28
508 026c D795 ror r29
509 026e C795 ror r28
510 0270 86E0 ldi r24,lo8(6)
511 0272 389F mul r19,r24
512 0274 C001 movw r24,r0
513 0276 1124 clr r1
514 0278 C80F add r28,r24
515 027a D91F adc r29,r25
516 .LM90:
517 027c D370 andi r29,hi8(1023)
518 027e 6E01 movw r12,r28
519 0280 00E0 ldi r16,lo8(0)
520 0282 10E0 ldi r17,hi8(0)
521 0284 45E0 ldi r20,lo8(5)
522 0286 E42E mov r14,r20
523 .L78:
524 .LBB6:
525 .LM91:
526 0288 86E0 ldi r24,lo8(6)
527 028a F89E mul r15,r24
528 028c F001 movw r30,r0
529 028e 1124 clr r1
530 0290 E00F add r30,r16
531 0292 F11F adc r31,r17
532 0294 E050 subi r30,lo8(-(f8x6))
533 0296 F040 sbci r31,hi8(-(f8x6))
534 /* #APP */
535 0298 2491 lpm r18, Z
536
537 /* #NOAPP */
538 .LBE6:
539 .LM92:
540 029a 8B2D mov r24,r11
541 029c 9927 clr r25
542 029e 8230 cpi r24,2
543 02a0 9105 cpc r25,__zero_reg__
544 02a2 E9F0 breq .L74
545 02a4 8330 cpi r24,3
546 02a6 9105 cpc r25,__zero_reg__
547 02a8 2CF4 brge .L77
548 02aa 0097 sbiw r24,0
549 02ac 49F0 breq .L72
550 02ae 0197 sbiw r24,1
551 02b0 71F0 breq .L73
552 02b2 2CC0 rjmp .L71
553 .L77:
554 02b4 8330 cpi r24,3
555 02b6 9105 cpc r25,__zero_reg__
556 02b8 D1F0 breq .L75
557 02ba 0497 sbiw r24,4
558 02bc F1F0 breq .L76
559 02be 26C0 rjmp .L71
560 .L72:
561 .LM93:
562 02c0 FE01 movw r30,r28
563 02c2 E050 subi r30,lo8(-(display_buffer))
564 02c4 F040 sbci r31,hi8(-(display_buffer))
565 02c6 E00F add r30,r16
566 02c8 F11F adc r31,r17
567 02ca 2083 st Z,r18
568 .LM94:
569 02cc 1FC0 rjmp .L71
570 .L73:
571 .LM95:
572 02ce FE01 movw r30,r28
573 02d0 E050 subi r30,lo8(-(display_buffer))
574 02d2 F040 sbci r31,hi8(-(display_buffer))
575 02d4 E00F add r30,r16
576 02d6 F11F adc r31,r17
577 02d8 8081 ld r24,Z
578 02da 822B or r24,r18
579 02dc 16C0 rjmp .L82
580 .L74:
581 .LM96:
582 02de FE01 movw r30,r28
583 02e0 E050 subi r30,lo8(-(display_buffer))
584 02e2 F040 sbci r31,hi8(-(display_buffer))
585 02e4 E00F add r30,r16
586 02e6 F11F adc r31,r17
587 02e8 8081 ld r24,Z
588 02ea 8227 eor r24,r18
589 02ec 0EC0 rjmp .L82
590 .L75:
591 .LM97:
592 02ee FE01 movw r30,r28
593 02f0 E050 subi r30,lo8(-(display_buffer))
594 02f2 F040 sbci r31,hi8(-(display_buffer))
595 02f4 E00F add r30,r16
596 02f6 F11F adc r31,r17
597 02f8 06C0 rjmp .L81
598 .L76:
599 .LM98:
600 02fa FE01 movw r30,r28
601 02fc E050 subi r30,lo8(-(display_buffer))
602 02fe F040 sbci r31,hi8(-(display_buffer))
603 0300 E00F add r30,r16
604 0302 F11F adc r31,r17
605 0304 2095 com r18
606 .L81:
607 0306 8081 ld r24,Z
608 0308 8223 and r24,r18
609 .L82:
610 030a 8083 st Z,r24
611 .L71:
612 .LM99:
613 030c FE01 movw r30,r28
614 030e E050 subi r30,lo8(-(display_buffer))
615 0310 F040 sbci r31,hi8(-(display_buffer))
616 0312 E00F add r30,r16
617 0314 F11F adc r31,r17
618 0316 6081 ld r22,Z
619 0318 C601 movw r24,r12
620 031a 0E94 0000 call set_adress
621 .LM100:
622 031e EA94 dec r14
623 0320 0F5F subi r16,lo8(-(1))
624 0322 1F4F sbci r17,hi8(-(1))
625 0324 0894 sec
626 0326 C11C adc r12,__zero_reg__
627 0328 D11C adc r13,__zero_reg__
628 032a E7FE sbrs r14,7
629 032c ADCF rjmp .L78
630 /* epilogue: frame size=0 */
631 032e DF91 pop r29
632 0330 CF91 pop r28
633 0332 1F91 pop r17
634 0334 0F91 pop r16
635 0336 FF90 pop r15
636 0338 EF90 pop r14
637 033a DF90 pop r13
638 033c CF90 pop r12
639 033e BF90 pop r11
640 0340 0895 ret
641 /* epilogue end (size=10) */
642 /* function put_char size 186 (167) */
643 .LFE16:
645 .global new_line
647 new_line:
648 .LFB17:
649 .LM101:
650 /* prologue: frame size=0 */
651 /* prologue end (size=0) */
652 .LM102:
653 0342 8091 0000 lds r24,lcd_ypos
654 0346 8F5F subi r24,lo8(-(1))
655 0348 8093 0000 sts lcd_ypos,r24
656 .LM103:
657 034c 8830 cpi r24,lo8(8)
658 034e 28F0 brlo .L83
659 .LM104:
660 0350 0E94 0000 call scroll
661 .LM105:
662 0354 87E0 ldi r24,lo8(7)
663 0356 8093 0000 sts lcd_ypos,r24
664 .L83:
665 035a 0895 ret
666 /* epilogue: frame size=0 */
667 /* epilogue: noreturn */
668 /* epilogue end (size=0) */
669 /* function new_line size 13 (13) */
670 .LFE17:
672 .global lcd_printp
674 lcd_printp:
675 .LFB18:
676 .LM106:
677 /* prologue: frame size=0 */
678 035c 1F93 push r17
679 035e CF93 push r28
680 0360 DF93 push r29
681 /* prologue end (size=3) */
682 0362 EC01 movw r28,r24
683 0364 162F mov r17,r22
684 .LBB7:
685 .LM107:
686 0366 FC01 movw r30,r24
687 /* #APP */
688 0368 8491 lpm r24, Z
689
690 /* #NOAPP */
691 .LBE7:
692 036a 8823 tst r24
693 036c 51F1 breq .L96
694 .L94:
695 .LBB8:
696 .LM108:
697 036e FE01 movw r30,r28
698 /* #APP */
699 0370 8491 lpm r24, Z
700
701 /* #NOAPP */
702 .LBE8:
703 0372 8032 cpi r24,lo8(32)
704 0374 B0F0 brlo .L88
705 .LBB9:
706 .LM109:
707 0376 2196 adiw r28,1
708 /* #APP */
709 0378 8491 lpm r24, Z
710
711 /* #NOAPP */
712 .LBE9:
713 037a 212F mov r18,r17
714 037c 482F mov r20,r24
715 037e 6091 0000 lds r22,lcd_ypos
716 0382 8091 0000 lds r24,lcd_xpos
717 0386 0E94 0000 call put_char
718 .LM110:
719 038a 8091 0000 lds r24,lcd_xpos
720 038e 8F5F subi r24,lo8(-(1))
721 0390 8093 0000 sts lcd_xpos,r24
722 .LM111:
723 0394 8531 cpi r24,lo8(21)
724 0396 88F0 brlo .L86
725 .LM112:
726 0398 1092 0000 sts lcd_xpos,__zero_reg__
727 .LM113:
728 039c 0E94 0000 call new_line
729 03a0 0CC0 rjmp .L86
730 .L88:
731 .LM114:
732 03a2 9927 clr r25
733 03a4 8A30 cpi r24,10
734 03a6 9105 cpc r25,__zero_reg__
735 03a8 29F0 breq .L93
736 03aa 0D97 sbiw r24,13
737 03ac 29F4 brne .L91
738 .LM115:
739 03ae 1092 0000 sts lcd_xpos,__zero_reg__
740 .LM116:
741 03b2 02C0 rjmp .L91
742 .L93:
743 .LM117:
744 03b4 0E94 0000 call new_line
745 .L91:
746 .LM118:
747 03b8 2196 adiw r28,1
748 .L86:
749 .LBB10:
750 03ba FE01 movw r30,r28
751 /* #APP */
752 03bc 8491 lpm r24, Z
753
754 /* #NOAPP */
755 .LBE10:
756 03be 8823 tst r24
757 03c0 B1F6 brne .L94
758 .L96:
759 /* epilogue: frame size=0 */
760 03c2 DF91 pop r29
761 03c4 CF91 pop r28
762 03c6 1F91 pop r17
763 03c8 0895 ret
764 /* epilogue end (size=4) */
765 /* function lcd_printp size 68 (61) */
766 .LFE18:
768 .global lcd_print_atp
770 lcd_print_atp:
771 .LFB19:
772 .LM119:
773 /* prologue: frame size=0 */
774 /* prologue end (size=0) */
775 .LM120:
776 03ca 8093 0000 sts lcd_xpos,r24
777 .LM121:
778 03ce 6093 0000 sts lcd_ypos,r22
779 .LM122:
780 03d2 622F mov r22,r18
781 03d4 CA01 movw r24,r20
782 03d6 0E94 0000 call lcd_printp
783 /* epilogue: frame size=0 */
784 03da 0895 ret
785 /* epilogue end (size=1) */
786 /* function lcd_print_atp size 9 (8) */
787 .LFE19:
789 .global lcd_print
791 lcd_print:
792 .LFB20:
793 .LM123:
794 /* prologue: frame size=0 */
795 03dc 1F93 push r17
796 03de CF93 push r28
797 03e0 DF93 push r29
798 /* prologue end (size=3) */
799 03e2 EC01 movw r28,r24
800 03e4 162F mov r17,r22
801 .LM124:
802 03e6 8881 ld r24,Y
803 03e8 8823 tst r24
804 03ea 39F1 breq .L109
805 .L107:
806 .LM125:
807 03ec 4881 ld r20,Y
808 03ee 4032 cpi r20,lo8(32)
809 03f0 A0F0 brlo .L101
810 .LM126:
811 03f2 2196 adiw r28,1
812 03f4 212F mov r18,r17
813 03f6 6091 0000 lds r22,lcd_ypos
814 03fa 8091 0000 lds r24,lcd_xpos
815 03fe 0E94 0000 call put_char
816 .LM127:
817 0402 8091 0000 lds r24,lcd_xpos
818 0406 8F5F subi r24,lo8(-(1))
819 0408 8093 0000 sts lcd_xpos,r24
820 .LM128:
821 040c 8531 cpi r24,lo8(21)
822 040e 90F0 brlo .L99
823 .LM129:
824 0410 1092 0000 sts lcd_xpos,__zero_reg__
825 .LM130:
826 0414 0E94 0000 call new_line
827 0418 0DC0 rjmp .L99
828 .L101:
829 .LM131:
830 041a 5527 clr r21
831 041c 4A30 cpi r20,10
832 041e 5105 cpc r21,__zero_reg__
833 0420 31F0 breq .L106
834 0422 4D30 cpi r20,13
835 0424 5105 cpc r21,__zero_reg__
836 0426 29F4 brne .L104
837 .LM132:
838 0428 1092 0000 sts lcd_xpos,__zero_reg__
839 .LM133:
840 042c 02C0 rjmp .L104
841 .L106:
842 .LM134:
843 042e 0E94 0000 call new_line
844 .L104:
845 .LM135:
846 0432 2196 adiw r28,1
847 .L99:
848 0434 8881 ld r24,Y
849 0436 8823 tst r24
850 0438 C9F6 brne .L107
851 .L109:
852 /* epilogue: frame size=0 */
853 043a DF91 pop r29
854 043c CF91 pop r28
855 043e 1F91 pop r17
856 0440 0895 ret
857 /* epilogue end (size=4) */
858 /* function lcd_print size 51 (44) */
859 .LFE20:
861 .global lcd_print_at
863 lcd_print_at:
864 .LFB21:
865 .LM136:
866 /* prologue: frame size=0 */
867 /* prologue end (size=0) */
868 .LM137:
869 0442 8093 0000 sts lcd_xpos,r24
870 .LM138:
871 0446 6093 0000 sts lcd_ypos,r22
872 .LM139:
873 044a 622F mov r22,r18
874 044c CA01 movw r24,r20
875 044e 0E94 0000 call lcd_print
876 /* epilogue: frame size=0 */
877 0452 0895 ret
878 /* epilogue end (size=1) */
879 /* function lcd_print_at size 9 (8) */
880 .LFE21:
882 .global lcd_plot
884 lcd_plot:
885 .LFB22:
886 .LM140:
887 /* prologue: frame size=0 */
888 /* prologue end (size=0) */
889 0454 982F mov r25,r24
890 .LM141:
891 0456 87FD sbrc r24,7
892 0458 45C0 rjmp .L111
893 .LM142:
894 045a 6034 cpi r22,lo8(64)
895 045c 08F0 brlo .+2
896 045e 42C0 rjmp .L111
897 .LM143:
898 0460 862F mov r24,r22
899 0462 8695 lsr r24
900 0464 8695 lsr r24
901 0466 8695 lsr r24
902 0468 A82F mov r26,r24
903 046a BB27 clr r27
904 046c B695 lsr r27
905 046e BA2F mov r27,r26
906 0470 AA27 clr r26
907 0472 B795 ror r27
908 0474 A795 ror r26
909 0476 A90F add r26,r25
910 0478 B11D adc r27,__zero_reg__
911 .LM144:
912 047a 262F mov r18,r22
913 047c 3327 clr r19
914 047e 2770 andi r18,lo8(7)
915 0480 3070 andi r19,hi8(7)
916 0482 81E0 ldi r24,lo8(1)
917 0484 90E0 ldi r25,hi8(1)
918 0486 02C0 rjmp 2f
919 0488 880F 1: lsl r24
920 048a 991F rol r25
921 048c 2A95 2: dec r18
922 048e E2F7 brpl 1b
923 0490 982F mov r25,r24
924 .LM145:
925 0492 B370 andi r27,hi8(1023)
926 .LM146:
927 0494 5527 clr r21
928 0496 4130 cpi r20,1
929 0498 5105 cpc r21,__zero_reg__
930 049a 89F0 breq .L115
931 049c 4230 cpi r20,2
932 049e 5105 cpc r21,__zero_reg__
933 04a0 1CF4 brge .L117
934 04a2 452B or r20,r21
935 04a4 29F0 breq .L114
936 04a6 17C0 rjmp .L113
937 .L117:
938 04a8 4230 cpi r20,2
939 04aa 5105 cpc r21,__zero_reg__
940 04ac 71F0 breq .L116
941 04ae 13C0 rjmp .L113
942 .L114:
943 .LM147:
944 04b0 FD01 movw r30,r26
945 04b2 E050 subi r30,lo8(-(display_buffer))
946 04b4 F040 sbci r31,hi8(-(display_buffer))
947 04b6 9095 com r25
948 04b8 8081 ld r24,Z
949 04ba 8923 and r24,r25
950 04bc 0BC0 rjmp .L118
951 .L115:
952 .LM148:
953 04be FD01 movw r30,r26
954 04c0 E050 subi r30,lo8(-(display_buffer))
955 04c2 F040 sbci r31,hi8(-(display_buffer))
956 04c4 8081 ld r24,Z
957 04c6 892B or r24,r25
958 04c8 05C0 rjmp .L118
959 .L116:
960 .LM149:
961 04ca FD01 movw r30,r26
962 04cc E050 subi r30,lo8(-(display_buffer))
963 04ce F040 sbci r31,hi8(-(display_buffer))
964 04d0 8081 ld r24,Z
965 04d2 8927 eor r24,r25
966 .L118:
967 04d4 8083 st Z,r24
968 .L113:
969 .LM150:
970 04d6 FD01 movw r30,r26
971 04d8 E050 subi r30,lo8(-(display_buffer))
972 04da F040 sbci r31,hi8(-(display_buffer))
973 04dc 6081 ld r22,Z
974 04de CD01 movw r24,r26
975 04e0 0E94 0000 call set_adress
976 .L111:
977 04e4 0895 ret
978 /* epilogue: frame size=0 */
979 /* epilogue: noreturn */
980 /* epilogue end (size=0) */
981 /* function lcd_plot size 75 (75) */
982 .LFE22:
984 .global lcd_line
986 lcd_line:
987 .LFB23:
988 .LM151:
989 /* prologue: frame size=3 */
990 04e6 2F92 push r2
991 04e8 3F92 push r3
992 04ea 4F92 push r4
993 04ec 5F92 push r5
994 04ee 6F92 push r6
995 04f0 7F92 push r7
996 04f2 8F92 push r8
997 04f4 9F92 push r9
998 04f6 AF92 push r10
999 04f8 BF92 push r11
1000 04fa CF92 push r12
1001 04fc DF92 push r13
1002 04fe EF92 push r14
1003 0500 FF92 push r15
1004 0502 0F93 push r16
1005 0504 1F93 push r17
1006 0506 CF93 push r28
1007 0508 DF93 push r29
1008 050a CDB7 in r28,__SP_L__
1009 050c DEB7 in r29,__SP_H__
1010 050e 2397 sbiw r28,3
1011 0510 0FB6 in __tmp_reg__,__SREG__
1012 0512 F894 cli
1013 0514 DEBF out __SP_H__,r29
1014 0516 0FBE out __SREG__,__tmp_reg__
1015 0518 CDBF out __SP_L__,r28
1016 /* prologue end (size=26) */
1017 051a 0983 std Y+1,r16
1018 .LM152:
1019 051c A82E mov r10,r24
1020 051e BB24 clr r11
1021 .LM153:
1022 0520 C62E mov r12,r22
1023 0522 DD24 clr r13
1024 .LM154:
1025 0524 642E mov r6,r20
1026 0526 7724 clr r7
1027 0528 7301 movw r14,r6
1028 052a EA18 sub r14,r10
1029 052c FB08 sbc r15,r11
1030 .LM155:
1031 052e 822E mov r8,r18
1032 0530 9924 clr r9
1033 0532 8401 movw r16,r8
1034 0534 0C19 sub r16,r12
1035 0536 1D09 sbc r17,r13
1036 .LM156:
1037 0538 F7FE sbrs r15,7
1038 053a 04C0 rjmp .L120
1039 .LM157:
1040 053c 7FEF ldi r23,lo8(-1)
1041 053e 272E mov r2,r23
1042 0540 372E mov r3,r23
1043 0542 09C0 rjmp .L121
1044 .L120:
1045 .LM158:
1046 0544 1E14 cp __zero_reg__,r14
1047 0546 1F04 cpc __zero_reg__,r15
1048 0548 24F4 brge .L122
1049 .LM159:
1050 054a 61E0 ldi r22,lo8(1)
1051 054c 262E mov r2,r22
1052 054e 312C mov r3,__zero_reg__
1053 0550 02C0 rjmp .L121
1054 .L122:
1055 .LM160:
1056 0552 2224 clr r2
1057 0554 3324 clr r3
1058 .L121:
1059 .LM161:
1060 0556 17FF sbrs r17,7
1061 0558 04C0 rjmp .L124
1062 .LM162:
1063 055a 5FEF ldi r21,lo8(-1)
1064 055c 452E mov r4,r21
1065 055e 552E mov r5,r21
1066 0560 09C0 rjmp .L125
1067 .L124:
1068 .LM163:
1069 0562 1016 cp __zero_reg__,r16
1070 0564 1106 cpc __zero_reg__,r17
1071 0566 24F4 brge .L126
1072 .LM164:
1073 0568 41E0 ldi r20,lo8(1)
1074 056a 442E mov r4,r20
1075 056c 512C mov r5,__zero_reg__
1076 056e 02C0 rjmp .L125
1077 .L126:
1078 .LM165:
1079 0570 4424 clr r4
1080 0572 5524 clr r5
1081 .L125:
1082 .LM166:
1083 0574 F7FE sbrs r15,7
1084 0576 04C0 rjmp .L128
1085 .LM167:
1086 0578 F094 com r15
1087 057a E194 neg r14
1088 057c F108 sbc r15,__zero_reg__
1089 057e F394 inc r15
1090 .L128:
1091 .LM168:
1092 0580 17FF sbrs r17,7
1093 0582 03C0 rjmp .L129
1094 .LM169:
1095 0584 1095 com r17
1096 0586 0195 neg r16
1097 0588 1F4F sbci r17,lo8(-1)
1098 .L129:
1099 .LM170:
1100 058a 4981 ldd r20,Y+1
1101 058c 6C2D mov r22,r12
1102 058e 8A2D mov r24,r10
1103 0590 0E94 0000 call lcd_plot
1104 .LM171:
1105 0594 0E15 cp r16,r14
1106 0596 1F05 cpc r17,r15
1107 0598 4CF5 brge .L130
1108 .LM172:
1109 059a C701 movw r24,r14
1110 059c F7FC sbrc r15,7
1111 059e 0196 adiw r24,1
1112 .L131:
1113 05a0 9595 asr r25
1114 05a2 8795 ror r24
1115 05a4 2227 clr r18
1116 05a6 3327 clr r19
1117 05a8 281B sub r18,r24
1118 05aa 390B sbc r19,r25
1119 05ac 3B83 std Y+3,r19
1120 05ae 2A83 std Y+2,r18
1121 .LM173:
1122 05b0 A614 cp r10,r6
1123 05b2 B704 cpc r11,r7
1124 05b4 09F4 brne .+2
1125 05b6 41C0 rjmp .L119
1126 .L135:
1127 .LM174:
1128 05b8 8A81 ldd r24,Y+2
1129 05ba 9B81 ldd r25,Y+3
1130 05bc 800F add r24,r16
1131 05be 911F adc r25,r17
1132 05c0 9B83 std Y+3,r25
1133 05c2 8A83 std Y+2,r24
1134 .LM175:
1135 05c4 A20C add r10,r2
1136 05c6 B31C adc r11,r3
1137 .LM176:
1138 05c8 1816 cp __zero_reg__,r24
1139 05ca 1906 cpc __zero_reg__,r25
1140 05cc 34F4 brge .L134
1141 .LM177:
1142 05ce C40C add r12,r4
1143 05d0 D51C adc r13,r5
1144 .LM178:
1145 05d2 8E19 sub r24,r14
1146 05d4 9F09 sbc r25,r15
1147 05d6 9B83 std Y+3,r25
1148 05d8 8A83 std Y+2,r24
1149 .L134:
1150 .LM179:
1151 05da 4981 ldd r20,Y+1
1152 05dc 6C2D mov r22,r12
1153 05de 8A2D mov r24,r10
1154 05e0 0E94 0000 call lcd_plot
1155 05e4 A614 cp r10,r6
1156 05e6 B704 cpc r11,r7
1157 05e8 39F7 brne .L135
1158 05ea 27C0 rjmp .L119
1159 .L130:
1160 .LM180:
1161 05ec C801 movw r24,r16
1162 05ee 17FD sbrc r17,7
1163 05f0 0196 adiw r24,1
1164 .L137:
1165 05f2 9595 asr r25
1166 05f4 8795 ror r24
1167 05f6 EE27 clr r30
1168 05f8 FF27 clr r31
1169 05fa E81B sub r30,r24
1170 05fc F90B sbc r31,r25
1171 05fe FB83 std Y+3,r31
1172 0600 EA83 std Y+2,r30
1173 .LM181:
1174 0602 C814 cp r12,r8
1175 0604 D904 cpc r13,r9
1176 0606 C9F0 breq .L119
1177 .L141:
1178 .LM182:
1179 0608 2A81 ldd r18,Y+2
1180 060a 3B81 ldd r19,Y+3
1181 060c 2E0D add r18,r14
1182 060e 3F1D adc r19,r15
1183 0610 3B83 std Y+3,r19
1184 0612 2A83 std Y+2,r18
1185 .LM183:
1186 0614 C40C add r12,r4
1187 0616 D51C adc r13,r5
1188 .LM184:
1189 0618 1216 cp __zero_reg__,r18
1190 061a 1306 cpc __zero_reg__,r19
1191 061c 34F4 brge .L140
1192 .LM185:
1193 061e A20C add r10,r2
1194 0620 B31C adc r11,r3
1195 .LM186:
1196 0622 201B sub r18,r16
1197 0624 310B sbc r19,r17
1198 0626 3B83 std Y+3,r19
1199 0628 2A83 std Y+2,r18
1200 .L140:
1201 .LM187:
1202 062a 4981 ldd r20,Y+1
1203 062c 6C2D mov r22,r12
1204 062e 8A2D mov r24,r10
1205 0630 0E94 0000 call lcd_plot
1206 0634 C814 cp r12,r8
1207 0636 D904 cpc r13,r9
1208 0638 39F7 brne .L141
1209 .L119:
1210 /* epilogue: frame size=3 */
1211 063a 2396 adiw r28,3
1212 063c 0FB6 in __tmp_reg__,__SREG__
1213 063e F894 cli
1214 0640 DEBF out __SP_H__,r29
1215 0642 0FBE out __SREG__,__tmp_reg__
1216 0644 CDBF out __SP_L__,r28
1217 0646 DF91 pop r29
1218 0648 CF91 pop r28
1219 064a 1F91 pop r17
1220 064c 0F91 pop r16
1221 064e FF90 pop r15
1222 0650 EF90 pop r14
1223 0652 DF90 pop r13
1224 0654 CF90 pop r12
1225 0656 BF90 pop r11
1226 0658 AF90 pop r10
1227 065a 9F90 pop r9
1228 065c 8F90 pop r8
1229 065e 7F90 pop r7
1230 0660 6F90 pop r6
1231 0662 5F90 pop r5
1232 0664 4F90 pop r4
1233 0666 3F90 pop r3
1234 0668 2F90 pop r2
1235 066a 0895 ret
1236 /* epilogue end (size=25) */
1237 /* function lcd_line size 197 (146) */
1238 .LFE23:
1240 .global lcd_frect
1242 lcd_frect:
1243 .LFB24:
1244 .LM188:
1245 /* prologue: frame size=0 */
1246 066c BF92 push r11
1247 066e CF92 push r12
1248 0670 DF92 push r13
1249 0672 EF92 push r14
1250 0674 FF92 push r15
1251 0676 0F93 push r16
1252 0678 1F93 push r17
1253 067a CF93 push r28
1254 067c DF93 push r29
1255 /* prologue end (size=9) */
1256 067e 182F mov r17,r24
1257 0680 822F mov r24,r18
1258 0682 B02E mov r11,r16
1259 .LM189:
1260 0684 17FD sbrc r17,7
1261 .LM190:
1262 0686 1FE7 ldi r17,lo8(127)
1263 .L146:
1264 .LM191:
1265 0688 6034 cpi r22,lo8(64)
1266 068a 08F0 brlo .L147
1267 .LM192:
1268 068c 6FE3 ldi r22,lo8(63)
1269 .L147:
1270 .LM193:
1271 068e 212F mov r18,r17
1272 0690 240F add r18,r20
1273 0692 312D mov r19,__zero_reg__
1274 0694 311D adc r19,__zero_reg__
1275 0696 6901 movw r12,r18
1276 .LM194:
1277 0698 262F mov r18,r22
1278 069a 3327 clr r19
1279 069c 7901 movw r14,r18
1280 069e E80E add r14,r24
1281 06a0 F11C adc r15,__zero_reg__
1282 .LM195:
1283 06a2 81E8 ldi r24,lo8(129)
1284 06a4 C816 cp r12,r24
1285 06a6 D104 cpc r13,__zero_reg__
1286 06a8 18F0 brlo .L148
1287 .LM196:
1288 06aa F0E8 ldi r31,lo8(128)
1289 06ac CF2E mov r12,r31
1290 06ae D12C mov r13,__zero_reg__
1291 .L148:
1292 .LM197:
1293 06b0 81E4 ldi r24,lo8(65)
1294 06b2 E816 cp r14,r24
1295 06b4 F104 cpc r15,__zero_reg__
1296 06b6 18F0 brlo .L149
1297 .LM198:
1298 06b8 E0E4 ldi r30,lo8(64)
1299 06ba EE2E mov r14,r30
1300 06bc F12C mov r15,__zero_reg__
1301 .L149:
1302 .LM199:
1303 06be E901 movw r28,r18
1304 06c0 E216 cp r14,r18
1305 06c2 F306 cpc r15,r19
1306 06c4 58F0 brlo .L155
1307 .L153:
1308 .LM200:
1309 06c6 0B2D mov r16,r11
1310 06c8 2C2F mov r18,r28
1311 06ca 4C2D mov r20,r12
1312 06cc 6C2F mov r22,r28
1313 06ce 812F mov r24,r17
1314 06d0 0E94 0000 call lcd_line
1315 .LM201:
1316 06d4 2196 adiw r28,1
1317 06d6 EC16 cp r14,r28
1318 06d8 FD06 cpc r15,r29
1319 06da A8F7 brsh .L153
1320 .L155:
1321 /* epilogue: frame size=0 */
1322 06dc DF91 pop r29
1323 06de CF91 pop r28
1324 06e0 1F91 pop r17
1325 06e2 0F91 pop r16
1326 06e4 FF90 pop r15
1327 06e6 EF90 pop r14
1328 06e8 DF90 pop r13
1329 06ea CF90 pop r12
1330 06ec BF90 pop r11
1331 06ee 0895 ret
1332 /* epilogue end (size=10) */
1333 /* function lcd_frect size 67 (48) */
1334 .LFE24:
1336 .global lcd_rect
1338 lcd_rect:
1339 .LFB25:
1340 .LM202:
1341 /* prologue: frame size=0 */
1342 06f0 CF92 push r12
1343 06f2 DF92 push r13
1344 06f4 EF92 push r14
1345 06f6 FF92 push r15
1346 06f8 0F93 push r16
1347 06fa 1F93 push r17
1348 06fc CF93 push r28
1349 06fe DF93 push r29
1350 /* prologue end (size=8) */
1351 0700 D82E mov r13,r24
1352 0702 162F mov r17,r22
1353 0704 C02E mov r12,r16
1354 .LM203:
1355 0706 87FF sbrs r24,7
1356 0708 02C0 rjmp .L157
1357 .LM204:
1358 070a BFE7 ldi r27,lo8(127)
1359 070c DB2E mov r13,r27
1360 .L157:
1361 .LM205:
1362 070e 1034 cpi r17,lo8(64)
1363 0710 08F0 brlo .L158
1364 .LM206:
1365 0712 1FE3 ldi r17,lo8(63)
1366 .L158:
1367 .LM207:
1368 0714 8D2D mov r24,r13
1369 0716 840F add r24,r20
1370 0718 912D mov r25,__zero_reg__
1371 071a 911D adc r25,__zero_reg__
1372 071c EC01 movw r28,r24
1373 .LM208:
1374 071e 812F mov r24,r17
1375 0720 820F add r24,r18
1376 0722 912D mov r25,__zero_reg__
1377 0724 911D adc r25,__zero_reg__
1378 0726 7C01 movw r14,r24
1379 .LM209:
1380 0728 C138 cpi r28,129
1381 072a D105 cpc r29,__zero_reg__
1382 072c 10F0 brlo .L159
1383 .LM210:
1384 072e C0E8 ldi r28,lo8(128)
1385 0730 D0E0 ldi r29,hi8(128)
1386 .L159:
1387 .LM211:
1388 0732 91E4 ldi r25,lo8(65)
1389 0734 E916 cp r14,r25
1390 0736 F104 cpc r15,__zero_reg__
1391 0738 18F0 brlo .L160
1392 .LM212:
1393 073a A0E4 ldi r26,lo8(64)
1394 073c EA2E mov r14,r26
1395 073e F12C mov r15,__zero_reg__
1396 .L160:
1397 .LM213:
1398 0740 0C2D mov r16,r12
1399 0742 212F mov r18,r17
1400 0744 4C2F mov r20,r28
1401 0746 612F mov r22,r17
1402 0748 8D2D mov r24,r13
1403 074a 0E94 0000 call lcd_line
1404 .LM214:
1405 074e 2E2D mov r18,r14
1406 0750 4C2F mov r20,r28
1407 0752 612F mov r22,r17
1408 0754 8C2F mov r24,r28
1409 0756 0E94 0000 call lcd_line
1410 .LM215:
1411 075a 2E2D mov r18,r14
1412 075c 4D2D mov r20,r13
1413 075e 6E2D mov r22,r14
1414 0760 8C2F mov r24,r28
1415 0762 0E94 0000 call lcd_line
1416 .LM216:
1417 0766 212F mov r18,r17
1418 0768 4D2D mov r20,r13
1419 076a 6E2D mov r22,r14
1420 076c 8D2D mov r24,r13
1421 076e 0E94 0000 call lcd_line
1422 /* epilogue: frame size=0 */
1423 0772 DF91 pop r29
1424 0774 CF91 pop r28
1425 0776 1F91 pop r17
1426 0778 0F91 pop r16
1427 077a FF90 pop r15
1428 077c EF90 pop r14
1429 077e DF90 pop r13
1430 0780 CF90 pop r12
1431 0782 0895 ret
1432 /* epilogue end (size=9) */
1433 /* function lcd_rect size 74 (57) */
1434 .LFE25:
1436 .global draw_circle
1438 draw_circle:
1439 .LFB26:
1440 .LM217:
1441 /* prologue: frame size=0 */
1442 0784 2F92 push r2
1443 0786 3F92 push r3
1444 0788 4F92 push r4
1445 078a 5F92 push r5
1446 078c 6F92 push r6
1447 078e 7F92 push r7
1448 0790 8F92 push r8
1449 0792 9F92 push r9
1450 0794 AF92 push r10
1451 0796 BF92 push r11
1452 0798 CF92 push r12
1453 079a DF92 push r13
1454 079c EF92 push r14
1455 079e FF92 push r15
1456 07a0 0F93 push r16
1457 07a2 1F93 push r17
1458 07a4 CF93 push r28
1459 07a6 DF93 push r29
1460 /* prologue end (size=18) */
1461 07a8 5C01 movw r10,r24
1462 07aa 6B01 movw r12,r22
1463 07ac E22E mov r14,r18
1464 .LM218:
1465 07ae C1E0 ldi r28,lo8(1)
1466 07b0 8C2E mov r8,r28
1467 07b2 912C mov r9,__zero_reg__
1468 07b4 841A sub r8,r20
1469 07b6 950A sbc r9,r21
1470 .LM219:
1471 07b8 2224 clr r2
1472 07ba 3324 clr r3
1473 .LM220:
1474 07bc 8EEF ldi r24,lo8(-2)
1475 07be 9FEF ldi r25,hi8(-2)
1476 07c0 489F mul r20,r24
1477 07c2 2001 movw r4,r0
1478 07c4 499F mul r20,r25
1479 07c6 500C add r5,r0
1480 07c8 589F mul r21,r24
1481 07ca 500C add r5,r0
1482 07cc 1124 clr r1
1483 .LM221:
1484 07ce 3101 movw r6,r2
1485 .LM222:
1486 07d0 EA01 movw r28,r20
1487 .LM223:
1488 07d2 862F mov r24,r22
1489 07d4 840F add r24,r20
1490 07d6 422F mov r20,r18
1491 07d8 682F mov r22,r24
1492 07da 8A2D mov r24,r10
1493 07dc 0E94 0000 call lcd_plot
1494 .LM224:
1495 07e0 8C2D mov r24,r12
1496 07e2 8C1B sub r24,r28
1497 07e4 4E2D mov r20,r14
1498 07e6 682F mov r22,r24
1499 07e8 8A2D mov r24,r10
1500 07ea 0E94 0000 call lcd_plot
1501 .LM225:
1502 07ee 4E2D mov r20,r14
1503 07f0 6C2D mov r22,r12
1504 07f2 8A2D mov r24,r10
1505 07f4 8C0F add r24,r28
1506 07f6 0E94 0000 call lcd_plot
1507 .LM226:
1508 07fa 4E2D mov r20,r14
1509 07fc 6C2D mov r22,r12
1510 07fe 8A2D mov r24,r10
1511 0800 8C1B sub r24,r28
1512 0802 0E94 0000 call lcd_plot
1513 .LM227:
1514 0806 2C16 cp r2,r28
1515 0808 3D06 cpc r3,r29
1516 080a 0CF0 brlt .+2
1517 080c 51C0 rjmp .L167
1518 .L165:
1519 .LM228:
1520 080e 97FC sbrc r9,7
1521 0810 07C0 rjmp .L164
1522 .LM229:
1523 0812 2197 sbiw r28,1
1524 .LM230:
1525 0814 82E0 ldi r24,lo8(2)
1526 0816 90E0 ldi r25,hi8(2)
1527 0818 480E add r4,r24
1528 081a 591E adc r5,r25
1529 .LM231:
1530 081c 840C add r8,r4
1531 081e 951C adc r9,r5
1532 .L164:
1533 .LM232:
1534 0820 0894 sec
1535 0822 611C adc r6,__zero_reg__
1536 0824 711C adc r7,__zero_reg__
1537 .LM233:
1538 0826 82E0 ldi r24,lo8(2)
1539 0828 90E0 ldi r25,hi8(2)
1540 082a 280E add r2,r24
1541 082c 391E adc r3,r25
1542 .LM234:
1543 082e 820C add r8,r2
1544 0830 931C adc r9,r3
1545 0832 0894 sec
1546 0834 811C adc r8,__zero_reg__
1547 0836 911C adc r9,__zero_reg__
1548 .LM235:
1549 0838 1C2D mov r17,r12
1550 083a 1C0F add r17,r28
1551 083c FA2C mov r15,r10
1552 083e F60C add r15,r6
1553 0840 4E2D mov r20,r14
1554 0842 612F mov r22,r17
1555 0844 8F2D mov r24,r15
1556 0846 0E94 0000 call lcd_plot
1557 .LM236:
1558 084a 0A2D mov r16,r10
1559 084c 0619 sub r16,r6
1560 084e 4E2D mov r20,r14
1561 0850 612F mov r22,r17
1562 0852 802F mov r24,r16
1563 0854 0E94 0000 call lcd_plot
1564 .LM237:
1565 0858 1C2D mov r17,r12
1566 085a 1C1B sub r17,r28
1567 085c 4E2D mov r20,r14
1568 085e 612F mov r22,r17
1569 0860 8F2D mov r24,r15
1570 0862 0E94 0000 call lcd_plot
1571 .LM238:
1572 0866 4E2D mov r20,r14
1573 0868 612F mov r22,r17
1574 086a 802F mov r24,r16
1575 086c 0E94 0000 call lcd_plot
1576 .LM239:
1577 0870 1C2D mov r17,r12
1578 0872 160D add r17,r6
1579 0874 FA2C mov r15,r10
1580 0876 FC0E add r15,r28
1581 0878 4E2D mov r20,r14
1582 087a 612F mov r22,r17
1583 087c 8F2D mov r24,r15
1584 087e 0E94 0000 call lcd_plot
1585 .LM240:
1586 0882 0A2D mov r16,r10
1587 0884 0C1B sub r16,r28
1588 0886 4E2D mov r20,r14
1589 0888 612F mov r22,r17
1590 088a 802F mov r24,r16
1591 088c 0E94 0000 call lcd_plot
1592 .LM241:
1593 0890 1C2D mov r17,r12
1594 0892 1619 sub r17,r6
1595 0894 4E2D mov r20,r14
1596 0896 612F mov r22,r17
1597 0898 8F2D mov r24,r15
1598 089a 0E94 0000 call lcd_plot
1599 .LM242:
1600 089e 4E2D mov r20,r14
1601 08a0 612F mov r22,r17
1602 08a2 802F mov r24,r16
1603 08a4 0E94 0000 call lcd_plot
1604 08a8 6C16 cp r6,r28
1605 08aa 7D06 cpc r7,r29
1606 08ac 0CF4 brge .+2
1607 08ae AFCF rjmp .L165
1608 .L167:
1609 /* epilogue: frame size=0 */
1610 08b0 DF91 pop r29
1611 08b2 CF91 pop r28
1612 08b4 1F91 pop r17
1613 08b6 0F91 pop r16
1614 08b8 FF90 pop r15
1615 08ba EF90 pop r14
1616 08bc DF90 pop r13
1617 08be CF90 pop r12
1618 08c0 BF90 pop r11
1619 08c2 AF90 pop r10
1620 08c4 9F90 pop r9
1621 08c6 8F90 pop r8
1622 08c8 7F90 pop r7
1623 08ca 6F90 pop r6
1624 08cc 5F90 pop r5
1625 08ce 4F90 pop r4
1626 08d0 3F90 pop r3
1627 08d2 2F90 pop r2
1628 08d4 0895 ret
1629 /* epilogue end (size=19) */
1630 /* function draw_circle size 169 (132) */
1631 .LFE26:
1633 .global draw_fcircle
1635 draw_fcircle:
1636 .LFB27:
1637 .LM243:
1638 /* prologue: frame size=0 */
1639 08d6 2F92 push r2
1640 08d8 3F92 push r3
1641 08da 4F92 push r4
1642 08dc 5F92 push r5
1643 08de 6F92 push r6
1644 08e0 7F92 push r7
1645 08e2 8F92 push r8
1646 08e4 9F92 push r9
1647 08e6 AF92 push r10
1648 08e8 BF92 push r11
1649 08ea CF92 push r12
1650 08ec DF92 push r13
1651 08ee FF92 push r15
1652 08f0 0F93 push r16
1653 08f2 1F93 push r17
1654 08f4 CF93 push r28
1655 08f6 DF93 push r29
1656 /* prologue end (size=17) */
1657 08f8 5C01 movw r10,r24
1658 08fa 6B01 movw r12,r22
1659 .LM244:
1660 08fc 11E0 ldi r17,lo8(1)
1661 08fe 612E mov r6,r17
1662 0900 712C mov r7,__zero_reg__
1663 0902 641A sub r6,r20
1664 0904 750A sbc r7,r21
1665 .LM245:
1666 0906 2224 clr r2
1667 0908 3324 clr r3
1668 .LM246:
1669 090a 8EEF ldi r24,lo8(-2)
1670 090c 9FEF ldi r25,hi8(-2)
1671 090e 489F mul r20,r24
1672 0910 2001 movw r4,r0
1673 0912 499F mul r20,r25
1674 0914 500C add r5,r0
1675 0916 589F mul r21,r24
1676 0918 500C add r5,r0
1677 091a 1124 clr r1
1678 .LM247:
1679 091c 4101 movw r8,r2
1680 .LM248:
1681 091e EA01 movw r28,r20
1682 .LM249:
1683 0920 862F mov r24,r22
1684 0922 841B sub r24,r20
1685 0924 962F mov r25,r22
1686 0926 940F add r25,r20
1687 0928 01E0 ldi r16,lo8(1)
1688 092a 282F mov r18,r24
1689 092c 4A2D mov r20,r10
1690 092e 692F mov r22,r25
1691 0930 8A2D mov r24,r10
1692 0932 0E94 0000 call lcd_line
1693 .LM250:
1694 0936 8A2D mov r24,r10
1695 0938 8C1B sub r24,r28
1696 093a 2C2D mov r18,r12
1697 093c 482F mov r20,r24
1698 093e 6C2D mov r22,r12
1699 0940 8A2D mov r24,r10
1700 0942 8C0F add r24,r28
1701 0944 0E94 0000 call lcd_line
1702 .LM251:
1703 0948 2C16 cp r2,r28
1704 094a 3D06 cpc r3,r29
1705 094c 0CF0 brlt .+2
1706 094e 42C0 rjmp .L174
1707 .L172:
1708 .LM252:
1709 0950 77FC sbrc r7,7
1710 0952 07C0 rjmp .L171
1711 .LM253:
1712 0954 2197 sbiw r28,1
1713 .LM254:
1714 0956 82E0 ldi r24,lo8(2)
1715 0958 90E0 ldi r25,hi8(2)
1716 095a 480E add r4,r24
1717 095c 591E adc r5,r25
1718 .LM255:
1719 095e 640C add r6,r4
1720 0960 751C adc r7,r5
1721 .L171:
1722 .LM256:
1723 0962 0894 sec
1724 0964 811C adc r8,__zero_reg__
1725 0966 911C adc r9,__zero_reg__
1726 .LM257:
1727 0968 82E0 ldi r24,lo8(2)
1728 096a 90E0 ldi r25,hi8(2)
1729 096c 280E add r2,r24
1730 096e 391E adc r3,r25
1731 .LM258:
1732 0970 620C add r6,r2
1733 0972 731C adc r7,r3
1734 0974 0894 sec
1735 0976 611C adc r6,__zero_reg__
1736 0978 711C adc r7,__zero_reg__
1737 .LM259:
1738 097a 8C2D mov r24,r12
1739 097c 8C0F add r24,r28
1740 097e 1A2D mov r17,r10
1741 0980 1819 sub r17,r8
1742 0982 FA2C mov r15,r10
1743 0984 F80C add r15,r8
1744 0986 01E0 ldi r16,lo8(1)
1745 0988 282F mov r18,r24
1746 098a 412F mov r20,r17
1747 098c 682F mov r22,r24
1748 098e 8F2D mov r24,r15
1749 0990 0E94 0000 call lcd_line
1750 .LM260:
1751 0994 8C2D mov r24,r12
1752 0996 8C1B sub r24,r28
1753 0998 282F mov r18,r24
1754 099a 412F mov r20,r17
1755 099c 682F mov r22,r24
1756 099e 8F2D mov r24,r15
1757 09a0 0E94 0000 call lcd_line
1758 .LM261:
1759 09a4 8C2D mov r24,r12
1760 09a6 880D add r24,r8
1761 09a8 1A2D mov r17,r10
1762 09aa 1C1B sub r17,r28
1763 09ac FA2C mov r15,r10
1764 09ae FC0E add r15,r28
1765 09b0 282F mov r18,r24
1766 09b2 412F mov r20,r17
1767 09b4 682F mov r22,r24
1768 09b6 8F2D mov r24,r15
1769 09b8 0E94 0000 call lcd_line
1770 .LM262:
1771 09bc 8C2D mov r24,r12
1772 09be 8819 sub r24,r8
1773 09c0 282F mov r18,r24
1774 09c2 412F mov r20,r17
1775 09c4 682F mov r22,r24
1776 09c6 8F2D mov r24,r15
1777 09c8 0E94 0000 call lcd_line
1778 09cc 8C16 cp r8,r28
1779 09ce 9D06 cpc r9,r29
1780 09d0 0CF4 brge .+2
1781 09d2 BECF rjmp .L172
1782 .L174:
1783 /* epilogue: frame size=0 */
1784 09d4 DF91 pop r29
1785 09d6 CF91 pop r28
1786 09d8 1F91 pop r17
1787 09da 0F91 pop r16
1788 09dc FF90 pop r15
1789 09de DF90 pop r13
1790 09e0 CF90 pop r12
1791 09e2 BF90 pop r11
1792 09e4 AF90 pop r10
1793 09e6 9F90 pop r9
1794 09e8 8F90 pop r8
1795 09ea 7F90 pop r7
1796 09ec 6F90 pop r6
1797 09ee 5F90 pop r5
1798 09f0 4F90 pop r4
1799 09f2 3F90 pop r3
1800 09f4 2F90 pop r2
1801 09f6 0895 ret
1802 /* epilogue end (size=18) */
1803 /* function draw_fcircle size 145 (110) */
1804 .LFE27:
1806 .comm display_buffer,1024,1
1807 .comm display_buffer_pointer,2,1
1808 .comm display_buffer_counter,1,1
1809 .comm display_page_counter,1,1
1810 .comm display_mode,1,1
1811 .comm lcd_xpos,1,1
1812 .comm lcd_ypos,1,1
1813 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 lcd.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:20 .text:00000000 send_byte
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:46 .text:00000010 cls
*COM*:00000400 display_buffer
*COM*:00000001 lcd_xpos
*COM*:00000001 lcd_ypos
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:118 .text:00000074 lcd_cls
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:133 .text:0000007a wait_1ms
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:162 .text:00000084 wait_ms
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:199 .text:000000ae lcd_init
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:280 .text:0000012a set_adress
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:331 .text:00000170 scroll
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:403 .text:000001da put_char
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:647 .text:00000342 new_line
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:674 .text:0000035c lcd_printp
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:770 .text:000003ca lcd_print_atp
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:791 .text:000003dc lcd_print
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:863 .text:00000442 lcd_print_at
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:884 .text:00000454 lcd_plot
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:986 .text:000004e6 lcd_line
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:1242 .text:0000066c lcd_frect
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:1338 .text:000006f0 lcd_rect
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:1438 .text:00000784 draw_circle
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUHaaaa.s:1635 .text:000008d6 draw_fcircle
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
f8x6
/Transportables_Koptertool/trunk/main.c
0,0 → 1,88
/*
Mobiles Mikrokopter-Tool
+++++ BETA 0.1 +++++
Diese Software ist Open-Source und darf nicht für kommerzielle Zwecke verwendet werden.
Die Software darf kopiert, verändert und weitergegeben werden, unter der Bedingung,
dass immer der komplette Source inklusive dieser Lizenz weitergegeben wird.
Für den LCD-Font gilt das dort angegebene Copyright.
(C) 2008 Thomas Kaiser, thomas@ft-fanpage.de
 
Die Software wird "so wie sie ist" geliefert.
Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion.
Benutzung auf eigene Gefahr.
Ich übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden.
Dies gilt insbesondere für die vorliegende Beta-Version.
 
Teile des Source (z.B. die base64-Funktionen) sind abgewandelte Funktionen aus dem Mikrokopter-Source,
siehe http://www.mikrokopter.de
 
*/
 
//#define F_CPU 7378200ul
 
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "lcd.h"
#include "rs232.h"
#include "parameter.h"
#include "menu.h"
#include "display.h"
#include "base64.h"
#include "timer.h"
 
unsigned char EEPromArray[E2END+1] EEMEM;
 
void ReadParameter(void)
{
// unsigned char *buffer;
 
LCD_ORIENTATION = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ORIENTATION]);
 
// set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]);
// if (number > 5) number = 5;
// eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
}
 
void WriteParameterset(void)
{
 
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 1);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], 0);
 
// if(number > 5) number = 5;
// eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
// eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken
}
 
 
int main (void)
{
PORTA = 0xFF; // unbenutzte Pins auf Pull-Up
PORTB = 0x43;
PORTC = 0xFC;
PORTD = 0x7C;
DDRC = 0x03; // Pins für Beleuchtung auf Ausgang
DDRD = 0x80;
 
if ((eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID])) != 1)
WriteParameterset();
 
ReadParameter();
// LCD_ORIENTATION = 0;
 
lcd_init();
RS232_init();
timer_init();
sei();
 
for (;;)
main_menu();
}
/Transportables_Koptertool/trunk/main.d
0,0 → 1,2
main.o main.d : main.c main.h lcd.h rs232.h parameter.h menu.h display.h base64.h \
timer.h
/Transportables_Koptertool/trunk/main.eep
0,0 → 1,0
:00000001FF
/Transportables_Koptertool/trunk/main.elf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Transportables_Koptertool/trunk/main.h
0,0 → 1,45
 
#ifndef main_h
#define main_h
 
#include <avr/eeprom.h>
 
#define set_cs() PORTB |= (1<<4)
#define clr_cs() PORTB &=~(1<<4)
#define set_reset() PORTB |= (1<<2)
#define clr_reset() PORTB &=~(1<<2)
#define set_A0() PORTB |= (1<<3) // Data
#define clr_A0() PORTB &=~(1<<3) // Command
#define set_scl() PORTB |= (1<<7)
#define clr_scl() PORTB &=~(1<<7)
#define set_si() PORTB |= (1<<5)
#define clr_si() PORTB &=~(1<<5)
 
#define key_enter 0x08
#define key_esc 0x04
#define key_plus 0x02
#define key_minus 0x01
#define key_nokey 0x00
 
extern uint8_t r_buffer[128];
extern uint8_t p_buffer[128];
//extern struct str_DebugIn *p_buffer;
 
extern volatile uint8_t key;
 
extern volatile uint8_t timer;
extern volatile uint8_t rs232_timer;
 
#endif
 
//#define EEPROM_ADR_VALID 1
 
#define EEPROM_ADR_VALID 1
#define EEPROM_ADR_ORIENTATION 2
 
 
extern unsigned char EEPromArray[];
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
/Transportables_Koptertool/trunk/main.hex
0,0 → 1,616
:100000000C947E060C9499060C9499060C9499060F
:100010000C9499060C9499060C9499060C949906E4
:100020000C9499060C9499060C94B5060C949906B8
:100030000C9499060C94F80B0C9499060C94990660
:100040000C9499060C9499060C9499060C949906B4
:100050000C9499060000000000003E5B4F5B3E00E0
:100060003E6B4F6B3E001C3E7C3E1C00183C7E3CB1
:1000700018001C577D571C001C5E7F5E1C0000187A
:100080003C180000FFE7C3E7FF0000182418000039
:10009000FFE7DBE7FF0030483A060E002629792902
:1000A0002600407F05050700407F05253F005A3C9C
:1000B000E73C5A007F3E1C1C0800081C1C3E7F00C9
:1000C00014227F2214005F5F005F5F0006097F013A
:1000D0007F00006689956A0060606060606094A23D
:1000E000FFA2940008047E04080010207E20100067
:1000F00008082A1C0800081C2A0808001E101010F6
:1001000010000C1E0C1E0C0030383E383000060E5D
:100110003E0E060000000000000000005F0000002E
:10012000000700070000147F147F1400242A7F2A90
:10013000120023130864620036495620500000085C
:1001400007030000001C224100000041221C0000A7
:100150002A1C7F1C2A0008083E0808000080703016
:100160000000080808080800000060600000201077
:10017000080402003E5149453E0000427F40000015
:100180007249494946002141494D33001814127FF4
:1001900010002745454539003C4A49493100412175
:1001A00011090700364949493600464949291E00C8
:1001B0000000140000000040340000000008142279
:1001C0004100141414141400004122140800020108
:1001D000590906003E415D594E007C1211127C0007
:1001E0007F49494936003E41414122007F4141411A
:1001F0003E007F49494941007F09090901003E410C
:10020000415173007F0808087F0000417F410000D2
:100210002040413F01007F08142241007F404040C0
:1002200040007F021C027F007F0408107F003E41D7
:1002300041413E007F09090906003E4151215E000F
:100240007F091929460026494949320003017F01E7
:1002500003003F4040403F001F2040201F003F4020
:1002600038403F006314081463000304780403005B
:100270006159494D4300007F41414100020408108B
:100280002000004141417F0004020102040040407F
:10029000404040000003070800002054547840000C
:1002A0007F284444380038444444280038444428D3
:1002B0007F0038545454180000087E09020018A426
:1002C000A49C78007F080404780000447D4000006E
:1002D0002040403D00007F102844000000417F4046
:1002E00000007C04780478007C080404780038441A
:1002F00044443800FC182424180018242418FC0056
:100300007C080404080048545454240004043F4466
:1003100024003C4040207C001C2040201C003C402D
:1003200030403C004428102844004C9090907C00C1
:100330004464544C4400000836410000000077003B
:1003400000000041360800000201020402003C26C1
:1003500023263C001EA1A16112003A4040207A00F1
:100360003854545559002155557941002154547839
:1003700041002155547840002054557940000C1E0E
:100380005272120039555555590039545454590078
:100390003955545458000000457C41000002457D09
:1003A00042000001457C4000791412147900F028C5
:1003B0002528F0007C54554500002054547C5444BA
:1003C0007C0A097F4941324949493200324848484C
:1003D0003200324A484830003A4141217A003A42DC
:1003E00040207800009DA0A07D003944444439009D
:1003F0003D4040403D003C24FF242400487E4943CA
:1004000066002B2FFC2F2B00FF0929F62000C08847
:100410007E0903002054547941000000447D4100CE
:100420003048484A3200384040227A00007A0A0AAE
:1004300072007D0D19317D002629292F28002629DB
:100440002929260030484D402000380808080800B7
:100450000808080838002F10C8ACBA002F1028343C
:10046000FA0000007B00000008142A142200221465
:100470002A140800AA005500AA00AA55AA55AA5590
:1004800055AA55AA55AA000000FF0000101010FF41
:100490000000141414FF00001010FF00FF001010E3
:1004A000F010F000141414FC00001414F700FF0006
:1004B0000000FF00FF001414F404FC0014141710D3
:1004C0001F0010101F101F001414141F0000101024
:1004D00010F000000000001F10101010101F10106E
:1004E000101010F01010000000FF1010101010106D
:1004F0001010101010FF1010000000FF1414000066
:10050000FF00FF1000001F1017140000FC04F4147B
:100510001414171017141414F404F4140000FF003A
:10052000F7141414141414141414F700F7141414F6
:100530001417141410101F101F10141414F4141492
:100540001010F010F01000001F101F100000001F0E
:100550001414000000FC14140000F010F01010102F
:10056000FF10FF10141414FF14141010101F0000BB
:10057000000000F01010FFFFFFFFFFFFF0F0F0F0B1
:10058000F0F0FFFFFF000000000000FFFFFF0F0F73
:100590000F0F0F0F3844443844007C2A2A3E1400C1
:1005A0007E0202060600027E027E02006355494179
:1005B00063003844443C0400407E201E20000602B4
:1005C0007E02020099A5E7A599001C2A492A1C0071
:1005D0004C7201724C00304A4D4D30003048784822
:1005E0003000BC625A463D003E49494900007E0148
:1005F00001017E002A2A2A2A2A0044445F4444003A
:1006000040514A44400040444A5140000000FF012C
:100610000300E080FF00000008086B6B080836123A
:1006200036243600060F090F0600000018180000D7
:100630000000101000003040FF010100001F010108
:100640001E0000191D171200003C3C3C3C0000003D
:1006500000000000202020202020004E69636B2035
:100660002020202020202020202000526F6C6C2091
:1006700020202020202020202020004761732020DF
:10068000202020202020202020200047696572099A
:100690000909000000000000000000506F7469317B
:1006A0000909090000000000000000506F74693261
:1006B0000909090000000000000000506F74693350
:1006C0000909090000000000000000506F7469343F
:1006D0000909090000000000000000436F6E666910
:1006E0006709090900000000000000486F6568659F
:1006F0005F4D696E476173202020004C75667464FD
:100700007275636B5F4420202020004D6178486F34
:100710006568652020202020202000486F656865DE
:100720005F50202020202020202000486F65686531
:100730005F56657273746165726B00486F656865BA
:100740005F4143435F5769726B2E00537469636B5B
:100750005F50202020202020202000537469636BEC
:100760005F44202020202020202000476965725F00
:1007700050202020202020202020004761735F4D42
:10078000696E2020202020202020004761735F4DCB
:1007900061782020202020202020004779726F419E
:1007A000636346616B746F720900004B6F6D70611B
:1007B00073735769726B756E6720004779726F5F4C
:1007C00050200909000000000000004779726F5FA7
:1007D0004909090900000000000000556E746572A7
:1007E0007370616E6E756E672020004E6F74476186
:1007F00073090909000000000000004E6F74476192
:10080000735A65697420202020200055666F417559
:10081000737269636874756E672000495F46616B27
:10082000746F7220202020202020005573657250A4
:100830006172616D310909000000005573657250E5
:100840006172616D320909000000005573657250D4
:100850006172616D330909000000005573657250C3
:100860006172616D34090900000000536572766F92
:100870004E69636B4374726C090000536572766F46
:100880004E69636B436F6D70090000536572766F3C
:100890004E69636B4D696E09000000536572766F97
:1008A0004E69636B4D617809000000536572766F85
:1008B0004E69636B526566727368004C6F6F704768
:1008C00061734C696D6974090000004C6F6F70545E
:1008D00068726573686F6C640900004C6F6F7048D4
:1008E0007973746572657365090000416368734BC1
:1008F0006F70706C756E6709000000416368734724
:100900006567656E4B6F70706C2E0057696E6B6C0F
:10091000556D7363686C4E69636B0057696E6B6CE1
:10092000556D7363686C526F6C6C004779726F41E0
:1009300063634162676C65696368004472696674E9
:100940006B6F6D700909000000000044796E616DE5
:10095000696353746162696C6974005573657250A0
:100960006172616D350909000000005573657250B0
:100970006172616D3609090000000055736572509F
:100980006172616D3709090000000055736572508E
:100990006172616D380909000000004C6F6F70438F
:1009A0006F6E666967090900000000536572766F13
:1009B0004E69636B436F6D70496E004C6F6F7020B2
:1009C00075702020202020202020004C6F6F702088
:1009D000646F776E092020202000004C6F6F70201C
:1009E0006C656674202020202020004C6F6F7020E2
:1009F000726967687420202020200048F668656EC0
:100A00007265676C6572202020200048F668656E6C
:100A1000736368616C746572202000486561646866
:100A20006F6C6409090000000000004B6F6D70617D
:100A300073730909000000000000004B6F6D7061C6
:100A4000737346697809090000000047505309098B
:100A500009000000000000000000004163687365A9
:100A60006E6B6F70706C756E672000447265687293
:100A70006174650909000000000000010802010816
:100A8000020108020108020108020108020108022D
:100A900001080200000000FF0400FF0400FF040042
:100AA000FF0400320400FF040006030040030014AA
:100AB0000300200821FA0800320800FF08000005A2
:100AC00000000500FA0800FA0800FA08000100001A
:100AD000FF0500FF0900FF0900FF0900FF0900FFF3
:100AE0000700FA0700FA0700FA0700190700FF06D7
:100AF00000FA0600FA0600FF0A00FF0A00FA0600E4
:100B0000FA0600FA0500FA0500FF0500FF0900FFDC
:100B10000900FF0900FF09000001000107000000B3
:100B200000000000000000000000000000000000C5
:100B300000000000000000000000000000000000B5
:100B40000000020202020202020200040404040481
:100B50000403030308080808050508080800050938
:100B60000909090707070707070606060A0A06060E
:100B70000505050909090900070B0B0B0B0C0C0CEB
:100B80000C0C0C0C0C436F6E666967202020200053
:100B90004368616E6E656C73202000537469636BEB
:100BA000202020202000486F65686520202020201C
:100BB000004779726F202020202020004C6F6F703A
:100BC000696E672020200043616D657261202020DE
:100BD0002000536F6E7374696765732000557365E9
:100BE0007220202020202000436F75706C696E6792
:100BF000202000436F6E66696728322920004C6F01
:100C00006F70696E67736574002D002D002D004CA8
:100C100061646520506172616D657465720D0A00D2
:100C200020313A0D0A0020323A0D0A0020333A0DE5
:100C30000A0020343A0D0A0020353A0D0A005469A2
:100C40006D656F757400506172616D6574657220B9
:100C500073706569636865726E3F0D0A20206A6172
:100C60000D0A20206E65696E000D0A2D2D2D3E00A7
:100C70000D0A506172616D657465722067657370ED
:100C800065696368657274000D0A4E696368742053
:100C900067657370656963686572740020002A0077
:100CA00048617570746D656EFC284245544120564C
:100CB000302E31290D0A000D0A446973706C617978
:100CC0000D0A00506172616D657465720D0A004D08
:100CD0006F746F727465737400446973706C6179BA
:100CE000000D0A54696D656F757421005461737449
:100CF00065206472FC636B656E0D0A0011241FBED3
:100D0000CFE5D8E0DEBFCDBF10E0A0E6B0E0ECE676
:100D1000F6E202C005900D92A036B107D9F715E0B2
:100D2000A0E6B0E001C01D92A738B107E1F70C942E
:100D30009B060C940000CFE5D8E0DEBFCDBF8FEF5F
:100D40008BBB83E488BB8CEF85BB8CE782BB83E0E5
:100D500084BB80E881BB0E9453070E941A0C0E944A
:100D6000F40678940E94C811FDCF1F920F920FB61F
:100D70000F9211248F939F938091E404882331F084
:100D80008091E40481508093E40415C08AE080934C
:100D9000E40489B3992780959095689413F8959504
:100DA00087951694E1F78F708093E604809169052A
:100DB0008F5F8093690580916100882329F080917D
:100DC00061008150809361008091E504882329F0BF
:100DD0008091E50481508093E5049F918F910F905D
:100DE0000FBE0F901F9018958DE083BF88E48CBFD5
:100DF00089B7826089BF0895C4988FB9779BFECF69
:100E00008EB18EB9C49A08950F931F93CF93DF9339
:100E100082E690E0FC011192019624E0813692076F
:100E2000D1F3C8F300E010E0C398802F80550E94F2
:100E3000FC0680E10E94FC0684E00E94FC06C39A46
:100E4000CFE7D0E080E00E94FC062197D7FFFACFE1
:100E50000F5F1F4F0830110538F310926A0510928A
:100E60006B05DF91CF911F910F9108950E940407A8
:100E7000089583E397E00197F1F708950F931F9387
:100E8000CF93DF938C01C0E0D0E0C817D90730F4CE
:100E90000E9439072196C017D107D0F3DF91CF9177
:100EA0001F910F91089510926A0510926B058FEFB4
:100EB00087BB8EE58DB9C49AC2988AE090E00E9403
:100EC0003E07C29AC498C39880E40E94FC0680EA58
:100ED0000E94FC0688EC0E94FC0686EA0E94FC0642
:100EE00082EA0E94FC068FE20E94FC0688EF0E94C4
:100EF000FC0680E00E94FC0687E20E94FC0681E876
:100F00000E94FC0686E10E94FC068CEA0E94FC0618
:100F100080E00E94FC068FEA0E94FC060E94040703
:100F20000895FF920F931F938C01F62E880F892F3F
:100F3000881F990B9195C39880550E94FC06102F2D
:100F40001F771C5F812F82958F70805F0E94FC0647
:100F5000812F8F700E94FC06C39A8F2D0E94FC0681
:100F60001F910F91FF900895EF92FF920F931F939F
:100F7000CF93DF93C0E0D0E032EEE32E30E0F32EEB
:100F8000870100581040F70181917F01F8018083AB
:100F900061918F01CE010E9491072196F3E0C03844
:100FA000DF0788F3C0E8D3E002EE13E0F801119206
:100FB0008F0160E0CE010E9491072196F4E0C030DD
:100FC000DF07A0F3DF91CF911F910F91FF90EF907A
:100FD0000895BF92CF92DF92EF92FF920F931F93EB
:100FE000CF93DF93382FF42EB22E842F99278F3D85
:100FF000910589F1803E910574F4863D910529F1B2
:10100000873D910524F4843C9105E1F026C08C3D98
:101010009105F1F022C0863F910571F0873F91055F
:1010200024F4843E910529F018C08C3F910539F0D5
:1010300014C014E8F12E11C0C4E9FC2E0EC0B1E8B2
:10104000FB2E0BC0AEE8FA2E08C0F9E9FF2E05C052
:10105000EAE9FE2E02C071EEF72EC62FDD27D695E7
:10106000DC2FCC27D795C79586E0389FC001112487
:10107000C80FD91FD3706E0100E010E045E0E42EE8
:1010800086E0F89EF0011124E00FF11FEC5AFF4FAB
:1010900024918B2D992782309105E9F083309105B9
:1010A0002CF4009749F0019771F02CC08330910522
:1010B000D1F00497F1F026C0FE01EE59FF4FE00F8A
:1010C000F11F20831FC0FE01EE59FF4FE00FF11FFB
:1010D0008081822B16C0FE01EE59FF4FE00FF11FF9
:1010E000808182270EC0FE01EE59FF4FE00FF11FF5
:1010F00006C0FE01EE59FF4FE00FF11F20958081E1
:1011000082238083FE01EE59FF4FE00FF11F6081C3
:10111000C6010E949107EA940F5F1F4F0894C11CFB
:10112000D11CE7FEADCFDF91CF911F910F91FF90C2
:10113000EF90DF90CF90BF90089580916B058F5F07
:1011400080936B05883028F00E94B40787E0809375
:101150006B0508951F93CF93DF93EC01162FFC01CD
:101160008491882351F1FE0184918032B0F0219660
:101170008491212F482F60916B0580916A050E9410
:10118000E90780916A058F5F80936A05853188F051
:1011900010926A050E949D080CC099278A3091051B
:1011A00029F00D9729F410926A0502C00E949D084B
:1011B0002196FE0184918823B1F6DF91CF911F9192
:1011C000089580936A0560936B05622FCA010E949F
:1011D000AA0808951F93CF93DF93EC01162F8881FF
:1011E000882339F148814032A0F02196212F609167
:1011F0006B0580916A050E94E90780916A058F5FFF
:1012000080936A05853190F010926A050E949D08CE
:101210000DC055274A30510531F04D30510529F4A4
:1012200010926A0502C00E949D0821968881882339
:10123000C9F6DF91CF911F91089580936A0560935D
:101240006B05622FCA010E94EA080895982F87FD56
:1012500045C0603408F042C0862F869586958695F5
:10126000A82FBB27B695BA2FAA27B795A795A90F80
:10127000B11D262F33272770307081E090E002C027
:10128000880F991F2A95E2F7982FB37055274130A0
:10129000510589F0423051051CF4452B29F017C047
:1012A0004230510571F013C0FD01EE59FF4F90958A
:1012B000808189230BC0FD01EE59FF4F8081892B6E
:1012C00005C0FD01EE59FF4F808189278083FD0114
:1012D000EE59FF4F6081CD010E94910708952F9232
:1012E0003F924F925F926F927F928F929F92AF92B6
:1012F000BF92CF92DF92EF92FF920F931F93CF9303
:10130000DF93CDB7DEB723970FB6F894DEBF0FBEDD
:10131000CDBF0983A82EBB24C62EDD24642E7724DE
:101320007301EA18FB08822E992484010C191D0907
:10133000F7FE04C07FEF272E372E09C01E141F04AE
:1013400024F461E0262E312C02C02224332417FF1E
:1013500004C05FEF452E552E09C01016110624F467
:1013600041E0442E512C02C044245524F7FE04C011
:10137000F094E194F108F39417FF03C010950195E0
:101380001F4F49816C2D8A2D0E9426090E151F05BD
:101390004CF5C701F7FC01969595879522273327D1
:1013A000281B390B3B832A83A614B70409F441C0D8
:1013B0008A819B81800F911F9B838A83A20CB31C1F
:1013C0001816190634F4C40CD51C8E199F099B837A
:1013D0008A8349816C2D8A2D0E942609A614B704A0
:1013E00039F727C0C80117FD019695958795EE2717
:1013F000FF27E81BF90BFB83EA83C814D904C9F063
:101400002A813B812E0D3F1D3B832A83C40CD51CB2
:101410001216130634F4A20CB31C201B310B3B83B1
:101420002A8349816C2D8A2D0E942609C814D9046B
:1014300039F723960FB6F894DEBF0FBECDBFDF910C
:10144000CF911F910F91FF90EF90DF90CF90BF90C1
:10145000AF909F908F907F906F905F904F903F9054
:101460002F900895BF92CF92DF92EF92FF920F9349
:101470001F93CF93DF93182F822FB02E17FD1FE7F6
:10148000603408F06FE3212F240F312D311D6901E5
:10149000262F33277901E80EF11C81E8C816D10404
:1014A00018F0F0E8CF2ED12C81E4E816F10418F002
:1014B000E0E4EE2EF12CE901E216F30658F00B2DD4
:1014C0002C2F4C2D6C2F812F0E946F092196EC162A
:1014D000FD06A8F7DF91CF911F910F91FF90EF903C
:1014E000DF90CF90BF900895CF92DF92EF92FF925E
:1014F0000F931F93CF93DF93D82E162FC02E87FF05
:1015000002C0BFE7DB2E103408F01FE38D2D840FDF
:10151000912D911DEC01812F820F912D911D7C0148
:10152000C138D10510F0C0E8D0E091E4E916F1042B
:1015300018F0A0E4EA2EF12C0C2D212F4C2F612F56
:101540008D2D0E946F092E2D4C2F612F8C2F0E9404
:101550006F092E2D4D2D6E2D8C2F0E946F09212F7E
:101560004D2D6E2D8D2D0E946F09DF91CF911F9112
:101570000F91FF90EF90DF90CF9008952F923F92C0
:101580004F925F926F927F928F929F92AF92BF9293
:10159000CF92DF92EF92FF920F931F93CF93DF933F
:1015A0005C016B01E22EC1E08C2E912C841A950A0D
:1015B000222433248EEF9FEF489F2001499F500C37
:1015C000589F500C11243101EA01862F840F422FBD
:1015D000682F8A2D0E9426098C2D8C1B4E2D682F7A
:1015E0008A2D0E9426094E2D6C2D8A2D8C0F0E946B
:1015F00026094E2D6C2D8A2D8C1B0E9426092C1637
:101600003D060CF051C097FC07C0219782E090E0A6
:10161000480E591E840C951C0894611C711C82E0B4
:1016200090E0280E391E820C931C0894811C911C9A
:101630001C2D1C0FFA2CF60C4E2D612F8F2D0E94A5
:1016400026090A2D06194E2D612F802F0E9426098A
:101650001C2D1C1B4E2D612F8F2D0E9426094E2DF7
:10166000612F802F0E9426091C2D160DFA2CFC0ECE
:101670004E2D612F8F2D0E9426090A2D0C1B4E2DF9
:10168000612F802F0E9426091C2D16194E2D612FC7
:101690008F2D0E9426094E2D612F802F0E94260932
:1016A0006C167D060CF4AFCFDF91CF911F910F9197
:1016B000FF90EF90DF90CF90BF90AF909F908F9072
:1016C0007F906F905F904F903F902F9008952F9252
:1016D0003F924F925F926F927F928F929F92AF92C2
:1016E000BF92CF92DF92FF920F931F93CF93DF931E
:1016F0005C016B0111E0612E712C641A750A2224C1
:1017000033248EEF9FEF489F2001499F500C589F34
:10171000500C11244101EA01862F841B962F940F4F
:1017200001E0282F4A2D692F8A2D0E946F098A2DEA
:101730008C1B2C2D482F6C2D8A2D8C0F0E946F092D
:101740002C163D060CF042C077FC07C0219782E0C2
:1017500090E0480E591E640C751C0894811C911C65
:1017600082E090E0280E391E620C731C0894611C04
:10177000711C8C2D8C0F1A2D1819FA2CF80C01E005
:10178000282F412F682F8F2D0E946F098C2D8C1BC5
:10179000282F412F682F8F2D0E946F098C2D880DC7
:1017A0001A2D1C1BFA2CFC0E282F412F682F8F2D71
:1017B0000E946F098C2D8819282F412F682F8F2D9B
:1017C0000E946F098C169D060CF4BECFDF91CF915D
:1017D0001F910F91FF90DF90CF90BF90AF909F909F
:1017E0008F907F906F905F904F903F902F900895D3
:1017F0001F920F920FB60F9211248F939F93EF9326
:10180000FF9390916C05EEE6F5E0E90FF11D8CB1C8
:1018100080839F5F90936C0580916C058F7080939F
:101820006C05FF91EF919F918F910F900FBE0F90DC
:101830001F90189588E98AB987E089B908958AE0E8
:101840008093E50490916D0580916C05981721F4C3
:101850008091E5048823B1F78091E504882381F025
:1018600080916D05E82FFF27E259FA4F8F5F809333
:101870006D05E08180916D058F7080936D0501C0CD
:10188000E82F8E2F992708955D9BFECF8CB9089580
:10189000CF93DF93EC018881882331F089910E94F6
:1018A000440C88818823D1F7DF91CF910895A82F28
:1018B00062E070E06A17B0F5E62FFF27E751FB4FB3
:1018C00080818D5331813D5352815D5343814D530E
:1018D0006C5FE72FFF27ED59FB4F9927880F991F62
:1018E000880F991F232F22952F70282B2083832F59
:1018F00099278F70907034E0880F991F3A95E1F71F
:10190000252F26952695282B2183852F99278370AF
:10191000907026E0880F991F2A95E1F7482B4283A3
:101920007D5FC8CF872F99270895CF9384E1809357
:1019300061000E941F0C833221F080916100882396
:10194000C1F780916100882399F0C0E00E941F0CCC
:10195000EC2FFF27E751FB4F8083CF5FC7FDCFE719
:101960008D30A1F78C2F0E94570C80E090E002C0D0
:1019700081E090E0CF910895FF920F931F93CF9352
:10198000A82F809163048093E9048091640480937C
:10199000EA04809165048093EB0443E0F42E7F2DEC
:1019A000FA16E0F5E72FFF27ED59FB4F90812181D3
:1019B00062817D5FEF2DFF27E751FB4F892F8695D1
:1019C0008695835C8083892F99278370907034E09B
:1019D000880F991F3A95E1F7422F55279A0194E015
:1019E000369527959A95E1F7822B835C81834F701A
:1019F0005070440F551F440F551F862F992716E02E
:101A0000969587951A95E1F7842B835C82836F7393
:101A1000635C638384E0F80E7A1720F220E030E004
:101A2000C0E0CF1540F4E9EEF4E08191280F311DBC
:101A3000CF5FCF15D0F33F70EF2DFF27E751FB4F5E
:101A4000C901C6E096958795CA95E1F7835C8083C6
:101A50002F733070822F835C81838DE082831382A9
:101A600083E0F80EC381CF1550F409EE14E0F801BD
:101A700081918F010E94440CCF5FCF15C0F3CF91AD
:101A80001F910F91FF9008951F93CF93DF93CDB7D0
:101A9000DEB761970FB6F894DEBF0FBECDBF182F2B
:101AA00083E28093630481E68093640480936504F9
:101AB00010936604109267041092680486E00E94F6
:101AC000BC0C0E94950C8091EA048134D1F7DE01B0
:101AD0001196E3E6F4E09FE081918D93915097FF9A
:101AE000FBCF198A17702989AE014F5F5F4F612FB5
:101AF000822F0E941D0961960FB6F894DEBF0FBEBB
:101B0000CDBFDF91CF911F910895CF92DF92EF92D9
:101B1000FF920F931F93CF93DF93CDB7DEB76197FB
:101B20000FB6F894DEBF0FBECDBF00E00E943607AF
:101B300010E0C02EDD24C60153E0880F991F5A958E
:101B4000E1F7810F0E94440D1F5F183090F30E944F
:101B5000950C8091EA04843491F510E0EE24FF2482
:101B6000F60143E0EE0FFF1F4A95E1F7EE0DFF1D72
:101B7000EE0FFF1FED59FB4F228183819927982F8C
:101B800088274AE050E0BE016F5F7F4F820F911DB2
:101B90000E94CF1220E044E556E0612F8EE00E94C3
:101BA000E10820E0AE014F5F5F4F612F8EE00E94A1
:101BB0001D091F5F0894E11CF11C183088F2809108
:101BC000E604882321F28091E604813009F40F5F56
:101BD0008091E604823009F4015003708091E6049C
:101BE000883009F0A5CF61960FB6F894DEBF0FBE1E
:101BF000CDBFDF91CF911F910F91FF90EF90DF90BC
:101C0000CF900895CF93C0E093E29093630491E660
:101C10009093640491E79093650480936604C09365
:101C20006704C093680486E00E94BC0C0E94950C77
:101C3000813009F4CEE1CF5F8091EA048C54853085
:101C400010F0CE3198F3CE3118F081E090E002C070
:101C500080E090E0CF910895982F8630B8F4E9EABB
:101C6000F4E026E4808183832150319727FFFACF67
:101C700083E28093630481E6809364049559909392
:101C800065041092AD048BE40E94BC0C08959B0186
:101C9000682F772751E0F90120E030E047E0CB01E1
:101CA000022E02C0959587950A94E2F780FF02C044
:101CB000508301C0108241502F5F3F4F319647FF44
:101CC000EECF089550E061E070E0FC0120E030E0EC
:101CD00047E08191813041F4CB01022E02C0880F90
:101CE000991F0A94E2F7580F41502F5F3F4F47FF6B
:101CF000F0CF852F99270895282FFB0134E6632F15
:101D00000E941613582F839FC0011124281B3AE00C
:101D1000822F632F0E941613482F839FC001112426
:101D2000281B205D2283852F805D8083405D418359
:101D3000803329F480E28083403309F48183138265
:101D400008959F92AF92BF92CF92DF92EF92FF924F
:101D50000F931F93CF93DF93CDB7DEB7A1970FB645
:101D6000F894DEBF0FBECDBF082F9924823008F44F
:101D70003EC0192D4BE5A42E46E0B42E33E6C32E0B
:101D800034E0D32E2DE7E22E2AE0F22EF7018491E3
:101D90008017F1F4E92DFF27E158FA4F1083BE01B7
:101DA0006F5F7F4FF60180810E947C0E20E0AE01C4
:101DB0004F5F5F4F692D822F0E941D0920E0A50112
:101DC000692D85E00E94E108F7E0F91508F0939489
:101DD0001F5F83E090E0E80EF91E0894C11CD11C3F
:101DE000E0E1F0E0AE0EBF1E123480F25FC0813041
:101DF00071F5BE01665E7F4F809197040E94470E89
:101E00009A82192D9BEBC92E99E0D92EEE24FF243E
:101E1000CE010196F701E80FF91F218D205D29837E
:101E200020E0AC01612F822F0E941D0920E0A60155
:101E3000612F85E00E94E1081F5F0894E11CF11CFE
:101E400080E190E0C80ED91E143010F32FC0882313
:101E500069F5BE01665E7F4F80916B040E94470E5C
:101E60009A82192D8BEFC82E89E0D82EEE24FF24FC
:101E7000CE010196F701E80FF91F218D205D29831E
:101E800020E0AC01612F822F0E941D0920E0A601F5
:101E9000612F85E00E94E1081F5F0894E11CF11C9E
:101EA000E0E1F0E0CE0EDF1E183010F3892D992707
:101EB000A1960FB6F894DEBF0FBECDBFDF91CF91D4
:101EC0001F910F91FF90EF90DF90CF90BF90AF9058
:101ED0009F9008958F929F92AF92BF92DF92EF9260
:101EE000FF920F931F93CF93DF93CDB7DEB7629727
:101EF0000FB6F894DEBF0FBECDBFD82E81E08D1592
:101F000008F055C0615044E080E00E948611082F1F
:101F10008F3F09F44CC0E82EFF24F701E158FA4F37
:101F20008081E82FFF27ED59FB4F108120E049E029
:101F30005CE0602F84E00E94E1088091E604882341
:101F4000E1F78091E604813009F411508091E604B4
:101F5000823009F41F5FBE016F5F7F4F812F0E94A7
:101F60007C0E20E0AE014F5F5F4F602F822F0E94FA
:101F70001D0984E180936100809161008823E1F76D
:101F80008091E604843021F08091E6048830C9F61F
:101F90008091E604883059F4EFE7F5E0EE0EFF1E7D
:101FA000F7018081E82FFF27ED59FB4F1083F1E007
:101FB000DF1609F06CC06BE0862E912C8C0E9D1EF6
:101FC000B401809197040E94470E1A8244E063E0B6
:101FD0008A810E948611082F8F3F09F4C6C0E82E1F
:101FE000FF245E010894A11CB11CF701EA0DFB1D42
:101FF000128520E04BE05CE0682F84E00E94E1085D
:102000008091E604813009F410E08091E60482308A
:1020100009F411E0105D1983105320E0AE014F5F09
:102020005F4F602F822F0E941D0984E18093610021
:10203000D0906100DD20E1F78091E604883021F046
:102040008091E6048430E1F68091E604883049F41A
:10205000EA0CFB1CF7011287C4010E94620E8093F8
:1020600097040E943607BE016F5F7F4F80919704EF
:102070000E947C0E6D2DCE0101960E94EA0888EC2C
:1020800080936100809161008823E1F76EC0DD20BC
:1020900009F06BC05BE0852E912C8C0E9D1EB40167
:1020A00080916B040E94470EDA8244E067E08D2D38
:1020B0000E948611082F8F3F09F457C0E82EFF2495
:1020C0005E010894A11CB11CF701EA0DFB1D1285ED
:1020D0002D2D4DE05CE0682F84E00E94E1088091A6
:1020E000E604813009F410E08091E604823009F4BE
:1020F00011E0105D1983105320E0AE014F5F5F4F78
:10210000602F822F0E941D0984E180936100D0908E
:102110006100DD20E1F78091E604883021F08091B4
:10212000E6048430E1F68091E604883049F4EA0C54
:10213000FB1CF7011287C4010E94620E80936B049E
:102140000E943607BE016F5F7F4F80916B040E9433
:102150007C0E6D2DCE0101960E94EA0888EC8093DA
:102160006100809161008823E1F762960FB6F894D0
:10217000DEBF0FBECDBFDF91CF911F910F91FF90BA
:10218000EF90DF90BF90AF909F908F9008951F9336
:10219000CF93DF93CDB7DEB72F970FB6F894DEBF9E
:1021A0000FBECDBF0E94360760E08FE09CE00E942A
:1021B000AA0860E080E29CE00E94AA0860E086E253
:1021C0009CE00E94AA0860E08CE29CE00E94AA08C1
:1021D00060E082E39CE00E94AA0860E088E39CE063
:1021E0000E94AA0840E065E081E00E94861112E0AA
:1021F0000E94020E813041F420E04EE35CE066E094
:10220000822F0E94E1085CC00E9436074AE050E03D
:10221000BE016F5F7F4F812F99270E94F01260E00F
:10222000CE0101960E94EA0882E3809361008091CA
:1022300061008823E1F70E943607812F0E94A10EDA
:10224000682F8091E6048823E1F38091E6048230D0
:1022500009F41F5F8091E604813009F411501F3F9B
:1022600011F41CE003C01D3008F010E08091E6047A
:10227000883019F4812F0E946A0F8091E60484301F
:1022800019F60E94360760E086E49CE00E94AA08E6
:1022900040E062E081E00E948611813061F460E0FC
:1022A00089E69CE00E94AA0885E00E942C0E60E06E
:1022B00080E79CE003C060E088E89CE00E94AA08F8
:1022C00084E680936100809161008823E1F72F9676
:1022D0000FB6F894DEBF0FBECDBFDF91CF911F9137
:1022E00008950F931F93062F142F20E04CE95CE014
:1022F000682F812F0E94E10820E04EE95CE0602F0A
:10230000812F0E94E1081F910F910895EF92FF9293
:102310000F931F93CF93F82EE62E042FC82F182F5C
:10232000682F0E9471118091E6048823E1F7809163
:10233000E6048823E1F38091E604823019F4CE1597
:1023400008F4CF5F8091E604813019F4FC1608F49C
:10235000C150402F6C2F812F0E9471111C2F809132
:10236000E604883021F08091E6048430E1F6809123
:10237000E604843009F4CFEF8091E6048823E1F786
:102380008C2F9927CF911F910F91FF90EF90089577
:102390000E94360760E080EA9CE00E94AA0860E0A4
:1023A00087EB9CE00E94AA0860E083EC9CE00E941E
:1023B000AA0860E08FEC9CE00E94AA084AE064E072
:1023C00082E00E94861199278330910561F0843064
:1023D00091051CF4029721F00895049739F00895AF
:1023E0000E94231208950E94C71008950E9483122C
:1023F0000895CF93C0E093E29093630491E69093A5
:10240000640498E69093650480936604C09367041F
:10241000C093680486E00E94BC0C0E94950C813039
:1024200009F4CAE0CF5F8091EA048053853010F050
:10243000CA3098F3CA3018F081E090E002C080E022
:1024400090E0CF9108950F931F93CF93DF93CDB773
:10245000DEB72A970FB6F894DEBF0FBECDBF0E943D
:10246000360760E089ED9CE00E94AA080091E6042E
:102470000023E1F7802F0E94F911813069F4602F69
:1024800081EE9CE00E94AA0888EC80936100809114
:1024900061008823E1F72CC01091EA0419830A83B4
:1024A000202FAE014F5F5F4F602F8AE00E941D0911
:1024B0001F5F202F43E654E0612F802F0E941D09EB
:1024C0008AE080936100809161008823E1F7809128
:1024D000E604813011F40E94F9118091E604823003
:1024E00011F40E94F9118091E604843009F0BECF06
:1024F0002A960FB6F894DEBF0FBECDBFDF91CF9105
:102500001F910F9108950E9436076091E60466239B
:10251000E1F78CEE9CE00E94AA088091E6048823F3
:10252000E1F38091E6048830C9F483E28093630488
:1025300081E68093640484E7809365048AE0809355
:102540006604809367048093680480936904109202
:102550006A0410926B0489E00E94BC0C8091E6042E
:102560008823E1F78091E6048823E1F383E28093F6
:10257000630481E68093640484E780936504109289
:102580006604109267041092680410926904109215
:102590006A0410926B0489E00E94BC0C0895FB0150
:1025A0009F01E8944230C4F04532B4F44A3029F433
:1025B00097FB1EF4909581959F4F642F77270E947B
:1025C0002213805D8A330CF0895D8193CB010097E3
:1025D000A1F716F45DE251931082C9010C94061321
:1025E000FB019F01423074F0453264F4642F772779
:1025F0000E942213805D8A330CF0895D8193CB01A8
:102600000097A1F71082C9010C940613DC01FC01AC
:1026100001900020E9F73297AE17BF0730F47C91A4
:102620006081708331976D93F7CF0895991B79E09E
:1026300004C0991F961708F0961B881F7A95C9F752
:1026400080950895AA1BBB1B51E107C0AA1FBB1FA1
:10265000A617B70710F0A61BB70B881F991F5A952E
:0C266000A9F780959095BC01CD0108956C
:00000001FF
/Transportables_Koptertool/trunk/main.lss
0,0 → 1,5331
 
main.elf: file format elf32-avr
 
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000266c 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000266c 00002700 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000527 00800060 00800060 00002700 2**0
ALLOC
3 .noinit 00000000 00800587 00800587 00002700 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00002700 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00002700 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00002a6c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 000000c8 00000000 00000000 00002af0 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000902 00000000 00000000 00002bb8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00001dfa 00000000 00000000 000034ba 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000098e 00000000 00000000 000052b4 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00001982 00000000 00000000 00005c42 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000004dc 00000000 00000000 000075c4 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 0000000c 0000266c 0000266c 00007aa0 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
 
00000000 <__vectors>:
0: 0c 94 7e 06 jmp 0xcfc <__init>
4: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
8: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
10: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
14: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
18: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
1c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
20: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
24: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
28: 0c 94 b5 06 jmp 0xd6a <__vector_10>
2c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
30: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
34: 0c 94 f8 0b jmp 0x17f0 <__vector_13>
38: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
3c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
40: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
44: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
48: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
4c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
50: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
 
00000054 <__ctors_end>:
54: 00 00 nop
56: 00 00 nop
58: 00 00 nop
5a: 3e 5b subi r19, 0xBE ; 190
5c: 4f 5b subi r20, 0xBF ; 191
5e: 3e 00 .word 0x003e ; ????
60: 3e 6b ori r19, 0xBE ; 190
62: 4f 6b ori r20, 0xBF ; 191
64: 3e 00 .word 0x003e ; ????
66: 1c 3e cpi r17, 0xEC ; 236
68: 7c 3e cpi r23, 0xEC ; 236
6a: 1c 00 .word 0x001c ; ????
6c: 18 3c cpi r17, 0xC8 ; 200
6e: 7e 3c cpi r23, 0xCE ; 206
70: 18 00 .word 0x0018 ; ????
72: 1c 57 subi r17, 0x7C ; 124
74: 7d 57 subi r23, 0x7D ; 125
76: 1c 00 .word 0x001c ; ????
78: 1c 5e subi r17, 0xEC ; 236
7a: 7f 5e subi r23, 0xEF ; 239
7c: 1c 00 .word 0x001c ; ????
7e: 00 18 sub r0, r0
80: 3c 18 sub r3, r12
82: 00 00 nop
84: ff e7 ldi r31, 0x7F ; 127
86: c3 e7 ldi r28, 0x73 ; 115
88: ff 00 .word 0x00ff ; ????
8a: 00 18 sub r0, r0
8c: 24 18 sub r2, r4
8e: 00 00 nop
90: ff e7 ldi r31, 0x7F ; 127
92: db e7 ldi r29, 0x7B ; 123
94: ff 00 .word 0x00ff ; ????
96: 30 48 sbci r19, 0x80 ; 128
98: 3a 06 cpc r3, r26
9a: 0e 00 .word 0x000e ; ????
9c: 26 29 or r18, r6
9e: 79 29 or r23, r9
a0: 26 00 .word 0x0026 ; ????
a2: 40 7f andi r20, 0xF0 ; 240
a4: 05 05 cpc r16, r5
a6: 07 00 .word 0x0007 ; ????
a8: 40 7f andi r20, 0xF0 ; 240
aa: 05 25 eor r16, r5
ac: 3f 00 .word 0x003f ; ????
ae: 5a 3c cpi r21, 0xCA ; 202
b0: e7 3c cpi r30, 0xC7 ; 199
b2: 5a 00 .word 0x005a ; ????
b4: 7f 3e cpi r23, 0xEF ; 239
b6: 1c 1c adc r1, r12
b8: 08 00 .word 0x0008 ; ????
ba: 08 1c adc r0, r8
bc: 1c 3e cpi r17, 0xEC ; 236
be: 7f 00 .word 0x007f ; ????
c0: 14 22 and r1, r20
c2: 7f 22 and r7, r31
c4: 14 00 .word 0x0014 ; ????
c6: 5f 5f subi r21, 0xFF ; 255
c8: 00 5f subi r16, 0xF0 ; 240
ca: 5f 00 .word 0x005f ; ????
cc: 06 09 sbc r16, r6
ce: 7f 01 movw r14, r30
d0: 7f 00 .word 0x007f ; ????
d2: 00 66 ori r16, 0x60 ; 96
d4: 89 95 .word 0x9589 ; ????
d6: 6a 00 .word 0x006a ; ????
d8: 60 60 ori r22, 0x00 ; 0
da: 60 60 ori r22, 0x00 ; 0
dc: 60 60 ori r22, 0x00 ; 0
de: 94 a2 std Z+36, r9 ; 0x24
e0: ff a2 std Y+39, r15 ; 0x27
e2: 94 00 .word 0x0094 ; ????
e4: 08 04 cpc r0, r8
e6: 7e 04 cpc r7, r14
e8: 08 00 .word 0x0008 ; ????
ea: 10 20 and r1, r0
ec: 7e 20 and r7, r14
ee: 10 00 .word 0x0010 ; ????
f0: 08 08 sbc r0, r8
f2: 2a 1c adc r2, r10
f4: 08 00 .word 0x0008 ; ????
f6: 08 1c adc r0, r8
f8: 2a 08 sbc r2, r10
fa: 08 00 .word 0x0008 ; ????
fc: 1e 10 cpse r1, r14
fe: 10 10 cpse r1, r0
100: 10 00 .word 0x0010 ; ????
102: 0c 1e adc r0, r28
104: 0c 1e adc r0, r28
106: 0c 00 .word 0x000c ; ????
108: 30 38 cpi r19, 0x80 ; 128
10a: 3e 38 cpi r19, 0x8E ; 142
10c: 30 00 .word 0x0030 ; ????
10e: 06 0e add r0, r22
110: 3e 0e add r3, r30
112: 06 00 .word 0x0006 ; ????
...
11c: 5f 00 .word 0x005f ; ????
11e: 00 00 nop
120: 00 07 cpc r16, r16
122: 00 07 cpc r16, r16
124: 00 00 nop
126: 14 7f andi r17, 0xF4 ; 244
128: 14 7f andi r17, 0xF4 ; 244
12a: 14 00 .word 0x0014 ; ????
12c: 24 2a or r2, r20
12e: 7f 2a or r7, r31
130: 12 00 .word 0x0012 ; ????
132: 23 13 cpse r18, r19
134: 08 64 ori r16, 0x48 ; 72
136: 62 00 .word 0x0062 ; ????
138: 36 49 sbci r19, 0x96 ; 150
13a: 56 20 and r5, r6
13c: 50 00 .word 0x0050 ; ????
13e: 00 08 sbc r0, r0
140: 07 03 mulsu r16, r23
142: 00 00 nop
144: 00 1c adc r0, r0
146: 22 41 sbci r18, 0x12 ; 18
148: 00 00 nop
14a: 00 41 sbci r16, 0x10 ; 16
14c: 22 1c adc r2, r2
14e: 00 00 nop
150: 2a 1c adc r2, r10
152: 7f 1c adc r7, r15
154: 2a 00 .word 0x002a ; ????
156: 08 08 sbc r0, r8
158: 3e 08 sbc r3, r14
15a: 08 00 .word 0x0008 ; ????
15c: 00 80 ld r0, Z
15e: 70 30 cpi r23, 0x00 ; 0
160: 00 00 nop
162: 08 08 sbc r0, r8
164: 08 08 sbc r0, r8
166: 08 00 .word 0x0008 ; ????
168: 00 00 nop
16a: 60 60 ori r22, 0x00 ; 0
16c: 00 00 nop
16e: 20 10 cpse r2, r0
170: 08 04 cpc r0, r8
172: 02 00 .word 0x0002 ; ????
174: 3e 51 subi r19, 0x1E ; 30
176: 49 45 sbci r20, 0x59 ; 89
178: 3e 00 .word 0x003e ; ????
17a: 00 42 sbci r16, 0x20 ; 32
17c: 7f 40 sbci r23, 0x0F ; 15
17e: 00 00 nop
180: 72 49 sbci r23, 0x92 ; 146
182: 49 49 sbci r20, 0x99 ; 153
184: 46 00 .word 0x0046 ; ????
186: 21 41 sbci r18, 0x11 ; 17
188: 49 4d sbci r20, 0xD9 ; 217
18a: 33 00 .word 0x0033 ; ????
18c: 18 14 cp r1, r8
18e: 12 7f andi r17, 0xF2 ; 242
190: 10 00 .word 0x0010 ; ????
192: 27 45 sbci r18, 0x57 ; 87
194: 45 45 sbci r20, 0x55 ; 85
196: 39 00 .word 0x0039 ; ????
198: 3c 4a sbci r19, 0xAC ; 172
19a: 49 49 sbci r20, 0x99 ; 153
19c: 31 00 .word 0x0031 ; ????
19e: 41 21 and r20, r1
1a0: 11 09 sbc r17, r1
1a2: 07 00 .word 0x0007 ; ????
1a4: 36 49 sbci r19, 0x96 ; 150
1a6: 49 49 sbci r20, 0x99 ; 153
1a8: 36 00 .word 0x0036 ; ????
1aa: 46 49 sbci r20, 0x96 ; 150
1ac: 49 29 or r20, r9
1ae: 1e 00 .word 0x001e ; ????
1b0: 00 00 nop
1b2: 14 00 .word 0x0014 ; ????
1b4: 00 00 nop
1b6: 00 40 sbci r16, 0x00 ; 0
1b8: 34 00 .word 0x0034 ; ????
1ba: 00 00 nop
1bc: 00 08 sbc r0, r0
1be: 14 22 and r1, r20
1c0: 41 00 .word 0x0041 ; ????
1c2: 14 14 cp r1, r4
1c4: 14 14 cp r1, r4
1c6: 14 00 .word 0x0014 ; ????
1c8: 00 41 sbci r16, 0x10 ; 16
1ca: 22 14 cp r2, r2
1cc: 08 00 .word 0x0008 ; ????
1ce: 02 01 movw r0, r4
1d0: 59 09 sbc r21, r9
1d2: 06 00 .word 0x0006 ; ????
1d4: 3e 41 sbci r19, 0x1E ; 30
1d6: 5d 59 subi r21, 0x9D ; 157
1d8: 4e 00 .word 0x004e ; ????
1da: 7c 12 cpse r7, r28
1dc: 11 12 cpse r1, r17
1de: 7c 00 .word 0x007c ; ????
1e0: 7f 49 sbci r23, 0x9F ; 159
1e2: 49 49 sbci r20, 0x99 ; 153
1e4: 36 00 .word 0x0036 ; ????
1e6: 3e 41 sbci r19, 0x1E ; 30
1e8: 41 41 sbci r20, 0x11 ; 17
1ea: 22 00 .word 0x0022 ; ????
1ec: 7f 41 sbci r23, 0x1F ; 31
1ee: 41 41 sbci r20, 0x11 ; 17
1f0: 3e 00 .word 0x003e ; ????
1f2: 7f 49 sbci r23, 0x9F ; 159
1f4: 49 49 sbci r20, 0x99 ; 153
1f6: 41 00 .word 0x0041 ; ????
1f8: 7f 09 sbc r23, r15
1fa: 09 09 sbc r16, r9
1fc: 01 00 .word 0x0001 ; ????
1fe: 3e 41 sbci r19, 0x1E ; 30
200: 41 51 subi r20, 0x11 ; 17
202: 73 00 .word 0x0073 ; ????
204: 7f 08 sbc r7, r15
206: 08 08 sbc r0, r8
208: 7f 00 .word 0x007f ; ????
20a: 00 41 sbci r16, 0x10 ; 16
20c: 7f 41 sbci r23, 0x1F ; 31
20e: 00 00 nop
210: 20 40 sbci r18, 0x00 ; 0
212: 41 3f cpi r20, 0xF1 ; 241
214: 01 00 .word 0x0001 ; ????
216: 7f 08 sbc r7, r15
218: 14 22 and r1, r20
21a: 41 00 .word 0x0041 ; ????
21c: 7f 40 sbci r23, 0x0F ; 15
21e: 40 40 sbci r20, 0x00 ; 0
220: 40 00 .word 0x0040 ; ????
222: 7f 02 muls r23, r31
224: 1c 02 muls r17, r28
226: 7f 00 .word 0x007f ; ????
228: 7f 04 cpc r7, r15
22a: 08 10 cpse r0, r8
22c: 7f 00 .word 0x007f ; ????
22e: 3e 41 sbci r19, 0x1E ; 30
230: 41 41 sbci r20, 0x11 ; 17
232: 3e 00 .word 0x003e ; ????
234: 7f 09 sbc r23, r15
236: 09 09 sbc r16, r9
238: 06 00 .word 0x0006 ; ????
23a: 3e 41 sbci r19, 0x1E ; 30
23c: 51 21 and r21, r1
23e: 5e 00 .word 0x005e ; ????
240: 7f 09 sbc r23, r15
242: 19 29 or r17, r9
244: 46 00 .word 0x0046 ; ????
246: 26 49 sbci r18, 0x96 ; 150
248: 49 49 sbci r20, 0x99 ; 153
24a: 32 00 .word 0x0032 ; ????
24c: 03 01 movw r0, r6
24e: 7f 01 movw r14, r30
250: 03 00 .word 0x0003 ; ????
252: 3f 40 sbci r19, 0x0F ; 15
254: 40 40 sbci r20, 0x00 ; 0
256: 3f 00 .word 0x003f ; ????
258: 1f 20 and r1, r15
25a: 40 20 and r4, r0
25c: 1f 00 .word 0x001f ; ????
25e: 3f 40 sbci r19, 0x0F ; 15
260: 38 40 sbci r19, 0x08 ; 8
262: 3f 00 .word 0x003f ; ????
264: 63 14 cp r6, r3
266: 08 14 cp r0, r8
268: 63 00 .word 0x0063 ; ????
26a: 03 04 cpc r0, r3
26c: 78 04 cpc r7, r8
26e: 03 00 .word 0x0003 ; ????
270: 61 59 subi r22, 0x91 ; 145
272: 49 4d sbci r20, 0xD9 ; 217
274: 43 00 .word 0x0043 ; ????
276: 00 7f andi r16, 0xF0 ; 240
278: 41 41 sbci r20, 0x11 ; 17
27a: 41 00 .word 0x0041 ; ????
27c: 02 04 cpc r0, r2
27e: 08 10 cpse r0, r8
280: 20 00 .word 0x0020 ; ????
282: 00 41 sbci r16, 0x10 ; 16
284: 41 41 sbci r20, 0x11 ; 17
286: 7f 00 .word 0x007f ; ????
288: 04 02 muls r16, r20
28a: 01 02 muls r16, r17
28c: 04 00 .word 0x0004 ; ????
28e: 40 40 sbci r20, 0x00 ; 0
290: 40 40 sbci r20, 0x00 ; 0
292: 40 00 .word 0x0040 ; ????
294: 00 03 mulsu r16, r16
296: 07 08 sbc r0, r7
298: 00 00 nop
29a: 20 54 subi r18, 0x40 ; 64
29c: 54 78 andi r21, 0x84 ; 132
29e: 40 00 .word 0x0040 ; ????
2a0: 7f 28 or r7, r15
2a2: 44 44 sbci r20, 0x44 ; 68
2a4: 38 00 .word 0x0038 ; ????
2a6: 38 44 sbci r19, 0x48 ; 72
2a8: 44 44 sbci r20, 0x44 ; 68
2aa: 28 00 .word 0x0028 ; ????
2ac: 38 44 sbci r19, 0x48 ; 72
2ae: 44 28 or r4, r4
2b0: 7f 00 .word 0x007f ; ????
2b2: 38 54 subi r19, 0x48 ; 72
2b4: 54 54 subi r21, 0x44 ; 68
2b6: 18 00 .word 0x0018 ; ????
2b8: 00 08 sbc r0, r0
2ba: 7e 09 sbc r23, r14
2bc: 02 00 .word 0x0002 ; ????
2be: 18 a4 ldd r1, Y+40 ; 0x28
2c0: a4 9c mul r10, r4
2c2: 78 00 .word 0x0078 ; ????
2c4: 7f 08 sbc r7, r15
2c6: 04 04 cpc r0, r4
2c8: 78 00 .word 0x0078 ; ????
2ca: 00 44 sbci r16, 0x40 ; 64
2cc: 7d 40 sbci r23, 0x0D ; 13
2ce: 00 00 nop
2d0: 20 40 sbci r18, 0x00 ; 0
2d2: 40 3d cpi r20, 0xD0 ; 208
2d4: 00 00 nop
2d6: 7f 10 cpse r7, r15
2d8: 28 44 sbci r18, 0x48 ; 72
2da: 00 00 nop
2dc: 00 41 sbci r16, 0x10 ; 16
2de: 7f 40 sbci r23, 0x0F ; 15
2e0: 00 00 nop
2e2: 7c 04 cpc r7, r12
2e4: 78 04 cpc r7, r8
2e6: 78 00 .word 0x0078 ; ????
2e8: 7c 08 sbc r7, r12
2ea: 04 04 cpc r0, r4
2ec: 78 00 .word 0x0078 ; ????
2ee: 38 44 sbci r19, 0x48 ; 72
2f0: 44 44 sbci r20, 0x44 ; 68
2f2: 38 00 .word 0x0038 ; ????
2f4: fc 18 sub r15, r12
2f6: 24 24 eor r2, r4
2f8: 18 00 .word 0x0018 ; ????
2fa: 18 24 eor r1, r8
2fc: 24 18 sub r2, r4
2fe: fc 00 .word 0x00fc ; ????
300: 7c 08 sbc r7, r12
302: 04 04 cpc r0, r4
304: 08 00 .word 0x0008 ; ????
306: 48 54 subi r20, 0x48 ; 72
308: 54 54 subi r21, 0x44 ; 68
30a: 24 00 .word 0x0024 ; ????
30c: 04 04 cpc r0, r4
30e: 3f 44 sbci r19, 0x4F ; 79
310: 24 00 .word 0x0024 ; ????
312: 3c 40 sbci r19, 0x0C ; 12
314: 40 20 and r4, r0
316: 7c 00 .word 0x007c ; ????
318: 1c 20 and r1, r12
31a: 40 20 and r4, r0
31c: 1c 00 .word 0x001c ; ????
31e: 3c 40 sbci r19, 0x0C ; 12
320: 30 40 sbci r19, 0x00 ; 0
322: 3c 00 .word 0x003c ; ????
324: 44 28 or r4, r4
326: 10 28 or r1, r0
328: 44 00 .word 0x0044 ; ????
32a: 4c 90 ld r4, X
32c: 90 90 7c 00 lds r9, 0x007C
330: 44 64 ori r20, 0x44 ; 68
332: 54 4c sbci r21, 0xC4 ; 196
334: 44 00 .word 0x0044 ; ????
336: 00 08 sbc r0, r0
338: 36 41 sbci r19, 0x16 ; 22
33a: 00 00 nop
33c: 00 00 nop
33e: 77 00 .word 0x0077 ; ????
340: 00 00 nop
342: 00 41 sbci r16, 0x10 ; 16
344: 36 08 sbc r3, r6
346: 00 00 nop
348: 02 01 movw r0, r4
34a: 02 04 cpc r0, r2
34c: 02 00 .word 0x0002 ; ????
34e: 3c 26 eor r3, r28
350: 23 26 eor r2, r19
352: 3c 00 .word 0x003c ; ????
354: 1e a1 ldd r17, Y+38 ; 0x26
356: a1 61 ori r26, 0x11 ; 17
358: 12 00 .word 0x0012 ; ????
35a: 3a 40 sbci r19, 0x0A ; 10
35c: 40 20 and r4, r0
35e: 7a 00 .word 0x007a ; ????
360: 38 54 subi r19, 0x48 ; 72
362: 54 55 subi r21, 0x54 ; 84
364: 59 00 .word 0x0059 ; ????
366: 21 55 subi r18, 0x51 ; 81
368: 55 79 andi r21, 0x95 ; 149
36a: 41 00 .word 0x0041 ; ????
36c: 21 54 subi r18, 0x41 ; 65
36e: 54 78 andi r21, 0x84 ; 132
370: 41 00 .word 0x0041 ; ????
372: 21 55 subi r18, 0x51 ; 81
374: 54 78 andi r21, 0x84 ; 132
376: 40 00 .word 0x0040 ; ????
378: 20 54 subi r18, 0x40 ; 64
37a: 55 79 andi r21, 0x95 ; 149
37c: 40 00 .word 0x0040 ; ????
37e: 0c 1e adc r0, r28
380: 52 72 andi r21, 0x22 ; 34
382: 12 00 .word 0x0012 ; ????
384: 39 55 subi r19, 0x59 ; 89
386: 55 55 subi r21, 0x55 ; 85
388: 59 00 .word 0x0059 ; ????
38a: 39 54 subi r19, 0x49 ; 73
38c: 54 54 subi r21, 0x44 ; 68
38e: 59 00 .word 0x0059 ; ????
390: 39 55 subi r19, 0x59 ; 89
392: 54 54 subi r21, 0x44 ; 68
394: 58 00 .word 0x0058 ; ????
396: 00 00 nop
398: 45 7c andi r20, 0xC5 ; 197
39a: 41 00 .word 0x0041 ; ????
39c: 00 02 muls r16, r16
39e: 45 7d andi r20, 0xD5 ; 213
3a0: 42 00 .word 0x0042 ; ????
3a2: 00 01 movw r0, r0
3a4: 45 7c andi r20, 0xC5 ; 197
3a6: 40 00 .word 0x0040 ; ????
3a8: 79 14 cp r7, r9
3aa: 12 14 cp r1, r2
3ac: 79 00 .word 0x0079 ; ????
3ae: f0 28 or r15, r0
3b0: 25 28 or r2, r5
3b2: f0 00 .word 0x00f0 ; ????
3b4: 7c 54 subi r23, 0x4C ; 76
3b6: 55 45 sbci r21, 0x55 ; 85
3b8: 00 00 nop
3ba: 20 54 subi r18, 0x40 ; 64
3bc: 54 7c andi r21, 0xC4 ; 196
3be: 54 44 sbci r21, 0x44 ; 68
3c0: 7c 0a sbc r7, r28
3c2: 09 7f andi r16, 0xF9 ; 249
3c4: 49 41 sbci r20, 0x19 ; 25
3c6: 32 49 sbci r19, 0x92 ; 146
3c8: 49 49 sbci r20, 0x99 ; 153
3ca: 32 00 .word 0x0032 ; ????
3cc: 32 48 sbci r19, 0x82 ; 130
3ce: 48 48 sbci r20, 0x88 ; 136
3d0: 32 00 .word 0x0032 ; ????
3d2: 32 4a sbci r19, 0xA2 ; 162
3d4: 48 48 sbci r20, 0x88 ; 136
3d6: 30 00 .word 0x0030 ; ????
3d8: 3a 41 sbci r19, 0x1A ; 26
3da: 41 21 and r20, r1
3dc: 7a 00 .word 0x007a ; ????
3de: 3a 42 sbci r19, 0x2A ; 42
3e0: 40 20 and r4, r0
3e2: 78 00 .word 0x0078 ; ????
3e4: 00 9d mul r16, r0
3e6: a0 a0 ldd r10, Z+32 ; 0x20
3e8: 7d 00 .word 0x007d ; ????
3ea: 39 44 sbci r19, 0x49 ; 73
3ec: 44 44 sbci r20, 0x44 ; 68
3ee: 39 00 .word 0x0039 ; ????
3f0: 3d 40 sbci r19, 0x0D ; 13
3f2: 40 40 sbci r20, 0x00 ; 0
3f4: 3d 00 .word 0x003d ; ????
3f6: 3c 24 eor r3, r12
3f8: ff 24 eor r15, r15
3fa: 24 00 .word 0x0024 ; ????
3fc: 48 7e andi r20, 0xE8 ; 232
3fe: 49 43 sbci r20, 0x39 ; 57
400: 66 00 .word 0x0066 ; ????
402: 2b 2f mov r18, r27
404: fc 2f mov r31, r28
406: 2b 00 .word 0x002b ; ????
408: ff 09 sbc r31, r15
40a: 29 f6 brne .-118 ; 0x396 <__ctors_end+0x342>
40c: 20 00 .word 0x0020 ; ????
40e: c0 88 ldd r12, Z+16 ; 0x10
410: 7e 09 sbc r23, r14
412: 03 00 .word 0x0003 ; ????
414: 20 54 subi r18, 0x40 ; 64
416: 54 79 andi r21, 0x94 ; 148
418: 41 00 .word 0x0041 ; ????
41a: 00 00 nop
41c: 44 7d andi r20, 0xD4 ; 212
41e: 41 00 .word 0x0041 ; ????
420: 30 48 sbci r19, 0x80 ; 128
422: 48 4a sbci r20, 0xA8 ; 168
424: 32 00 .word 0x0032 ; ????
426: 38 40 sbci r19, 0x08 ; 8
428: 40 22 and r4, r16
42a: 7a 00 .word 0x007a ; ????
42c: 00 7a andi r16, 0xA0 ; 160
42e: 0a 0a sbc r0, r26
430: 72 00 .word 0x0072 ; ????
432: 7d 0d add r23, r13
434: 19 31 cpi r17, 0x19 ; 25
436: 7d 00 .word 0x007d ; ????
438: 26 29 or r18, r6
43a: 29 2f mov r18, r25
43c: 28 00 .word 0x0028 ; ????
43e: 26 29 or r18, r6
440: 29 29 or r18, r9
442: 26 00 .word 0x0026 ; ????
444: 30 48 sbci r19, 0x80 ; 128
446: 4d 40 sbci r20, 0x0D ; 13
448: 20 00 .word 0x0020 ; ????
44a: 38 08 sbc r3, r8
44c: 08 08 sbc r0, r8
44e: 08 00 .word 0x0008 ; ????
450: 08 08 sbc r0, r8
452: 08 08 sbc r0, r8
454: 38 00 .word 0x0038 ; ????
456: 2f 10 cpse r2, r15
458: c8 ac ldd r12, Y+56 ; 0x38
45a: ba 00 .word 0x00ba ; ????
45c: 2f 10 cpse r2, r15
45e: 28 34 cpi r18, 0x48 ; 72
460: fa 00 .word 0x00fa ; ????
462: 00 00 nop
464: 7b 00 .word 0x007b ; ????
466: 00 00 nop
468: 08 14 cp r0, r8
46a: 2a 14 cp r2, r10
46c: 22 00 .word 0x0022 ; ????
46e: 22 14 cp r2, r2
470: 2a 14 cp r2, r10
472: 08 00 .word 0x0008 ; ????
474: aa 00 .word 0x00aa ; ????
476: 55 00 .word 0x0055 ; ????
478: aa 00 .word 0x00aa ; ????
47a: aa 55 subi r26, 0x5A ; 90
47c: aa 55 subi r26, 0x5A ; 90
47e: aa 55 subi r26, 0x5A ; 90
480: 55 aa std Z+53, r5 ; 0x35
482: 55 aa std Z+53, r5 ; 0x35
484: 55 aa std Z+53, r5 ; 0x35
486: 00 00 nop
488: 00 ff sbrs r16, 0
48a: 00 00 nop
48c: 10 10 cpse r1, r0
48e: 10 ff sbrs r17, 0
490: 00 00 nop
492: 14 14 cp r1, r4
494: 14 ff sbrs r17, 4
496: 00 00 nop
498: 10 10 cpse r1, r0
49a: ff 00 .word 0x00ff ; ????
49c: ff 00 .word 0x00ff ; ????
49e: 10 10 cpse r1, r0
4a0: f0 10 cpse r15, r0
4a2: f0 00 .word 0x00f0 ; ????
4a4: 14 14 cp r1, r4
4a6: 14 fc sbrc r1, 4
4a8: 00 00 nop
4aa: 14 14 cp r1, r4
4ac: f7 00 .word 0x00f7 ; ????
4ae: ff 00 .word 0x00ff ; ????
4b0: 00 00 nop
4b2: ff 00 .word 0x00ff ; ????
4b4: ff 00 .word 0x00ff ; ????
4b6: 14 14 cp r1, r4
4b8: f4 04 cpc r15, r4
4ba: fc 00 .word 0x00fc ; ????
4bc: 14 14 cp r1, r4
4be: 17 10 cpse r1, r7
4c0: 1f 00 .word 0x001f ; ????
4c2: 10 10 cpse r1, r0
4c4: 1f 10 cpse r1, r15
4c6: 1f 00 .word 0x001f ; ????
4c8: 14 14 cp r1, r4
4ca: 14 1f adc r17, r20
4cc: 00 00 nop
4ce: 10 10 cpse r1, r0
4d0: 10 f0 brcs .+4 ; 0x4d6 <__ctors_end+0x482>
4d2: 00 00 nop
4d4: 00 00 nop
4d6: 00 1f adc r16, r16
4d8: 10 10 cpse r1, r0
4da: 10 10 cpse r1, r0
4dc: 10 1f adc r17, r16
4de: 10 10 cpse r1, r0
4e0: 10 10 cpse r1, r0
4e2: 10 f0 brcs .+4 ; 0x4e8 <__ctors_end+0x494>
4e4: 10 10 cpse r1, r0
4e6: 00 00 nop
4e8: 00 ff sbrs r16, 0
4ea: 10 10 cpse r1, r0
4ec: 10 10 cpse r1, r0
4ee: 10 10 cpse r1, r0
4f0: 10 10 cpse r1, r0
4f2: 10 10 cpse r1, r0
4f4: 10 ff sbrs r17, 0
4f6: 10 10 cpse r1, r0
4f8: 00 00 nop
4fa: 00 ff sbrs r16, 0
4fc: 14 14 cp r1, r4
4fe: 00 00 nop
500: ff 00 .word 0x00ff ; ????
502: ff 10 cpse r15, r15
504: 00 00 nop
506: 1f 10 cpse r1, r15
508: 17 14 cp r1, r7
50a: 00 00 nop
50c: fc 04 cpc r15, r12
50e: f4 14 cp r15, r4
510: 14 14 cp r1, r4
512: 17 10 cpse r1, r7
514: 17 14 cp r1, r7
516: 14 14 cp r1, r4
518: f4 04 cpc r15, r4
51a: f4 14 cp r15, r4
51c: 00 00 nop
51e: ff 00 .word 0x00ff ; ????
520: f7 14 cp r15, r7
522: 14 14 cp r1, r4
524: 14 14 cp r1, r4
526: 14 14 cp r1, r4
528: 14 14 cp r1, r4
52a: f7 00 .word 0x00f7 ; ????
52c: f7 14 cp r15, r7
52e: 14 14 cp r1, r4
530: 14 17 cp r17, r20
532: 14 14 cp r1, r4
534: 10 10 cpse r1, r0
536: 1f 10 cpse r1, r15
538: 1f 10 cpse r1, r15
53a: 14 14 cp r1, r4
53c: 14 f4 brge .+4 ; 0x542 <__ctors_end+0x4ee>
53e: 14 14 cp r1, r4
540: 10 10 cpse r1, r0
542: f0 10 cpse r15, r0
544: f0 10 cpse r15, r0
546: 00 00 nop
548: 1f 10 cpse r1, r15
54a: 1f 10 cpse r1, r15
54c: 00 00 nop
54e: 00 1f adc r16, r16
550: 14 14 cp r1, r4
552: 00 00 nop
554: 00 fc sbrc r0, 0
556: 14 14 cp r1, r4
558: 00 00 nop
55a: f0 10 cpse r15, r0
55c: f0 10 cpse r15, r0
55e: 10 10 cpse r1, r0
560: ff 10 cpse r15, r15
562: ff 10 cpse r15, r15
564: 14 14 cp r1, r4
566: 14 ff sbrs r17, 4
568: 14 14 cp r1, r4
56a: 10 10 cpse r1, r0
56c: 10 1f adc r17, r16
56e: 00 00 nop
570: 00 00 nop
572: 00 f0 brcs .+0 ; 0x574 <__ctors_end+0x520>
574: 10 10 cpse r1, r0
576: ff ff .word 0xffff ; ????
578: ff ff .word 0xffff ; ????
57a: ff ff .word 0xffff ; ????
57c: f0 f0 brcs .+60 ; 0x5ba <__ctors_end+0x566>
57e: f0 f0 brcs .+60 ; 0x5bc <__ctors_end+0x568>
580: f0 f0 brcs .+60 ; 0x5be <__ctors_end+0x56a>
582: ff ff .word 0xffff ; ????
584: ff 00 .word 0x00ff ; ????
586: 00 00 nop
588: 00 00 nop
58a: 00 ff sbrs r16, 0
58c: ff ff .word 0xffff ; ????
58e: 0f 0f add r16, r31
590: 0f 0f add r16, r31
592: 0f 0f add r16, r31
594: 38 44 sbci r19, 0x48 ; 72
596: 44 38 cpi r20, 0x84 ; 132
598: 44 00 .word 0x0044 ; ????
59a: 7c 2a or r7, r28
59c: 2a 3e cpi r18, 0xEA ; 234
59e: 14 00 .word 0x0014 ; ????
5a0: 7e 02 muls r23, r30
5a2: 02 06 cpc r0, r18
5a4: 06 00 .word 0x0006 ; ????
5a6: 02 7e andi r16, 0xE2 ; 226
5a8: 02 7e andi r16, 0xE2 ; 226
5aa: 02 00 .word 0x0002 ; ????
5ac: 63 55 subi r22, 0x53 ; 83
5ae: 49 41 sbci r20, 0x19 ; 25
5b0: 63 00 .word 0x0063 ; ????
5b2: 38 44 sbci r19, 0x48 ; 72
5b4: 44 3c cpi r20, 0xC4 ; 196
5b6: 04 00 .word 0x0004 ; ????
5b8: 40 7e andi r20, 0xE0 ; 224
5ba: 20 1e adc r2, r16
5bc: 20 00 .word 0x0020 ; ????
5be: 06 02 muls r16, r22
5c0: 7e 02 muls r23, r30
5c2: 02 00 .word 0x0002 ; ????
5c4: 99 a5 ldd r25, Y+41 ; 0x29
5c6: e7 a5 ldd r30, Z+47 ; 0x2f
5c8: 99 00 .word 0x0099 ; ????
5ca: 1c 2a or r1, r28
5cc: 49 2a or r4, r25
5ce: 1c 00 .word 0x001c ; ????
5d0: 4c 72 andi r20, 0x2C ; 44
5d2: 01 72 andi r16, 0x21 ; 33
5d4: 4c 00 .word 0x004c ; ????
5d6: 30 4a sbci r19, 0xA0 ; 160
5d8: 4d 4d sbci r20, 0xDD ; 221
5da: 30 00 .word 0x0030 ; ????
5dc: 30 48 sbci r19, 0x80 ; 128
5de: 78 48 sbci r23, 0x88 ; 136
5e0: 30 00 .word 0x0030 ; ????
5e2: bc 62 ori r27, 0x2C ; 44
5e4: 5a 46 sbci r21, 0x6A ; 106
5e6: 3d 00 .word 0x003d ; ????
5e8: 3e 49 sbci r19, 0x9E ; 158
5ea: 49 49 sbci r20, 0x99 ; 153
5ec: 00 00 nop
5ee: 7e 01 movw r14, r28
5f0: 01 01 movw r0, r2
5f2: 7e 00 .word 0x007e ; ????
5f4: 2a 2a or r2, r26
5f6: 2a 2a or r2, r26
5f8: 2a 00 .word 0x002a ; ????
5fa: 44 44 sbci r20, 0x44 ; 68
5fc: 5f 44 sbci r21, 0x4F ; 79
5fe: 44 00 .word 0x0044 ; ????
600: 40 51 subi r20, 0x10 ; 16
602: 4a 44 sbci r20, 0x4A ; 74
604: 40 00 .word 0x0040 ; ????
606: 40 44 sbci r20, 0x40 ; 64
608: 4a 51 subi r20, 0x1A ; 26
60a: 40 00 .word 0x0040 ; ????
60c: 00 00 nop
60e: ff 01 movw r30, r30
610: 03 00 .word 0x0003 ; ????
612: e0 80 ld r14, Z
614: ff 00 .word 0x00ff ; ????
616: 00 00 nop
618: 08 08 sbc r0, r8
61a: 6b 6b ori r22, 0xBB ; 187
61c: 08 08 sbc r0, r8
61e: 36 12 cpse r3, r22
620: 36 24 eor r3, r6
622: 36 00 .word 0x0036 ; ????
624: 06 0f add r16, r22
626: 09 0f add r16, r25
628: 06 00 .word 0x0006 ; ????
62a: 00 00 nop
62c: 18 18 sub r1, r8
62e: 00 00 nop
630: 00 00 nop
632: 10 10 cpse r1, r0
634: 00 00 nop
636: 30 40 sbci r19, 0x00 ; 0
638: ff 01 movw r30, r30
63a: 01 00 .word 0x0001 ; ????
63c: 00 1f adc r16, r16
63e: 01 01 movw r0, r2
640: 1e 00 .word 0x001e ; ????
642: 00 19 sub r16, r0
644: 1d 17 cp r17, r29
646: 12 00 .word 0x0012 ; ????
648: 00 3c cpi r16, 0xC0 ; 192
64a: 3c 3c cpi r19, 0xCC ; 204
64c: 3c 00 .word 0x003c ; ????
64e: 00 00 nop
650: 00 00 nop
...
 
00000654 <__c.0>:
654: 20 20 20 20 20 20 00 .
 
0000065b <parameter>:
65b: 4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00 Nick .
66b: 52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00 Roll .
67b: 47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00 Gas .
68b: 47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00 Gier............
69b: 50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00 Poti1...........
6ab: 50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00 Poti2...........
6bb: 50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00 Poti3...........
6cb: 50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00 Poti4...........
6db: 43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00 Config..........
6eb: 48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00 Hoehe_MinGas .
6fb: 4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00 Luftdruck_D .
70b: 4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00 MaxHoehe .
71b: 48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00 Hoehe_P .
72b: 48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00 Hoehe_Verstaerk.
73b: 48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00 Hoehe_ACC_Wirk..
74b: 53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00 Stick_P .
75b: 53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00 Stick_D .
76b: 47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00 Gier_P .
77b: 47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00 Gas_Min .
78b: 47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00 Gas_Max .
79b: 47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00 GyroAccFaktor...
7ab: 4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00 KompassWirkung .
7bb: 47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00 Gyro_P .........
7cb: 47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00 Gyro_I..........
7db: 55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00 Unterspannung .
7eb: 4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00 NotGas..........
7fb: 4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00 NotGasZeit .
80b: 55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00 UfoAusrichtung .
81b: 49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00 I_Faktor .
82b: 55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00 UserParam1......
83b: 55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00 UserParam2......
84b: 55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00 UserParam3......
85b: 55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00 UserParam4......
86b: 53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00 ServoNickCtrl...
87b: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00 ServoNickComp...
88b: 53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00 ServoNickMin....
89b: 53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00 ServoNickMax....
8ab: 53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00 ServoNickRefrsh.
8bb: 4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00 LoopGasLimit....
8cb: 4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00 LoopThreshold...
8db: 4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00 LoopHysterese...
8eb: 41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00 AchsKopplung....
8fb: 41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00 AchsGegenKoppl..
90b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00 WinklUmschlNick.
91b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00 WinklUmschlRoll.
92b: 47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00 GyroAccAbgleich.
93b: 44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00 Driftkomp.......
94b: 44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00 DynamicStabilit.
95b: 55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00 UserParam5......
96b: 55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00 UserParam6......
97b: 55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00 UserParam7......
98b: 55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00 UserParam8......
99b: 4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00 LoopConfig......
9ab: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00 ServoNickCompIn.
 
000009bb <bin_parameter>:
9bb: 4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00 Loop up .
9cb: 4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00 Loop down. ..
9db: 4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00 Loop left .
9eb: 4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00 Loop right .
9fb: 48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00 H.henregler .
a0b: 48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00 H.henschalter .
a1b: 48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00 Headhold........
a2b: 4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00 Kompass.........
a3b: 4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00 KompassFix......
a4b: 47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00 GPS.............
a5b: 41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00 Achsenkopplung .
a6b: 44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00 Drehrate........
 
00000a7b <p_limits>:
a7b: 01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01 ................
a8b: 08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff ................
a9b: 04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03 ........2.......
aab: 00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00 .@..... .!...2..
abb: ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa ................
acb: 08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09 ................
adb: 00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00 ................
aeb: 19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff ................
afb: 0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05 ................
b0b: 00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00 ................
b1b: 01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
 
00000b42 <p_menu_number>:
b42: 02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03 ................
b52: 03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09 ................
b62: 09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05 ................
b72: 05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c ................
b82: 0c 0c 0c ...
 
00000b85 <p_menus>:
b85: 43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e Config .Chann
b95: 65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20 els .Stick
ba5: 00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f .Hoehe .Gyro
bb5: 20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20 .Looping
bc5: 20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e .Camera .Son
bd5: 73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20 stiges .User
be5: 20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f .Coupling .Co
bf5: 6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67 nfig(2) .Looping
c05: 73 65 74 00 set.
 
00000c09 <__c.11>:
c09: 2d 00 -.
 
00000c0b <__c.12>:
c0b: 2d 00 -.
 
00000c0d <__c.13>:
c0d: 2d 00 -.
 
00000c0f <__c.0>:
c0f: 4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a Lade Parameter..
...
 
00000c20 <__c.1>:
c20: 20 31 3a 0d 0a 00 1:...
 
00000c26 <__c.2>:
c26: 20 32 3a 0d 0a 00 2:...
 
00000c2c <__c.3>:
c2c: 20 33 3a 0d 0a 00 3:...
 
00000c32 <__c.4>:
c32: 20 34 3a 0d 0a 00 4:...
 
00000c38 <__c.5>:
c38: 20 35 3a 0d 0a 00 5:...
 
00000c3e <__c.6>:
c3e: 54 69 6d 65 6f 75 74 00 Timeout.
 
00000c46 <__c.7>:
c46: 50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68 Parameter speich
c56: 65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65 ern?.. ja.. ne
c66: 69 6e 00 in.
 
00000c69 <__c.8>:
c69: 0d 0a 2d 2d 2d 3e 00 ..--->.
 
00000c70 <__c.9>:
c70: 0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70 ..Parameter gesp
c80: 65 69 63 68 65 72 74 00 eichert.
 
00000c88 <__c.10>:
c88: 0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68 ..Nicht gespeich
c98: 65 72 74 00 ert.
 
00000c9c <__c.4>:
c9c: 20 00 .
 
00000c9e <__c.5>:
c9e: 2a 00 *.
 
00000ca0 <__c.0>:
ca0: 48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56 Hauptmen.(BETA V
cb0: 30 2e 31 29 0d 0a 00 0.1)...
 
00000cb7 <__c.1>:
cb7: 0d 0a 44 69 73 70 6c 61 79 0d 0a 00 ..Display...
 
00000cc3 <__c.2>:
cc3: 50 61 72 61 6d 65 74 65 72 0d 0a 00 Parameter...
 
00000ccf <__c.3>:
ccf: 4d 6f 74 6f 72 74 65 73 74 00 Motortest.
 
00000cd9 <__c.0>:
cd9: 44 69 73 70 6c 61 79 00 Display.
 
00000ce1 <__c.1>:
ce1: 0d 0a 54 69 6d 65 6f 75 74 21 00 ..Timeout!.
 
00000cec <__c.0>:
cec: 54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00 Taste dr.cken...
 
00000cfc <__init>:
cfc: 11 24 eor r1, r1
cfe: 1f be out 0x3f, r1 ; 63
d00: cf e5 ldi r28, 0x5F ; 95
d02: d8 e0 ldi r29, 0x08 ; 8
d04: de bf out 0x3e, r29 ; 62
d06: cd bf out 0x3d, r28 ; 61
 
00000d08 <__do_copy_data>:
d08: 10 e0 ldi r17, 0x00 ; 0
d0a: a0 e6 ldi r26, 0x60 ; 96
d0c: b0 e0 ldi r27, 0x00 ; 0
d0e: ec e6 ldi r30, 0x6C ; 108
d10: f6 e2 ldi r31, 0x26 ; 38
d12: 02 c0 rjmp .+4 ; 0xd18 <.do_copy_data_start>
 
00000d14 <.do_copy_data_loop>:
d14: 05 90 lpm r0, Z+
d16: 0d 92 st X+, r0
 
00000d18 <.do_copy_data_start>:
d18: a0 36 cpi r26, 0x60 ; 96
d1a: b1 07 cpc r27, r17
d1c: d9 f7 brne .-10 ; 0xd14 <.do_copy_data_loop>
 
00000d1e <__do_clear_bss>:
d1e: 15 e0 ldi r17, 0x05 ; 5
d20: a0 e6 ldi r26, 0x60 ; 96
d22: b0 e0 ldi r27, 0x00 ; 0
d24: 01 c0 rjmp .+2 ; 0xd28 <.do_clear_bss_start>
 
00000d26 <.do_clear_bss_loop>:
d26: 1d 92 st X+, r1
 
00000d28 <.do_clear_bss_start>:
d28: a7 38 cpi r26, 0x87 ; 135
d2a: b1 07 cpc r27, r17
d2c: e1 f7 brne .-8 ; 0xd26 <.do_clear_bss_loop>
d2e: 0c 94 9b 06 jmp 0xd36 <main>
 
00000d32 <__bad_interrupt>:
d32: 0c 94 00 00 jmp 0x0 <__vectors>
 
00000d36 <main>:
#include "timer.h"
 
 
int main (void)
{
d36: cf e5 ldi r28, 0x5F ; 95
d38: d8 e0 ldi r29, 0x08 ; 8
d3a: de bf out 0x3e, r29 ; 62
d3c: cd bf out 0x3d, r28 ; 61
PORTA = 0xFF; // unbenutzte Pins auf Pull-Up
d3e: 8f ef ldi r24, 0xFF ; 255
d40: 8b bb out 0x1b, r24 ; 27
PORTB = 0x43;
d42: 83 e4 ldi r24, 0x43 ; 67
d44: 88 bb out 0x18, r24 ; 24
PORTC = 0xFC;
d46: 8c ef ldi r24, 0xFC ; 252
d48: 85 bb out 0x15, r24 ; 21
PORTD = 0x7C;
d4a: 8c e7 ldi r24, 0x7C ; 124
d4c: 82 bb out 0x12, r24 ; 18
DDRC = 0x03; // Pins für Beleuchtung auf Ausgang
d4e: 83 e0 ldi r24, 0x03 ; 3
d50: 84 bb out 0x14, r24 ; 20
DDRD = 0x80;
d52: 80 e8 ldi r24, 0x80 ; 128
d54: 81 bb out 0x11, r24 ; 17
 
lcd_init();
d56: 0e 94 53 07 call 0xea6 <lcd_init>
RS232_init();
d5a: 0e 94 1a 0c call 0x1834 <RS232_init>
timer_init();
d5e: 0e 94 f4 06 call 0xde8 <timer_init>
sei();
d62: 78 94 sei
 
for (;;)
main_menu();
d64: 0e 94 c8 11 call 0x2390 <main_menu>
d68: fd cf rjmp .-6 ; 0xd64 <main+0x2e>
 
00000d6a <__vector_10>:
volatile uint8_t rs232_timer;
 
 
ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz)
{
d6a: 1f 92 push r1
d6c: 0f 92 push r0
d6e: 0f b6 in r0, 0x3f ; 63
d70: 0f 92 push r0
d72: 11 24 eor r1, r1
d74: 8f 93 push r24
d76: 9f 93 push r25
if (counter > 0)
d78: 80 91 e4 04 lds r24, 0x04E4
d7c: 88 23 and r24, r24
d7e: 31 f0 breq .+12 ; 0xd8c <__vector_10+0x22>
counter --;
d80: 80 91 e4 04 lds r24, 0x04E4
d84: 81 50 subi r24, 0x01 ; 1
d86: 80 93 e4 04 sts 0x04E4, r24
d8a: 15 c0 rjmp .+42 ; 0xdb6 <__vector_10+0x4c>
else
{
counter = 10;
d8c: 8a e0 ldi r24, 0x0A ; 10
d8e: 80 93 e4 04 sts 0x04E4, r24
key = (~PINA >> 4) & 0x0F;
d92: 89 b3 in r24, 0x19 ; 25
d94: 99 27 eor r25, r25
d96: 80 95 com r24
d98: 90 95 com r25
d9a: 68 94 set
d9c: 13 f8 bld r1, 3
d9e: 95 95 asr r25
da0: 87 95 ror r24
da2: 16 94 lsr r1
da4: e1 f7 brne .-8 ; 0xd9e <__vector_10+0x34>
da6: 8f 70 andi r24, 0x0F ; 15
da8: 80 93 e6 04 sts 0x04E6, r24
counter2 ++;
dac: 80 91 69 05 lds r24, 0x0569
db0: 8f 5f subi r24, 0xFF ; 255
db2: 80 93 69 05 sts 0x0569, r24
}
if (timer > 0)
db6: 80 91 61 00 lds r24, 0x0061
dba: 88 23 and r24, r24
dbc: 29 f0 breq .+10 ; 0xdc8 <__vector_10+0x5e>
timer --;
dbe: 80 91 61 00 lds r24, 0x0061
dc2: 81 50 subi r24, 0x01 ; 1
dc4: 80 93 61 00 sts 0x0061, r24
if (rs232_timer > 0)
dc8: 80 91 e5 04 lds r24, 0x04E5
dcc: 88 23 and r24, r24
dce: 29 f0 breq .+10 ; 0xdda <__vector_10+0x70>
rs232_timer --;
dd0: 80 91 e5 04 lds r24, 0x04E5
dd4: 81 50 subi r24, 0x01 ; 1
dd6: 80 93 e5 04 sts 0x04E5, r24
dda: 9f 91 pop r25
ddc: 8f 91 pop r24
dde: 0f 90 pop r0
de0: 0f be out 0x3f, r0 ; 63
de2: 0f 90 pop r0
de4: 1f 90 pop r1
de6: 18 95 reti
 
00000de8 <timer_init>:
}
 
void timer_init (void)
{
TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024
de8: 8d e0 ldi r24, 0x0D ; 13
dea: 83 bf out 0x33, r24 ; 51
OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz
dec: 88 e4 ldi r24, 0x48 ; 72
dee: 8c bf out 0x3c, r24 ; 60
TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR
df0: 89 b7 in r24, 0x39 ; 57
df2: 82 60 ori r24, 0x02 ; 2
df4: 89 bf out 0x39, r24 ; 57
df6: 08 95 ret
 
00000df8 <send_byte>:
 
 
void send_byte (uint8_t data)
{
clr_cs();
df8: c4 98 cbi 0x18, 4 ; 24
SPDR = data;
dfa: 8f b9 out 0x0f, r24 ; 15
while(!(SPSR & (1<<SPIF)));
dfc: 77 9b sbis 0x0e, 7 ; 14
dfe: fe cf rjmp .-4 ; 0xdfc <send_byte+0x4>
SPSR = SPSR;
e00: 8e b1 in r24, 0x0e ; 14
e02: 8e b9 out 0x0e, r24 ; 14
set_cs();
e04: c4 9a sbi 0x18, 4 ; 24
e06: 08 95 ret
 
00000e08 <cls>:
}
 
void cls (void)
{
e08: 0f 93 push r16
e0a: 1f 93 push r17
e0c: cf 93 push r28
e0e: df 93 push r29
e10: 82 e6 ldi r24, 0x62 ; 98
e12: 90 e0 ldi r25, 0x00 ; 0
e14: fc 01 movw r30, r24
uint16_t i,j;
for (i=0;i<1024;i++)
display_buffer[i] = 0x00;
e16: 11 92 st Z+, r1
e18: 01 96 adiw r24, 0x01 ; 1
e1a: 24 e0 ldi r18, 0x04 ; 4
e1c: 81 36 cpi r24, 0x61 ; 97
e1e: 92 07 cpc r25, r18
e20: d1 f3 breq .-12 ; 0xe16 <cls+0xe>
e22: c8 f3 brcs .-14 ; 0xe16 <cls+0xe>
for (i=0;i<8;i++)
e24: 00 e0 ldi r16, 0x00 ; 0
e26: 10 e0 ldi r17, 0x00 ; 0
{
clr_A0();
e28: c3 98 cbi 0x18, 3 ; 24
send_byte(0xB0+i);
e2a: 80 2f mov r24, r16
e2c: 80 55 subi r24, 0x50 ; 80
e2e: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x10);
e32: 80 e1 ldi r24, 0x10 ; 16
e34: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x04);
e38: 84 e0 ldi r24, 0x04 ; 4
e3a: 0e 94 fc 06 call 0xdf8 <send_byte>
set_A0();
e3e: c3 9a sbi 0x18, 3 ; 24
e40: cf e7 ldi r28, 0x7F ; 127
e42: d0 e0 ldi r29, 0x00 ; 0
for (j=0;j<128;j++)
send_byte(0x00);
e44: 80 e0 ldi r24, 0x00 ; 0
e46: 0e 94 fc 06 call 0xdf8 <send_byte>
e4a: 21 97 sbiw r28, 0x01 ; 1
e4c: d7 ff sbrs r29, 7
e4e: fa cf rjmp .-12 ; 0xe44 <cls+0x3c>
e50: 0f 5f subi r16, 0xFF ; 255
e52: 1f 4f sbci r17, 0xFF ; 255
e54: 08 30 cpi r16, 0x08 ; 8
e56: 11 05 cpc r17, r1
e58: 38 f3 brcs .-50 ; 0xe28 <cls+0x20>
}
lcd_xpos = 0;
e5a: 10 92 6a 05 sts 0x056A, r1
lcd_ypos = 0;
e5e: 10 92 6b 05 sts 0x056B, r1
e62: df 91 pop r29
e64: cf 91 pop r28
e66: 1f 91 pop r17
e68: 0f 91 pop r16
e6a: 08 95 ret
 
00000e6c <lcd_cls>:
}
 
void lcd_cls (void)
{
cls();
e6c: 0e 94 04 07 call 0xe08 <cls>
e70: 08 95 ret
 
00000e72 <wait_1ms>:
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
e72: 83 e3 ldi r24, 0x33 ; 51
e74: 97 e0 ldi r25, 0x07 ; 7
e76: 01 97 sbiw r24, 0x01 ; 1
e78: f1 f7 brne .-4 ; 0xe76 <wait_1ms+0x4>
e7a: 08 95 ret
 
00000e7c <wait_ms>:
}
 
void wait_1ms(void)
{
_delay_ms (1.0);
}
 
void wait_ms (uint16_t time)
{
e7c: 0f 93 push r16
e7e: 1f 93 push r17
e80: cf 93 push r28
e82: df 93 push r29
e84: 8c 01 movw r16, r24
uint16_t i;
for (i=0; i<time; i++)
e86: c0 e0 ldi r28, 0x00 ; 0
e88: d0 e0 ldi r29, 0x00 ; 0
e8a: c8 17 cp r28, r24
e8c: d9 07 cpc r29, r25
e8e: 30 f4 brcc .+12 ; 0xe9c <wait_ms+0x20>
wait_1ms();
e90: 0e 94 39 07 call 0xe72 <wait_1ms>
e94: 21 96 adiw r28, 0x01 ; 1
e96: c0 17 cp r28, r16
e98: d1 07 cpc r29, r17
e9a: d0 f3 brcs .-12 ; 0xe90 <wait_ms+0x14>
e9c: df 91 pop r29
e9e: cf 91 pop r28
ea0: 1f 91 pop r17
ea2: 0f 91 pop r16
ea4: 08 95 ret
 
00000ea6 <lcd_init>:
}
 
void lcd_init (void)
{
lcd_xpos = 0;
ea6: 10 92 6a 05 sts 0x056A, r1
lcd_ypos = 0;
eaa: 10 92 6b 05 sts 0x056B, r1
DDRB = 0xFF;
eae: 8f ef ldi r24, 0xFF ; 255
eb0: 87 bb out 0x17, r24 ; 23
SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1);
eb2: 8e e5 ldi r24, 0x5E ; 94
eb4: 8d b9 out 0x0d, r24 ; 13
set_cs();
eb6: c4 9a sbi 0x18, 4 ; 24
clr_reset();
eb8: c2 98 cbi 0x18, 2 ; 24
wait_ms(10);
eba: 8a e0 ldi r24, 0x0A ; 10
ebc: 90 e0 ldi r25, 0x00 ; 0
ebe: 0e 94 3e 07 call 0xe7c <wait_ms>
set_reset();
ec2: c2 9a sbi 0x18, 2 ; 24
clr_cs();
ec4: c4 98 cbi 0x18, 4 ; 24
clr_A0();
ec6: c3 98 cbi 0x18, 3 ; 24
send_byte(0x40);
ec8: 80 e4 ldi r24, 0x40 ; 64
eca: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA0); // A1
ece: 80 ea ldi r24, 0xA0 ; 160
ed0: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xC8); // C0
ed4: 88 ec ldi r24, 0xC8 ; 200
ed6: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA6);
eda: 86 ea ldi r24, 0xA6 ; 166
edc: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA2);
ee0: 82 ea ldi r24, 0xA2 ; 162
ee2: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x2F);
ee6: 8f e2 ldi r24, 0x2F ; 47
ee8: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xF8);
eec: 88 ef ldi r24, 0xF8 ; 248
eee: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x00);
ef2: 80 e0 ldi r24, 0x00 ; 0
ef4: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x27);
ef8: 87 e2 ldi r24, 0x27 ; 39
efa: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x81);
efe: 81 e8 ldi r24, 0x81 ; 129
f00: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x16);
f04: 86 e1 ldi r24, 0x16 ; 22
f06: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xAC);
f0a: 8c ea ldi r24, 0xAC ; 172
f0c: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x00);
f10: 80 e0 ldi r24, 0x00 ; 0
f12: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xAF);
f16: 8f ea ldi r24, 0xAF ; 175
f18: 0e 94 fc 06 call 0xdf8 <send_byte>
cls();
f1c: 0e 94 04 07 call 0xe08 <cls>
f20: 08 95 ret
 
00000f22 <set_adress>:
 
}
 
void set_adress (uint16_t adress, uint8_t data)
{
f22: ff 92 push r15
f24: 0f 93 push r16
f26: 1f 93 push r17
f28: 8c 01 movw r16, r24
f2a: f6 2e mov r15, r22
uint8_t page;
uint8_t column;
page = adress >> 7;
f2c: 88 0f add r24, r24
f2e: 89 2f mov r24, r25
f30: 88 1f adc r24, r24
f32: 99 0b sbc r25, r25
f34: 91 95 neg r25
clr_A0();
f36: c3 98 cbi 0x18, 3 ; 24
send_byte(0xB0 + page);
f38: 80 55 subi r24, 0x50 ; 80
f3a: 0e 94 fc 06 call 0xdf8 <send_byte>
column = (adress & 0x7F) + 4;
f3e: 10 2f mov r17, r16
f40: 1f 77 andi r17, 0x7F ; 127
f42: 1c 5f subi r17, 0xFC ; 252
send_byte(0x10 + (column >> 4));
f44: 81 2f mov r24, r17
f46: 82 95 swap r24
f48: 8f 70 andi r24, 0x0F ; 15
f4a: 80 5f subi r24, 0xF0 ; 240
f4c: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(column & 0x0F);
f50: 81 2f mov r24, r17
f52: 8f 70 andi r24, 0x0F ; 15
f54: 0e 94 fc 06 call 0xdf8 <send_byte>
set_A0();
f58: c3 9a sbi 0x18, 3 ; 24
send_byte(data);
f5a: 8f 2d mov r24, r15
f5c: 0e 94 fc 06 call 0xdf8 <send_byte>
f60: 1f 91 pop r17
f62: 0f 91 pop r16
f64: ff 90 pop r15
f66: 08 95 ret
 
00000f68 <scroll>:
}
 
void scroll (void)
{
f68: ef 92 push r14
f6a: ff 92 push r15
f6c: 0f 93 push r16
f6e: 1f 93 push r17
f70: cf 93 push r28
f72: df 93 push r29
uint16_t adress;
for (adress=0;adress<896;adress++)
f74: c0 e0 ldi r28, 0x00 ; 0
f76: d0 e0 ldi r29, 0x00 ; 0
f78: 32 ee ldi r19, 0xE2 ; 226
f7a: e3 2e mov r14, r19
f7c: 30 e0 ldi r19, 0x00 ; 0
f7e: f3 2e mov r15, r19
f80: 87 01 movw r16, r14
f82: 00 58 subi r16, 0x80 ; 128
f84: 10 40 sbci r17, 0x00 ; 0
{
display_buffer[adress] = display_buffer[adress+128];
f86: f7 01 movw r30, r14
f88: 81 91 ld r24, Z+
f8a: 7f 01 movw r14, r30
f8c: f8 01 movw r30, r16
f8e: 80 83 st Z, r24
set_adress(adress,display_buffer[adress]);
f90: 61 91 ld r22, Z+
f92: 8f 01 movw r16, r30
f94: ce 01 movw r24, r28
f96: 0e 94 91 07 call 0xf22 <set_adress>
f9a: 21 96 adiw r28, 0x01 ; 1
f9c: f3 e0 ldi r31, 0x03 ; 3
f9e: c0 38 cpi r28, 0x80 ; 128
fa0: df 07 cpc r29, r31
fa2: 88 f3 brcs .-30 ; 0xf86 <scroll+0x1e>
fa4: c0 e8 ldi r28, 0x80 ; 128
fa6: d3 e0 ldi r29, 0x03 ; 3
fa8: 02 ee ldi r16, 0xE2 ; 226
faa: 13 e0 ldi r17, 0x03 ; 3
}
for (adress=896;adress<1024;adress++)
{
display_buffer[adress] = 0;
fac: f8 01 movw r30, r16
fae: 11 92 st Z+, r1
fb0: 8f 01 movw r16, r30
set_adress(adress,0);
fb2: 60 e0 ldi r22, 0x00 ; 0
fb4: ce 01 movw r24, r28
fb6: 0e 94 91 07 call 0xf22 <set_adress>
fba: 21 96 adiw r28, 0x01 ; 1
fbc: f4 e0 ldi r31, 0x04 ; 4
fbe: c0 30 cpi r28, 0x00 ; 0
fc0: df 07 cpc r29, r31
fc2: a0 f3 brcs .-24 ; 0xfac <scroll+0x44>
fc4: df 91 pop r29
fc6: cf 91 pop r28
fc8: 1f 91 pop r17
fca: 0f 91 pop r16
fcc: ff 90 pop r15
fce: ef 90 pop r14
fd0: 08 95 ret
 
00000fd2 <put_char>:
}
}
 
//
// x,y = character-Pos. !
//
// mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode)
{
fd2: bf 92 push r11
fd4: cf 92 push r12
fd6: df 92 push r13
fd8: ef 92 push r14
fda: ff 92 push r15
fdc: 0f 93 push r16
fde: 1f 93 push r17
fe0: cf 93 push r28
fe2: df 93 push r29
fe4: 38 2f mov r19, r24
fe6: f4 2e mov r15, r20
fe8: b2 2e mov r11, r18
uint8_t ch;
uint8_t i;
uint16_t adress;
 
switch(c)
fea: 84 2f mov r24, r20
fec: 99 27 eor r25, r25
fee: 8f 3d cpi r24, 0xDF ; 223
ff0: 91 05 cpc r25, r1
ff2: 89 f1 breq .+98 ; 0x1056 <put_char+0x84>
ff4: 80 3e cpi r24, 0xE0 ; 224
ff6: 91 05 cpc r25, r1
ff8: 74 f4 brge .+28 ; 0x1016 <put_char+0x44>
ffa: 86 3d cpi r24, 0xD6 ; 214
ffc: 91 05 cpc r25, r1
ffe: 29 f1 breq .+74 ; 0x104a <put_char+0x78>
1000: 87 3d cpi r24, 0xD7 ; 215
1002: 91 05 cpc r25, r1
1004: 24 f4 brge .+8 ; 0x100e <put_char+0x3c>
1006: 84 3c cpi r24, 0xC4 ; 196
1008: 91 05 cpc r25, r1
100a: e1 f0 breq .+56 ; 0x1044 <put_char+0x72>
100c: 26 c0 rjmp .+76 ; 0x105a <put_char+0x88>
100e: 8c 3d cpi r24, 0xDC ; 220
1010: 91 05 cpc r25, r1
1012: f1 f0 breq .+60 ; 0x1050 <put_char+0x7e>
1014: 22 c0 rjmp .+68 ; 0x105a <put_char+0x88>
1016: 86 3f cpi r24, 0xF6 ; 246
1018: 91 05 cpc r25, r1
101a: 71 f0 breq .+28 ; 0x1038 <put_char+0x66>
101c: 87 3f cpi r24, 0xF7 ; 247
101e: 91 05 cpc r25, r1
1020: 24 f4 brge .+8 ; 0x102a <put_char+0x58>
1022: 84 3e cpi r24, 0xE4 ; 228
1024: 91 05 cpc r25, r1
1026: 29 f0 breq .+10 ; 0x1032 <put_char+0x60>
1028: 18 c0 rjmp .+48 ; 0x105a <put_char+0x88>
102a: 8c 3f cpi r24, 0xFC ; 252
102c: 91 05 cpc r25, r1
102e: 39 f0 breq .+14 ; 0x103e <put_char+0x6c>
1030: 14 c0 rjmp .+40 ; 0x105a <put_char+0x88>
{
case 'ä':
c = 0x84;
1032: 14 e8 ldi r17, 0x84 ; 132
1034: f1 2e mov r15, r17
break;
1036: 11 c0 rjmp .+34 ; 0x105a <put_char+0x88>
case 'ö':
c = 0x94;
1038: c4 e9 ldi r28, 0x94 ; 148
103a: fc 2e mov r15, r28
break;
103c: 0e c0 rjmp .+28 ; 0x105a <put_char+0x88>
case 'ü':
c = 0x81;
103e: b1 e8 ldi r27, 0x81 ; 129
1040: fb 2e mov r15, r27
break;
1042: 0b c0 rjmp .+22 ; 0x105a <put_char+0x88>
case 'Ä':
c = 0x8E;
1044: ae e8 ldi r26, 0x8E ; 142
1046: fa 2e mov r15, r26
break;
1048: 08 c0 rjmp .+16 ; 0x105a <put_char+0x88>
case 'Ö':
c = 0x99;
104a: f9 e9 ldi r31, 0x99 ; 153
104c: ff 2e mov r15, r31
break;
104e: 05 c0 rjmp .+10 ; 0x105a <put_char+0x88>
case 'Ü':
c = 0x9A;
1050: ea e9 ldi r30, 0x9A ; 154
1052: fe 2e mov r15, r30
break;
1054: 02 c0 rjmp .+4 ; 0x105a <put_char+0x88>
case 'ß':
c = 0xE1;
1056: 71 ee ldi r23, 0xE1 ; 225
1058: f7 2e mov r15, r23
break;
}
adress = y*128 + x*6;
105a: c6 2f mov r28, r22
105c: dd 27 eor r29, r29
105e: d6 95 lsr r29
1060: dc 2f mov r29, r28
1062: cc 27 eor r28, r28
1064: d7 95 ror r29
1066: c7 95 ror r28
1068: 86 e0 ldi r24, 0x06 ; 6
106a: 38 9f mul r19, r24
106c: c0 01 movw r24, r0
106e: 11 24 eor r1, r1
1070: c8 0f add r28, r24
1072: d9 1f adc r29, r25
adress &= 0x3FF;
1074: d3 70 andi r29, 0x03 ; 3
1076: 6e 01 movw r12, r28
1078: 00 e0 ldi r16, 0x00 ; 0
107a: 10 e0 ldi r17, 0x00 ; 0
107c: 45 e0 ldi r20, 0x05 ; 5
107e: e4 2e mov r14, r20
for (i=0;i<6;i++)
{
ch = pgm_read_byte (&f8x6[0][0] + i + c * 6);
1080: 86 e0 ldi r24, 0x06 ; 6
1082: f8 9e mul r15, r24
1084: f0 01 movw r30, r0
1086: 11 24 eor r1, r1
1088: e0 0f add r30, r16
108a: f1 1f adc r31, r17
108c: ec 5a subi r30, 0xAC ; 172
108e: ff 4f sbci r31, 0xFF ; 255
1090: 24 91 lpm r18, Z
switch (mode)
1092: 8b 2d mov r24, r11
1094: 99 27 eor r25, r25
1096: 82 30 cpi r24, 0x02 ; 2
1098: 91 05 cpc r25, r1
109a: e9 f0 breq .+58 ; 0x10d6 <put_char+0x104>
109c: 83 30 cpi r24, 0x03 ; 3
109e: 91 05 cpc r25, r1
10a0: 2c f4 brge .+10 ; 0x10ac <put_char+0xda>
10a2: 00 97 sbiw r24, 0x00 ; 0
10a4: 49 f0 breq .+18 ; 0x10b8 <put_char+0xe6>
10a6: 01 97 sbiw r24, 0x01 ; 1
10a8: 71 f0 breq .+28 ; 0x10c6 <put_char+0xf4>
10aa: 2c c0 rjmp .+88 ; 0x1104 <put_char+0x132>
10ac: 83 30 cpi r24, 0x03 ; 3
10ae: 91 05 cpc r25, r1
10b0: d1 f0 breq .+52 ; 0x10e6 <put_char+0x114>
10b2: 04 97 sbiw r24, 0x04 ; 4
10b4: f1 f0 breq .+60 ; 0x10f2 <put_char+0x120>
10b6: 26 c0 rjmp .+76 ; 0x1104 <put_char+0x132>
{
case 0:
display_buffer[adress+i] = ch;
10b8: fe 01 movw r30, r28
10ba: ee 59 subi r30, 0x9E ; 158
10bc: ff 4f sbci r31, 0xFF ; 255
10be: e0 0f add r30, r16
10c0: f1 1f adc r31, r17
10c2: 20 83 st Z, r18
break;
10c4: 1f c0 rjmp .+62 ; 0x1104 <put_char+0x132>
case 1:
display_buffer[adress+i] |= ch;
10c6: fe 01 movw r30, r28
10c8: ee 59 subi r30, 0x9E ; 158
10ca: ff 4f sbci r31, 0xFF ; 255
10cc: e0 0f add r30, r16
10ce: f1 1f adc r31, r17
10d0: 80 81 ld r24, Z
10d2: 82 2b or r24, r18
10d4: 16 c0 rjmp .+44 ; 0x1102 <put_char+0x130>
break;
case 2:
display_buffer[adress+i] ^= ch;
10d6: fe 01 movw r30, r28
10d8: ee 59 subi r30, 0x9E ; 158
10da: ff 4f sbci r31, 0xFF ; 255
10dc: e0 0f add r30, r16
10de: f1 1f adc r31, r17
10e0: 80 81 ld r24, Z
10e2: 82 27 eor r24, r18
10e4: 0e c0 rjmp .+28 ; 0x1102 <put_char+0x130>
break;
case 3:
display_buffer[adress+i] &= ch;
10e6: fe 01 movw r30, r28
10e8: ee 59 subi r30, 0x9E ; 158
10ea: ff 4f sbci r31, 0xFF ; 255
10ec: e0 0f add r30, r16
10ee: f1 1f adc r31, r17
10f0: 06 c0 rjmp .+12 ; 0x10fe <put_char+0x12c>
break;
case 4:
display_buffer[adress+i] &= ~ch;
10f2: fe 01 movw r30, r28
10f4: ee 59 subi r30, 0x9E ; 158
10f6: ff 4f sbci r31, 0xFF ; 255
10f8: e0 0f add r30, r16
10fa: f1 1f adc r31, r17
10fc: 20 95 com r18
10fe: 80 81 ld r24, Z
1100: 82 23 and r24, r18
1102: 80 83 st Z, r24
break;
}
set_adress(adress+i,display_buffer[adress+i]);
1104: fe 01 movw r30, r28
1106: ee 59 subi r30, 0x9E ; 158
1108: ff 4f sbci r31, 0xFF ; 255
110a: e0 0f add r30, r16
110c: f1 1f adc r31, r17
110e: 60 81 ld r22, Z
1110: c6 01 movw r24, r12
1112: 0e 94 91 07 call 0xf22 <set_adress>
1116: ea 94 dec r14
1118: 0f 5f subi r16, 0xFF ; 255
111a: 1f 4f sbci r17, 0xFF ; 255
111c: 08 94 sec
111e: c1 1c adc r12, r1
1120: d1 1c adc r13, r1
1122: e7 fe sbrs r14, 7
1124: ad cf rjmp .-166 ; 0x1080 <put_char+0xae>
1126: df 91 pop r29
1128: cf 91 pop r28
112a: 1f 91 pop r17
112c: 0f 91 pop r16
112e: ff 90 pop r15
1130: ef 90 pop r14
1132: df 90 pop r13
1134: cf 90 pop r12
1136: bf 90 pop r11
1138: 08 95 ret
 
0000113a <new_line>:
}
}
 
void new_line (void)
{
lcd_ypos++;
113a: 80 91 6b 05 lds r24, 0x056B
113e: 8f 5f subi r24, 0xFF ; 255
1140: 80 93 6b 05 sts 0x056B, r24
if (lcd_ypos > 7)
1144: 88 30 cpi r24, 0x08 ; 8
1146: 28 f0 brcs .+10 ; 0x1152 <new_line+0x18>
{
scroll();
1148: 0e 94 b4 07 call 0xf68 <scroll>
lcd_ypos = 7;
114c: 87 e0 ldi r24, 0x07 ; 7
114e: 80 93 6b 05 sts 0x056B, r24
1152: 08 95 ret
 
00001154 <lcd_printp>:
}
}
 
 
void lcd_printp (const char *text, uint8_t mode)
{
1154: 1f 93 push r17
1156: cf 93 push r28
1158: df 93 push r29
115a: ec 01 movw r28, r24
115c: 16 2f mov r17, r22
while (pgm_read_byte(text))
{
if (pgm_read_byte(text) > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (pgm_read_byte(text))
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
115e: fc 01 movw r30, r24
1160: 84 91 lpm r24, Z
1162: 88 23 and r24, r24
1164: 51 f1 breq .+84 ; 0x11ba <lcd_printp+0x66>
1166: fe 01 movw r30, r28
1168: 84 91 lpm r24, Z
116a: 80 32 cpi r24, 0x20 ; 32
116c: b0 f0 brcs .+44 ; 0x119a <lcd_printp+0x46>
116e: 21 96 adiw r28, 0x01 ; 1
1170: 84 91 lpm r24, Z
1172: 21 2f mov r18, r17
1174: 48 2f mov r20, r24
1176: 60 91 6b 05 lds r22, 0x056B
117a: 80 91 6a 05 lds r24, 0x056A
117e: 0e 94 e9 07 call 0xfd2 <put_char>
1182: 80 91 6a 05 lds r24, 0x056A
1186: 8f 5f subi r24, 0xFF ; 255
1188: 80 93 6a 05 sts 0x056A, r24
118c: 85 31 cpi r24, 0x15 ; 21
118e: 88 f0 brcs .+34 ; 0x11b2 <lcd_printp+0x5e>
1190: 10 92 6a 05 sts 0x056A, r1
1194: 0e 94 9d 08 call 0x113a <new_line>
1198: 0c c0 rjmp .+24 ; 0x11b2 <lcd_printp+0x5e>
119a: 99 27 eor r25, r25
119c: 8a 30 cpi r24, 0x0A ; 10
119e: 91 05 cpc r25, r1
11a0: 29 f0 breq .+10 ; 0x11ac <lcd_printp+0x58>
11a2: 0d 97 sbiw r24, 0x0d ; 13
11a4: 29 f4 brne .+10 ; 0x11b0 <lcd_printp+0x5c>
11a6: 10 92 6a 05 sts 0x056A, r1
11aa: 02 c0 rjmp .+4 ; 0x11b0 <lcd_printp+0x5c>
11ac: 0e 94 9d 08 call 0x113a <new_line>
11b0: 21 96 adiw r28, 0x01 ; 1
11b2: fe 01 movw r30, r28
11b4: 84 91 lpm r24, Z
11b6: 88 23 and r24, r24
11b8: b1 f6 brne .-84 ; 0x1166 <lcd_printp+0x12>
11ba: df 91 pop r29
11bc: cf 91 pop r28
11be: 1f 91 pop r17
11c0: 08 95 ret
 
000011c2 <lcd_print_atp>:
}
}
}
 
void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode)
{
lcd_xpos = x;
11c2: 80 93 6a 05 sts 0x056A, r24
lcd_ypos = y;
11c6: 60 93 6b 05 sts 0x056B, r22
lcd_printp (text, mode);
11ca: 62 2f mov r22, r18
11cc: ca 01 movw r24, r20
11ce: 0e 94 aa 08 call 0x1154 <lcd_printp>
11d2: 08 95 ret
 
000011d4 <lcd_print>:
}
 
 
void lcd_print (uint8_t *text, uint8_t mode)
{
11d4: 1f 93 push r17
11d6: cf 93 push r28
11d8: df 93 push r29
11da: ec 01 movw r28, r24
11dc: 16 2f mov r17, r22
while (*text)
{
if (*text > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,*text++,mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (*text)
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
11de: 88 81 ld r24, Y
11e0: 88 23 and r24, r24
11e2: 39 f1 breq .+78 ; 0x1232 <lcd_print+0x5e>
11e4: 48 81 ld r20, Y
11e6: 40 32 cpi r20, 0x20 ; 32
11e8: a0 f0 brcs .+40 ; 0x1212 <lcd_print+0x3e>
11ea: 21 96 adiw r28, 0x01 ; 1
11ec: 21 2f mov r18, r17
11ee: 60 91 6b 05 lds r22, 0x056B
11f2: 80 91 6a 05 lds r24, 0x056A
11f6: 0e 94 e9 07 call 0xfd2 <put_char>
11fa: 80 91 6a 05 lds r24, 0x056A
11fe: 8f 5f subi r24, 0xFF ; 255
1200: 80 93 6a 05 sts 0x056A, r24
1204: 85 31 cpi r24, 0x15 ; 21
1206: 90 f0 brcs .+36 ; 0x122c <lcd_print+0x58>
1208: 10 92 6a 05 sts 0x056A, r1
120c: 0e 94 9d 08 call 0x113a <new_line>
1210: 0d c0 rjmp .+26 ; 0x122c <lcd_print+0x58>
1212: 55 27 eor r21, r21
1214: 4a 30 cpi r20, 0x0A ; 10
1216: 51 05 cpc r21, r1
1218: 31 f0 breq .+12 ; 0x1226 <lcd_print+0x52>
121a: 4d 30 cpi r20, 0x0D ; 13
121c: 51 05 cpc r21, r1
121e: 29 f4 brne .+10 ; 0x122a <lcd_print+0x56>
1220: 10 92 6a 05 sts 0x056A, r1
1224: 02 c0 rjmp .+4 ; 0x122a <lcd_print+0x56>
1226: 0e 94 9d 08 call 0x113a <new_line>
122a: 21 96 adiw r28, 0x01 ; 1
122c: 88 81 ld r24, Y
122e: 88 23 and r24, r24
1230: c9 f6 brne .-78 ; 0x11e4 <lcd_print+0x10>
1232: df 91 pop r29
1234: cf 91 pop r28
1236: 1f 91 pop r17
1238: 08 95 ret
 
0000123a <lcd_print_at>:
}
}
}
 
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode)
{
lcd_xpos = x;
123a: 80 93 6a 05 sts 0x056A, r24
lcd_ypos = y;
123e: 60 93 6b 05 sts 0x056B, r22
lcd_print(text, mode);
1242: 62 2f mov r22, r18
1244: ca 01 movw r24, r20
1246: 0e 94 ea 08 call 0x11d4 <lcd_print>
124a: 08 95 ret
 
0000124c <lcd_plot>:
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Plot (set one Pixel)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// mode:
// 0=Clear, 1=Set, 2=XOR
void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode)
{
124c: 98 2f mov r25, r24
uint16_t adress;
uint8_t mask;
if ((xpos < 128) && (ypos < 64))
124e: 87 fd sbrc r24, 7
1250: 45 c0 rjmp .+138 ; 0x12dc <lcd_plot+0x90>
1252: 60 34 cpi r22, 0x40 ; 64
1254: 08 f0 brcs .+2 ; 0x1258 <lcd_plot+0xc>
1256: 42 c0 rjmp .+132 ; 0x12dc <lcd_plot+0x90>
{
adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0
1258: 86 2f mov r24, r22
125a: 86 95 lsr r24
125c: 86 95 lsr r24
125e: 86 95 lsr r24
1260: a8 2f mov r26, r24
1262: bb 27 eor r27, r27
1264: b6 95 lsr r27
1266: ba 2f mov r27, r26
1268: aa 27 eor r26, r26
126a: b7 95 ror r27
126c: a7 95 ror r26
126e: a9 0f add r26, r25
1270: b1 1d adc r27, r1
mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1
1272: 26 2f mov r18, r22
1274: 33 27 eor r19, r19
1276: 27 70 andi r18, 0x07 ; 7
1278: 30 70 andi r19, 0x00 ; 0
127a: 81 e0 ldi r24, 0x01 ; 1
127c: 90 e0 ldi r25, 0x00 ; 0
127e: 02 c0 rjmp .+4 ; 0x1284 <lcd_plot+0x38>
1280: 88 0f add r24, r24
1282: 99 1f adc r25, r25
1284: 2a 95 dec r18
1286: e2 f7 brpl .-8 ; 0x1280 <lcd_plot+0x34>
1288: 98 2f mov r25, r24
adress &= 0x3FF;
128a: b3 70 andi r27, 0x03 ; 3
switch (mode)
128c: 55 27 eor r21, r21
128e: 41 30 cpi r20, 0x01 ; 1
1290: 51 05 cpc r21, r1
1292: 89 f0 breq .+34 ; 0x12b6 <lcd_plot+0x6a>
1294: 42 30 cpi r20, 0x02 ; 2
1296: 51 05 cpc r21, r1
1298: 1c f4 brge .+6 ; 0x12a0 <lcd_plot+0x54>
129a: 45 2b or r20, r21
129c: 29 f0 breq .+10 ; 0x12a8 <lcd_plot+0x5c>
129e: 17 c0 rjmp .+46 ; 0x12ce <lcd_plot+0x82>
12a0: 42 30 cpi r20, 0x02 ; 2
12a2: 51 05 cpc r21, r1
12a4: 71 f0 breq .+28 ; 0x12c2 <lcd_plot+0x76>
12a6: 13 c0 rjmp .+38 ; 0x12ce <lcd_plot+0x82>
{
case 0:
display_buffer[adress] &=~mask;
12a8: fd 01 movw r30, r26
12aa: ee 59 subi r30, 0x9E ; 158
12ac: ff 4f sbci r31, 0xFF ; 255
12ae: 90 95 com r25
12b0: 80 81 ld r24, Z
12b2: 89 23 and r24, r25
12b4: 0b c0 rjmp .+22 ; 0x12cc <lcd_plot+0x80>
break;
case 1:
display_buffer[adress] |= mask;
12b6: fd 01 movw r30, r26
12b8: ee 59 subi r30, 0x9E ; 158
12ba: ff 4f sbci r31, 0xFF ; 255
12bc: 80 81 ld r24, Z
12be: 89 2b or r24, r25
12c0: 05 c0 rjmp .+10 ; 0x12cc <lcd_plot+0x80>
break;
case 2:
display_buffer[adress] ^= mask;
12c2: fd 01 movw r30, r26
12c4: ee 59 subi r30, 0x9E ; 158
12c6: ff 4f sbci r31, 0xFF ; 255
12c8: 80 81 ld r24, Z
12ca: 89 27 eor r24, r25
12cc: 80 83 st Z, r24
break;
}
set_adress(adress,display_buffer[adress]);
12ce: fd 01 movw r30, r26
12d0: ee 59 subi r30, 0x9E ; 158
12d2: ff 4f sbci r31, 0xFF ; 255
12d4: 60 81 ld r22, Z
12d6: cd 01 movw r24, r26
12d8: 0e 94 91 07 call 0xf22 <set_adress>
12dc: 08 95 ret
 
000012de <lcd_line>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Line (draws a line from x1,y1 to x2,y2
// + Based on Bresenham line-Algorithm
// + found in the internet, modified by thkais 2007
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode)
 
{
12de: 2f 92 push r2
12e0: 3f 92 push r3
12e2: 4f 92 push r4
12e4: 5f 92 push r5
12e6: 6f 92 push r6
12e8: 7f 92 push r7
12ea: 8f 92 push r8
12ec: 9f 92 push r9
12ee: af 92 push r10
12f0: bf 92 push r11
12f2: cf 92 push r12
12f4: df 92 push r13
12f6: ef 92 push r14
12f8: ff 92 push r15
12fa: 0f 93 push r16
12fc: 1f 93 push r17
12fe: cf 93 push r28
1300: df 93 push r29
1302: cd b7 in r28, 0x3d ; 61
1304: de b7 in r29, 0x3e ; 62
1306: 23 97 sbiw r28, 0x03 ; 3
1308: 0f b6 in r0, 0x3f ; 63
130a: f8 94 cli
130c: de bf out 0x3e, r29 ; 62
130e: 0f be out 0x3f, r0 ; 63
1310: cd bf out 0x3d, r28 ; 61
1312: 09 83 std Y+1, r16 ; 0x01
int x,y,count,xs,ys,xm,ym;
 
x=(int)x1;
1314: a8 2e mov r10, r24
1316: bb 24 eor r11, r11
y=(int)y1;
1318: c6 2e mov r12, r22
131a: dd 24 eor r13, r13
xs=(int)x2 - (int)x1;
131c: 64 2e mov r6, r20
131e: 77 24 eor r7, r7
1320: 73 01 movw r14, r6
1322: ea 18 sub r14, r10
1324: fb 08 sbc r15, r11
ys=(int)y2 - (int)y1;
1326: 82 2e mov r8, r18
1328: 99 24 eor r9, r9
132a: 84 01 movw r16, r8
132c: 0c 19 sub r16, r12
132e: 1d 09 sbc r17, r13
if(xs < 0)
1330: f7 fe sbrs r15, 7
1332: 04 c0 rjmp .+8 ; 0x133c <lcd_line+0x5e>
xm= -1;
1334: 7f ef ldi r23, 0xFF ; 255
1336: 27 2e mov r2, r23
1338: 37 2e mov r3, r23
133a: 09 c0 rjmp .+18 ; 0x134e <lcd_line+0x70>
else
if(xs > 0)
133c: 1e 14 cp r1, r14
133e: 1f 04 cpc r1, r15
1340: 24 f4 brge .+8 ; 0x134a <lcd_line+0x6c>
xm= 1;
1342: 61 e0 ldi r22, 0x01 ; 1
1344: 26 2e mov r2, r22
1346: 31 2c mov r3, r1
1348: 02 c0 rjmp .+4 ; 0x134e <lcd_line+0x70>
else
xm= 0;
134a: 22 24 eor r2, r2
134c: 33 24 eor r3, r3
if(ys < 0)
134e: 17 ff sbrs r17, 7
1350: 04 c0 rjmp .+8 ; 0x135a <lcd_line+0x7c>
ym= -1;
1352: 5f ef ldi r21, 0xFF ; 255
1354: 45 2e mov r4, r21
1356: 55 2e mov r5, r21
1358: 09 c0 rjmp .+18 ; 0x136c <lcd_line+0x8e>
else
if(ys > 0)
135a: 10 16 cp r1, r16
135c: 11 06 cpc r1, r17
135e: 24 f4 brge .+8 ; 0x1368 <lcd_line+0x8a>
ym= 1;
1360: 41 e0 ldi r20, 0x01 ; 1
1362: 44 2e mov r4, r20
1364: 51 2c mov r5, r1
1366: 02 c0 rjmp .+4 ; 0x136c <lcd_line+0x8e>
else
ym= 0;
1368: 44 24 eor r4, r4
136a: 55 24 eor r5, r5
if(xs < 0)
136c: f7 fe sbrs r15, 7
136e: 04 c0 rjmp .+8 ; 0x1378 <lcd_line+0x9a>
xs= -xs;
1370: f0 94 com r15
1372: e1 94 neg r14
1374: f1 08 sbc r15, r1
1376: f3 94 inc r15
if(ys < 0)
1378: 17 ff sbrs r17, 7
137a: 03 c0 rjmp .+6 ; 0x1382 <lcd_line+0xa4>
ys= -ys;
137c: 10 95 com r17
137e: 01 95 neg r16
1380: 1f 4f sbci r17, 0xFF ; 255
 
lcd_plot((unsigned char)x, (unsigned char)y, mode);
1382: 49 81 ldd r20, Y+1 ; 0x01
1384: 6c 2d mov r22, r12
1386: 8a 2d mov r24, r10
1388: 0e 94 26 09 call 0x124c <lcd_plot>
 
if(xs > ys) // Flat Line <45 degrees
138c: 0e 15 cp r16, r14
138e: 1f 05 cpc r17, r15
1390: 4c f5 brge .+82 ; 0x13e4 <lcd_line+0x106>
{
count= -(xs / 2);
1392: c7 01 movw r24, r14
1394: f7 fc sbrc r15, 7
1396: 01 96 adiw r24, 0x01 ; 1
1398: 95 95 asr r25
139a: 87 95 ror r24
139c: 22 27 eor r18, r18
139e: 33 27 eor r19, r19
13a0: 28 1b sub r18, r24
13a2: 39 0b sbc r19, r25
13a4: 3b 83 std Y+3, r19 ; 0x03
13a6: 2a 83 std Y+2, r18 ; 0x02
while(x != x2)
{
count= count + ys;
x= x + xm;
if(count > 0)
{
y= y + ym;
count= count - xs;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
13a8: a6 14 cp r10, r6
13aa: b7 04 cpc r11, r7
13ac: 09 f4 brne .+2 ; 0x13b0 <lcd_line+0xd2>
13ae: 41 c0 rjmp .+130 ; 0x1432 <lcd_line+0x154>
13b0: 8a 81 ldd r24, Y+2 ; 0x02
13b2: 9b 81 ldd r25, Y+3 ; 0x03
13b4: 80 0f add r24, r16
13b6: 91 1f adc r25, r17
13b8: 9b 83 std Y+3, r25 ; 0x03
13ba: 8a 83 std Y+2, r24 ; 0x02
13bc: a2 0c add r10, r2
13be: b3 1c adc r11, r3
13c0: 18 16 cp r1, r24
13c2: 19 06 cpc r1, r25
13c4: 34 f4 brge .+12 ; 0x13d2 <lcd_line+0xf4>
13c6: c4 0c add r12, r4
13c8: d5 1c adc r13, r5
13ca: 8e 19 sub r24, r14
13cc: 9f 09 sbc r25, r15
13ce: 9b 83 std Y+3, r25 ; 0x03
13d0: 8a 83 std Y+2, r24 ; 0x02
13d2: 49 81 ldd r20, Y+1 ; 0x01
13d4: 6c 2d mov r22, r12
13d6: 8a 2d mov r24, r10
13d8: 0e 94 26 09 call 0x124c <lcd_plot>
13dc: a6 14 cp r10, r6
13de: b7 04 cpc r11, r7
13e0: 39 f7 brne .-50 ; 0x13b0 <lcd_line+0xd2>
13e2: 27 c0 rjmp .+78 ; 0x1432 <lcd_line+0x154>
}
}
else // Line >=45 degrees
{
count=- (ys / 2);
13e4: c8 01 movw r24, r16
13e6: 17 fd sbrc r17, 7
13e8: 01 96 adiw r24, 0x01 ; 1
13ea: 95 95 asr r25
13ec: 87 95 ror r24
13ee: ee 27 eor r30, r30
13f0: ff 27 eor r31, r31
13f2: e8 1b sub r30, r24
13f4: f9 0b sbc r31, r25
13f6: fb 83 std Y+3, r31 ; 0x03
13f8: ea 83 std Y+2, r30 ; 0x02
while(y != y2)
{
count= count + xs;
y= y + ym;
if(count > 0)
{
x= x + xm;
count= count - ys;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
13fa: c8 14 cp r12, r8
13fc: d9 04 cpc r13, r9
13fe: c9 f0 breq .+50 ; 0x1432 <lcd_line+0x154>
1400: 2a 81 ldd r18, Y+2 ; 0x02
1402: 3b 81 ldd r19, Y+3 ; 0x03
1404: 2e 0d add r18, r14
1406: 3f 1d adc r19, r15
1408: 3b 83 std Y+3, r19 ; 0x03
140a: 2a 83 std Y+2, r18 ; 0x02
140c: c4 0c add r12, r4
140e: d5 1c adc r13, r5
1410: 12 16 cp r1, r18
1412: 13 06 cpc r1, r19
1414: 34 f4 brge .+12 ; 0x1422 <lcd_line+0x144>
1416: a2 0c add r10, r2
1418: b3 1c adc r11, r3
141a: 20 1b sub r18, r16
141c: 31 0b sbc r19, r17
141e: 3b 83 std Y+3, r19 ; 0x03
1420: 2a 83 std Y+2, r18 ; 0x02
1422: 49 81 ldd r20, Y+1 ; 0x01
1424: 6c 2d mov r22, r12
1426: 8a 2d mov r24, r10
1428: 0e 94 26 09 call 0x124c <lcd_plot>
142c: c8 14 cp r12, r8
142e: d9 04 cpc r13, r9
1430: 39 f7 brne .-50 ; 0x1400 <lcd_line+0x122>
1432: 23 96 adiw r28, 0x03 ; 3
1434: 0f b6 in r0, 0x3f ; 63
1436: f8 94 cli
1438: de bf out 0x3e, r29 ; 62
143a: 0f be out 0x3f, r0 ; 63
143c: cd bf out 0x3d, r28 ; 61
143e: df 91 pop r29
1440: cf 91 pop r28
1442: 1f 91 pop r17
1444: 0f 91 pop r16
1446: ff 90 pop r15
1448: ef 90 pop r14
144a: df 90 pop r13
144c: cf 90 pop r12
144e: bf 90 pop r11
1450: af 90 pop r10
1452: 9f 90 pop r9
1454: 8f 90 pop r8
1456: 7f 90 pop r7
1458: 6f 90 pop r6
145a: 5f 90 pop r5
145c: 4f 90 pop r4
145e: 3f 90 pop r3
1460: 2f 90 pop r2
1462: 08 95 ret
 
00001464 <lcd_frect>:
}
}
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Filled rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
1464: bf 92 push r11
1466: cf 92 push r12
1468: df 92 push r13
146a: ef 92 push r14
146c: ff 92 push r15
146e: 0f 93 push r16
1470: 1f 93 push r17
1472: cf 93 push r28
1474: df 93 push r29
1476: 18 2f mov r17, r24
1478: 82 2f mov r24, r18
147a: b0 2e mov r11, r16
uint16_t x2, y2;
uint16_t i;
 
if (x1 >= DISP_W)
147c: 17 fd sbrc r17, 7
x1 = DISP_W - 1;
147e: 1f e7 ldi r17, 0x7F ; 127
if (y1 >= DISP_H)
1480: 60 34 cpi r22, 0x40 ; 64
1482: 08 f0 brcs .+2 ; 0x1486 <lcd_frect+0x22>
y1 = DISP_H - 1;
1484: 6f e3 ldi r22, 0x3F ; 63
x2 = x1 + widthx;
1486: 21 2f mov r18, r17
1488: 24 0f add r18, r20
148a: 31 2d mov r19, r1
148c: 31 1d adc r19, r1
148e: 69 01 movw r12, r18
y2 = y1 + widthy;
1490: 26 2f mov r18, r22
1492: 33 27 eor r19, r19
1494: 79 01 movw r14, r18
1496: e8 0e add r14, r24
1498: f1 1c adc r15, r1
if (x2 > DISP_W)
149a: 81 e8 ldi r24, 0x81 ; 129
149c: c8 16 cp r12, r24
149e: d1 04 cpc r13, r1
14a0: 18 f0 brcs .+6 ; 0x14a8 <lcd_frect+0x44>
x2 = DISP_W;
14a2: f0 e8 ldi r31, 0x80 ; 128
14a4: cf 2e mov r12, r31
14a6: d1 2c mov r13, r1
if (y2 > DISP_H)
14a8: 81 e4 ldi r24, 0x41 ; 65
14aa: e8 16 cp r14, r24
14ac: f1 04 cpc r15, r1
14ae: 18 f0 brcs .+6 ; 0x14b6 <lcd_frect+0x52>
y2 = DISP_H;
14b0: e0 e4 ldi r30, 0x40 ; 64
14b2: ee 2e mov r14, r30
14b4: f1 2c mov r15, r1
for (i=y1;i<=y2;i++)
14b6: e9 01 movw r28, r18
14b8: e2 16 cp r14, r18
14ba: f3 06 cpc r15, r19
14bc: 58 f0 brcs .+22 ; 0x14d4 <lcd_frect+0x70>
{
lcd_line(x1,i,x2,i,mode);
14be: 0b 2d mov r16, r11
14c0: 2c 2f mov r18, r28
14c2: 4c 2d mov r20, r12
14c4: 6c 2f mov r22, r28
14c6: 81 2f mov r24, r17
14c8: 0e 94 6f 09 call 0x12de <lcd_line>
14cc: 21 96 adiw r28, 0x01 ; 1
14ce: ec 16 cp r14, r28
14d0: fd 06 cpc r15, r29
14d2: a8 f7 brcc .-22 ; 0x14be <lcd_frect+0x5a>
14d4: df 91 pop r29
14d6: cf 91 pop r28
14d8: 1f 91 pop r17
14da: 0f 91 pop r16
14dc: ff 90 pop r15
14de: ef 90 pop r14
14e0: df 90 pop r13
14e2: cf 90 pop r12
14e4: bf 90 pop r11
14e6: 08 95 ret
 
000014e8 <lcd_rect>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
14e8: cf 92 push r12
14ea: df 92 push r13
14ec: ef 92 push r14
14ee: ff 92 push r15
14f0: 0f 93 push r16
14f2: 1f 93 push r17
14f4: cf 93 push r28
14f6: df 93 push r29
14f8: d8 2e mov r13, r24
14fa: 16 2f mov r17, r22
14fc: c0 2e mov r12, r16
uint16_t x2, y2;
 
if (x1 >= DISP_W)
14fe: 87 ff sbrs r24, 7
1500: 02 c0 rjmp .+4 ; 0x1506 <lcd_rect+0x1e>
x1 = DISP_W - 1;
1502: bf e7 ldi r27, 0x7F ; 127
1504: db 2e mov r13, r27
if (y1 >= DISP_H)
1506: 10 34 cpi r17, 0x40 ; 64
1508: 08 f0 brcs .+2 ; 0x150c <lcd_rect+0x24>
y1 = DISP_H - 1;
150a: 1f e3 ldi r17, 0x3F ; 63
x2 = x1 + widthx;
150c: 8d 2d mov r24, r13
150e: 84 0f add r24, r20
1510: 91 2d mov r25, r1
1512: 91 1d adc r25, r1
1514: ec 01 movw r28, r24
y2 = y1 + widthy;
1516: 81 2f mov r24, r17
1518: 82 0f add r24, r18
151a: 91 2d mov r25, r1
151c: 91 1d adc r25, r1
151e: 7c 01 movw r14, r24
if (x2 > DISP_W)
1520: c1 38 cpi r28, 0x81 ; 129
1522: d1 05 cpc r29, r1
1524: 10 f0 brcs .+4 ; 0x152a <lcd_rect+0x42>
x2 = DISP_W;
1526: c0 e8 ldi r28, 0x80 ; 128
1528: d0 e0 ldi r29, 0x00 ; 0
if (y2 > DISP_H)
152a: 91 e4 ldi r25, 0x41 ; 65
152c: e9 16 cp r14, r25
152e: f1 04 cpc r15, r1
1530: 18 f0 brcs .+6 ; 0x1538 <lcd_rect+0x50>
y2 = DISP_H;
1532: a0 e4 ldi r26, 0x40 ; 64
1534: ea 2e mov r14, r26
1536: f1 2c mov r15, r1
 
lcd_line (x1, y1, x2, y1, mode);
1538: 0c 2d mov r16, r12
153a: 21 2f mov r18, r17
153c: 4c 2f mov r20, r28
153e: 61 2f mov r22, r17
1540: 8d 2d mov r24, r13
1542: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x2, y1, x2, y2, mode);
1546: 2e 2d mov r18, r14
1548: 4c 2f mov r20, r28
154a: 61 2f mov r22, r17
154c: 8c 2f mov r24, r28
154e: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x2, y2, x1, y2, mode);
1552: 2e 2d mov r18, r14
1554: 4d 2d mov r20, r13
1556: 6e 2d mov r22, r14
1558: 8c 2f mov r24, r28
155a: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x1, y2, x1, y1, mode);
155e: 21 2f mov r18, r17
1560: 4d 2d mov r20, r13
1562: 6e 2d mov r22, r14
1564: 8d 2d mov r24, r13
1566: 0e 94 6f 09 call 0x12de <lcd_line>
156a: df 91 pop r29
156c: cf 91 pop r28
156e: 1f 91 pop r17
1570: 0f 91 pop r16
1572: ff 90 pop r15
1574: ef 90 pop r14
1576: df 90 pop r13
1578: cf 90 pop r12
157a: 08 95 ret
 
0000157c <draw_circle>:
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of a circle
// + Based on Bresenham-algorithm found in wikipedia
// + modified by thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode)
{
157c: 2f 92 push r2
157e: 3f 92 push r3
1580: 4f 92 push r4
1582: 5f 92 push r5
1584: 6f 92 push r6
1586: 7f 92 push r7
1588: 8f 92 push r8
158a: 9f 92 push r9
158c: af 92 push r10
158e: bf 92 push r11
1590: cf 92 push r12
1592: df 92 push r13
1594: ef 92 push r14
1596: ff 92 push r15
1598: 0f 93 push r16
159a: 1f 93 push r17
159c: cf 93 push r28
159e: df 93 push r29
15a0: 5c 01 movw r10, r24
15a2: 6b 01 movw r12, r22
15a4: e2 2e mov r14, r18
int16_t f = 1 - radius;
15a6: c1 e0 ldi r28, 0x01 ; 1
15a8: 8c 2e mov r8, r28
15aa: 91 2c mov r9, r1
15ac: 84 1a sub r8, r20
15ae: 95 0a sbc r9, r21
int16_t ddF_x = 0;
15b0: 22 24 eor r2, r2
15b2: 33 24 eor r3, r3
int16_t ddF_y = -2 * radius;
15b4: 8e ef ldi r24, 0xFE ; 254
15b6: 9f ef ldi r25, 0xFF ; 255
15b8: 48 9f mul r20, r24
15ba: 20 01 movw r4, r0
15bc: 49 9f mul r20, r25
15be: 50 0c add r5, r0
15c0: 58 9f mul r21, r24
15c2: 50 0c add r5, r0
15c4: 11 24 eor r1, r1
int16_t x = 0;
15c6: 31 01 movw r6, r2
int16_t y = radius;
15c8: ea 01 movw r28, r20
 
lcd_plot(x0, y0 + radius, mode);
15ca: 86 2f mov r24, r22
15cc: 84 0f add r24, r20
15ce: 42 2f mov r20, r18
15d0: 68 2f mov r22, r24
15d2: 8a 2d mov r24, r10
15d4: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0, y0 - radius, mode);
15d8: 8c 2d mov r24, r12
15da: 8c 1b sub r24, r28
15dc: 4e 2d mov r20, r14
15de: 68 2f mov r22, r24
15e0: 8a 2d mov r24, r10
15e2: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0 + radius, y0, mode);
15e6: 4e 2d mov r20, r14
15e8: 6c 2d mov r22, r12
15ea: 8a 2d mov r24, r10
15ec: 8c 0f add r24, r28
15ee: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0 - radius, y0, mode);
15f2: 4e 2d mov r20, r14
15f4: 6c 2d mov r22, r12
15f6: 8a 2d mov r24, r10
15f8: 8c 1b sub r24, r28
15fa: 0e 94 26 09 call 0x124c <lcd_plot>
 
while(x < y)
{
if(f >= 0)
{
y --;
ddF_y += 2;
f += ddF_y;
}
x ++;
ddF_x += 2;
f += ddF_x + 1;
 
lcd_plot(x0 + x, y0 + y, mode);
lcd_plot(x0 - x, y0 + y, mode);
lcd_plot(x0 + x, y0 - y, mode);
lcd_plot(x0 - x, y0 - y, mode);
lcd_plot(x0 + y, y0 + x, mode);
lcd_plot(x0 - y, y0 + x, mode);
lcd_plot(x0 + y, y0 - x, mode);
lcd_plot(x0 - y, y0 - x, mode);
15fe: 2c 16 cp r2, r28
1600: 3d 06 cpc r3, r29
1602: 0c f0 brlt .+2 ; 0x1606 <draw_circle+0x8a>
1604: 51 c0 rjmp .+162 ; 0x16a8 <draw_circle+0x12c>
1606: 97 fc sbrc r9, 7
1608: 07 c0 rjmp .+14 ; 0x1618 <draw_circle+0x9c>
160a: 21 97 sbiw r28, 0x01 ; 1
160c: 82 e0 ldi r24, 0x02 ; 2
160e: 90 e0 ldi r25, 0x00 ; 0
1610: 48 0e add r4, r24
1612: 59 1e adc r5, r25
1614: 84 0c add r8, r4
1616: 95 1c adc r9, r5
1618: 08 94 sec
161a: 61 1c adc r6, r1
161c: 71 1c adc r7, r1
161e: 82 e0 ldi r24, 0x02 ; 2
1620: 90 e0 ldi r25, 0x00 ; 0
1622: 28 0e add r2, r24
1624: 39 1e adc r3, r25
1626: 82 0c add r8, r2
1628: 93 1c adc r9, r3
162a: 08 94 sec
162c: 81 1c adc r8, r1
162e: 91 1c adc r9, r1
1630: 1c 2d mov r17, r12
1632: 1c 0f add r17, r28
1634: fa 2c mov r15, r10
1636: f6 0c add r15, r6
1638: 4e 2d mov r20, r14
163a: 61 2f mov r22, r17
163c: 8f 2d mov r24, r15
163e: 0e 94 26 09 call 0x124c <lcd_plot>
1642: 0a 2d mov r16, r10
1644: 06 19 sub r16, r6
1646: 4e 2d mov r20, r14
1648: 61 2f mov r22, r17
164a: 80 2f mov r24, r16
164c: 0e 94 26 09 call 0x124c <lcd_plot>
1650: 1c 2d mov r17, r12
1652: 1c 1b sub r17, r28
1654: 4e 2d mov r20, r14
1656: 61 2f mov r22, r17
1658: 8f 2d mov r24, r15
165a: 0e 94 26 09 call 0x124c <lcd_plot>
165e: 4e 2d mov r20, r14
1660: 61 2f mov r22, r17
1662: 80 2f mov r24, r16
1664: 0e 94 26 09 call 0x124c <lcd_plot>
1668: 1c 2d mov r17, r12
166a: 16 0d add r17, r6
166c: fa 2c mov r15, r10
166e: fc 0e add r15, r28
1670: 4e 2d mov r20, r14
1672: 61 2f mov r22, r17
1674: 8f 2d mov r24, r15
1676: 0e 94 26 09 call 0x124c <lcd_plot>
167a: 0a 2d mov r16, r10
167c: 0c 1b sub r16, r28
167e: 4e 2d mov r20, r14
1680: 61 2f mov r22, r17
1682: 80 2f mov r24, r16
1684: 0e 94 26 09 call 0x124c <lcd_plot>
1688: 1c 2d mov r17, r12
168a: 16 19 sub r17, r6
168c: 4e 2d mov r20, r14
168e: 61 2f mov r22, r17
1690: 8f 2d mov r24, r15
1692: 0e 94 26 09 call 0x124c <lcd_plot>
1696: 4e 2d mov r20, r14
1698: 61 2f mov r22, r17
169a: 80 2f mov r24, r16
169c: 0e 94 26 09 call 0x124c <lcd_plot>
16a0: 6c 16 cp r6, r28
16a2: 7d 06 cpc r7, r29
16a4: 0c f4 brge .+2 ; 0x16a8 <draw_circle+0x12c>
16a6: af cf rjmp .-162 ; 0x1606 <draw_circle+0x8a>
16a8: df 91 pop r29
16aa: cf 91 pop r28
16ac: 1f 91 pop r17
16ae: 0f 91 pop r16
16b0: ff 90 pop r15
16b2: ef 90 pop r14
16b4: df 90 pop r13
16b6: cf 90 pop r12
16b8: bf 90 pop r11
16ba: af 90 pop r10
16bc: 9f 90 pop r9
16be: 8f 90 pop r8
16c0: 7f 90 pop r7
16c2: 6f 90 pop r6
16c4: 5f 90 pop r5
16c6: 4f 90 pop r4
16c8: 3f 90 pop r3
16ca: 2f 90 pop r2
16cc: 08 95 ret
 
000016ce <draw_fcircle>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + filled Circle
// + modified circle-algorithm thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void draw_fcircle(int16_t x0, int16_t y0, int16_t radius)
{
16ce: 2f 92 push r2
16d0: 3f 92 push r3
16d2: 4f 92 push r4
16d4: 5f 92 push r5
16d6: 6f 92 push r6
16d8: 7f 92 push r7
16da: 8f 92 push r8
16dc: 9f 92 push r9
16de: af 92 push r10
16e0: bf 92 push r11
16e2: cf 92 push r12
16e4: df 92 push r13
16e6: ff 92 push r15
16e8: 0f 93 push r16
16ea: 1f 93 push r17
16ec: cf 93 push r28
16ee: df 93 push r29
16f0: 5c 01 movw r10, r24
16f2: 6b 01 movw r12, r22
int16_t f = 1 - radius;
16f4: 11 e0 ldi r17, 0x01 ; 1
16f6: 61 2e mov r6, r17
16f8: 71 2c mov r7, r1
16fa: 64 1a sub r6, r20
16fc: 75 0a sbc r7, r21
int16_t ddF_x = 0;
16fe: 22 24 eor r2, r2
1700: 33 24 eor r3, r3
int16_t ddF_y = -2 * radius;
1702: 8e ef ldi r24, 0xFE ; 254
1704: 9f ef ldi r25, 0xFF ; 255
1706: 48 9f mul r20, r24
1708: 20 01 movw r4, r0
170a: 49 9f mul r20, r25
170c: 50 0c add r5, r0
170e: 58 9f mul r21, r24
1710: 50 0c add r5, r0
1712: 11 24 eor r1, r1
int16_t x = 0;
1714: 41 01 movw r8, r2
int16_t y = radius;
1716: ea 01 movw r28, r20
lcd_line(x0, y0 + radius,x0, y0 - radius,1);
1718: 86 2f mov r24, r22
171a: 84 1b sub r24, r20
171c: 96 2f mov r25, r22
171e: 94 0f add r25, r20
1720: 01 e0 ldi r16, 0x01 ; 1
1722: 28 2f mov r18, r24
1724: 4a 2d mov r20, r10
1726: 69 2f mov r22, r25
1728: 8a 2d mov r24, r10
172a: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line(x0 + radius, y0,x0 - radius, y0,1);
172e: 8a 2d mov r24, r10
1730: 8c 1b sub r24, r28
1732: 2c 2d mov r18, r12
1734: 48 2f mov r20, r24
1736: 6c 2d mov r22, r12
1738: 8a 2d mov r24, r10
173a: 8c 0f add r24, r28
173c: 0e 94 6f 09 call 0x12de <lcd_line>
while(x < y)
{
if(f >= 0)
{
y--;
ddF_y += 2;
f += ddF_y;
}
x++;
ddF_x += 2;
f += ddF_x + 1;
lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1);
lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1);
lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1);
lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1);
1740: 2c 16 cp r2, r28
1742: 3d 06 cpc r3, r29
1744: 0c f0 brlt .+2 ; 0x1748 <draw_fcircle+0x7a>
1746: 42 c0 rjmp .+132 ; 0x17cc <draw_fcircle+0xfe>
1748: 77 fc sbrc r7, 7
174a: 07 c0 rjmp .+14 ; 0x175a <draw_fcircle+0x8c>
174c: 21 97 sbiw r28, 0x01 ; 1
174e: 82 e0 ldi r24, 0x02 ; 2
1750: 90 e0 ldi r25, 0x00 ; 0
1752: 48 0e add r4, r24
1754: 59 1e adc r5, r25
1756: 64 0c add r6, r4
1758: 75 1c adc r7, r5
175a: 08 94 sec
175c: 81 1c adc r8, r1
175e: 91 1c adc r9, r1
1760: 82 e0 ldi r24, 0x02 ; 2
1762: 90 e0 ldi r25, 0x00 ; 0
1764: 28 0e add r2, r24
1766: 39 1e adc r3, r25
1768: 62 0c add r6, r2
176a: 73 1c adc r7, r3
176c: 08 94 sec
176e: 61 1c adc r6, r1
1770: 71 1c adc r7, r1
1772: 8c 2d mov r24, r12
1774: 8c 0f add r24, r28
1776: 1a 2d mov r17, r10
1778: 18 19 sub r17, r8
177a: fa 2c mov r15, r10
177c: f8 0c add r15, r8
177e: 01 e0 ldi r16, 0x01 ; 1
1780: 28 2f mov r18, r24
1782: 41 2f mov r20, r17
1784: 68 2f mov r22, r24
1786: 8f 2d mov r24, r15
1788: 0e 94 6f 09 call 0x12de <lcd_line>
178c: 8c 2d mov r24, r12
178e: 8c 1b sub r24, r28
1790: 28 2f mov r18, r24
1792: 41 2f mov r20, r17
1794: 68 2f mov r22, r24
1796: 8f 2d mov r24, r15
1798: 0e 94 6f 09 call 0x12de <lcd_line>
179c: 8c 2d mov r24, r12
179e: 88 0d add r24, r8
17a0: 1a 2d mov r17, r10
17a2: 1c 1b sub r17, r28
17a4: fa 2c mov r15, r10
17a6: fc 0e add r15, r28
17a8: 28 2f mov r18, r24
17aa: 41 2f mov r20, r17
17ac: 68 2f mov r22, r24
17ae: 8f 2d mov r24, r15
17b0: 0e 94 6f 09 call 0x12de <lcd_line>
17b4: 8c 2d mov r24, r12
17b6: 88 19 sub r24, r8
17b8: 28 2f mov r18, r24
17ba: 41 2f mov r20, r17
17bc: 68 2f mov r22, r24
17be: 8f 2d mov r24, r15
17c0: 0e 94 6f 09 call 0x12de <lcd_line>
17c4: 8c 16 cp r8, r28
17c6: 9d 06 cpc r9, r29
17c8: 0c f4 brge .+2 ; 0x17cc <draw_fcircle+0xfe>
17ca: be cf rjmp .-132 ; 0x1748 <draw_fcircle+0x7a>
17cc: df 91 pop r29
17ce: cf 91 pop r28
17d0: 1f 91 pop r17
17d2: 0f 91 pop r16
17d4: ff 90 pop r15
17d6: df 90 pop r13
17d8: cf 90 pop r12
17da: bf 90 pop r11
17dc: af 90 pop r10
17de: 9f 90 pop r9
17e0: 8f 90 pop r8
17e2: 7f 90 pop r7
17e4: 6f 90 pop r6
17e6: 5f 90 pop r5
17e8: 4f 90 pop r4
17ea: 3f 90 pop r3
17ec: 2f 90 pop r2
17ee: 08 95 ret
 
000017f0 <__vector_13>:
volatile uint8_t read_index, write_index;
volatile uint8_t rs232_buffer[16];
 
ISR(USART_RXC_vect)
{
17f0: 1f 92 push r1
17f2: 0f 92 push r0
17f4: 0f b6 in r0, 0x3f ; 63
17f6: 0f 92 push r0
17f8: 11 24 eor r1, r1
17fa: 8f 93 push r24
17fc: 9f 93 push r25
17fe: ef 93 push r30
1800: ff 93 push r31
rs232_buffer[write_index++] = UDR;
1802: 90 91 6c 05 lds r25, 0x056C
1806: ee e6 ldi r30, 0x6E ; 110
1808: f5 e0 ldi r31, 0x05 ; 5
180a: e9 0f add r30, r25
180c: f1 1d adc r31, r1
180e: 8c b1 in r24, 0x0c ; 12
1810: 80 83 st Z, r24
1812: 9f 5f subi r25, 0xFF ; 255
1814: 90 93 6c 05 sts 0x056C, r25
write_index &= 15;
1818: 80 91 6c 05 lds r24, 0x056C
181c: 8f 70 andi r24, 0x0F ; 15
181e: 80 93 6c 05 sts 0x056C, r24
1822: ff 91 pop r31
1824: ef 91 pop r30
1826: 9f 91 pop r25
1828: 8f 91 pop r24
182a: 0f 90 pop r0
182c: 0f be out 0x3f, r0 ; 63
182e: 0f 90 pop r0
1830: 1f 90 pop r1
1832: 18 95 reti
 
00001834 <RS232_init>:
}
 
void RS232_init (void)
{
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
1834: 88 e9 ldi r24, 0x98 ; 152
1836: 8a b9 out 0x0a, r24 ; 10
UBRRL = 7; // 57600 Baud @ 7,372800 MHz
1838: 87 e0 ldi r24, 0x07 ; 7
183a: 89 b9 out 0x09, r24 ; 9
183c: 08 95 ret
 
0000183e <RS232_get>:
}
 
uint8_t RS232_get (void)
{
uint8_t c;
 
rs232_timer = 10;
183e: 8a e0 ldi r24, 0x0A ; 10
1840: 80 93 e5 04 sts 0x04E5, r24
while ((read_index == write_index) && (rs232_timer > 0));
1844: 90 91 6d 05 lds r25, 0x056D
1848: 80 91 6c 05 lds r24, 0x056C
184c: 98 17 cp r25, r24
184e: 21 f4 brne .+8 ; 0x1858 <RS232_get+0x1a>
1850: 80 91 e5 04 lds r24, 0x04E5
1854: 88 23 and r24, r24
1856: b1 f7 brne .-20 ; 0x1844 <RS232_get+0x6>
if (rs232_timer != 0)
1858: 80 91 e5 04 lds r24, 0x04E5
185c: 88 23 and r24, r24
185e: 81 f0 breq .+32 ; 0x1880 <RS232_get+0x42>
{
c = rs232_buffer[read_index++];
1860: 80 91 6d 05 lds r24, 0x056D
1864: e8 2f mov r30, r24
1866: ff 27 eor r31, r31
1868: e2 59 subi r30, 0x92 ; 146
186a: fa 4f sbci r31, 0xFA ; 250
186c: 8f 5f subi r24, 0xFF ; 255
186e: 80 93 6d 05 sts 0x056D, r24
1872: e0 81 ld r30, Z
read_index &= 15;
1874: 80 91 6d 05 lds r24, 0x056D
1878: 8f 70 andi r24, 0x0F ; 15
187a: 80 93 6d 05 sts 0x056D, r24
187e: 01 c0 rjmp .+2 ; 0x1882 <RS232_get+0x44>
}
else
{
c=0;
1880: e8 2f mov r30, r24
}
return c;
}
1882: 8e 2f mov r24, r30
1884: 99 27 eor r25, r25
1886: 08 95 ret
 
00001888 <RS232_send>:
void RS232_send (uint8_t data)
{
while ((UCSRA & (1<<UDRE)) == 0);
1888: 5d 9b sbis 0x0b, 5 ; 11
188a: fe cf rjmp .-4 ; 0x1888 <RS232_send>
UDR = data;
188c: 8c b9 out 0x0c, r24 ; 12
188e: 08 95 ret
 
00001890 <RS232_text>:
}
void RS232_text (uint8_t *text)
{
1890: cf 93 push r28
1892: df 93 push r29
1894: ec 01 movw r28, r24
while (*text)
{
RS232_send(*text);
text++;
1896: 88 81 ld r24, Y
1898: 88 23 and r24, r24
189a: 31 f0 breq .+12 ; 0x18a8 <RS232_text+0x18>
189c: 89 91 ld r24, Y+
189e: 0e 94 44 0c call 0x1888 <RS232_send>
18a2: 88 81 ld r24, Y
18a4: 88 23 and r24, r24
18a6: d1 f7 brne .-12 ; 0x189c <RS232_text+0xc>
18a8: df 91 pop r29
18aa: cf 91 pop r28
18ac: 08 95 ret
 
000018ae <base64_decode>:
}
 
 
uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um
{
18ae: a8 2f mov r26, r24
uint8_t p,q;
uint8_t a,b,c,d;
 
p = 2;
18b0: 62 e0 ldi r22, 0x02 ; 2
q = 0;
18b2: 70 e0 ldi r23, 0x00 ; 0
while (p < number)
{
a = r_buffer[p + 0] - 61;
b = r_buffer[p + 1] - 61;
c = r_buffer[p + 2] - 61;
d = r_buffer[p + 3] - 61;
p += 4;
p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer
p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
p_buffer[q + 2] = ((c & 0x03) << 6) | d;
q += 3;
18b4: 6a 17 cp r22, r26
18b6: b0 f5 brcc .+108 ; 0x1924 <base64_decode+0x76>
18b8: e6 2f mov r30, r22
18ba: ff 27 eor r31, r31
18bc: e7 51 subi r30, 0x17 ; 23
18be: fb 4f sbci r31, 0xFB ; 251
18c0: 80 81 ld r24, Z
18c2: 8d 53 subi r24, 0x3D ; 61
18c4: 31 81 ldd r19, Z+1 ; 0x01
18c6: 3d 53 subi r19, 0x3D ; 61
18c8: 52 81 ldd r21, Z+2 ; 0x02
18ca: 5d 53 subi r21, 0x3D ; 61
18cc: 43 81 ldd r20, Z+3 ; 0x03
18ce: 4d 53 subi r20, 0x3D ; 61
18d0: 6c 5f subi r22, 0xFC ; 252
18d2: e7 2f mov r30, r23
18d4: ff 27 eor r31, r31
18d6: ed 59 subi r30, 0x9D ; 157
18d8: fb 4f sbci r31, 0xFB ; 251
18da: 99 27 eor r25, r25
18dc: 88 0f add r24, r24
18de: 99 1f adc r25, r25
18e0: 88 0f add r24, r24
18e2: 99 1f adc r25, r25
18e4: 23 2f mov r18, r19
18e6: 22 95 swap r18
18e8: 2f 70 andi r18, 0x0F ; 15
18ea: 28 2b or r18, r24
18ec: 20 83 st Z, r18
18ee: 83 2f mov r24, r19
18f0: 99 27 eor r25, r25
18f2: 8f 70 andi r24, 0x0F ; 15
18f4: 90 70 andi r25, 0x00 ; 0
18f6: 34 e0 ldi r19, 0x04 ; 4
18f8: 88 0f add r24, r24
18fa: 99 1f adc r25, r25
18fc: 3a 95 dec r19
18fe: e1 f7 brne .-8 ; 0x18f8 <base64_decode+0x4a>
1900: 25 2f mov r18, r21
1902: 26 95 lsr r18
1904: 26 95 lsr r18
1906: 28 2b or r18, r24
1908: 21 83 std Z+1, r18 ; 0x01
190a: 85 2f mov r24, r21
190c: 99 27 eor r25, r25
190e: 83 70 andi r24, 0x03 ; 3
1910: 90 70 andi r25, 0x00 ; 0
1912: 26 e0 ldi r18, 0x06 ; 6
1914: 88 0f add r24, r24
1916: 99 1f adc r25, r25
1918: 2a 95 dec r18
191a: e1 f7 brne .-8 ; 0x1914 <base64_decode+0x66>
191c: 48 2b or r20, r24
191e: 42 83 std Z+2, r20 ; 0x02
1920: 7d 5f subi r23, 0xFD ; 253
1922: c8 cf rjmp .-112 ; 0x18b4 <base64_decode+0x6>
}
return q; // Rückgabe der Anzahl der Datenbytes
}
1924: 87 2f mov r24, r23
1926: 99 27 eor r25, r25
1928: 08 95 ret
 
0000192a <get_message>:
192a: cf 93 push r28
192c: 84 e1 ldi r24, 0x14 ; 20
192e: 80 93 61 00 sts 0x0061, r24
1932: 0e 94 1f 0c call 0x183e <RS232_get>
1936: 83 32 cpi r24, 0x23 ; 35
1938: 21 f0 breq .+8 ; 0x1942 <get_message+0x18>
193a: 80 91 61 00 lds r24, 0x0061
193e: 88 23 and r24, r24
1940: c1 f7 brne .-16 ; 0x1932 <get_message+0x8>
1942: 80 91 61 00 lds r24, 0x0061
1946: 88 23 and r24, r24
1948: 99 f0 breq .+38 ; 0x1970 <get_message+0x46>
194a: c0 e0 ldi r28, 0x00 ; 0
194c: 0e 94 1f 0c call 0x183e <RS232_get>
1950: ec 2f mov r30, r28
1952: ff 27 eor r31, r31
1954: e7 51 subi r30, 0x17 ; 23
1956: fb 4f sbci r31, 0xFB ; 251
1958: 80 83 st Z, r24
195a: cf 5f subi r28, 0xFF ; 255
195c: c7 fd sbrc r28, 7
195e: cf e7 ldi r28, 0x7F ; 127
1960: 8d 30 cpi r24, 0x0D ; 13
1962: a1 f7 brne .-24 ; 0x194c <get_message+0x22>
1964: 8c 2f mov r24, r28
1966: 0e 94 57 0c call 0x18ae <base64_decode>
196a: 80 e0 ldi r24, 0x00 ; 0
196c: 90 e0 ldi r25, 0x00 ; 0
196e: 02 c0 rjmp .+4 ; 0x1974 <get_message+0x4a>
1970: 81 e0 ldi r24, 0x01 ; 1
1972: 90 e0 ldi r25, 0x00 ; 0
1974: cf 91 pop r28
1976: 08 95 ret
 
00001978 <base64_send>:
 
void base64_send(uint8_t number) // Sendet Daten zur Flight-Control
{ // Die Daten werden in p_buffer erwartet, umcodiert und gesendet
1978: ff 92 push r15
197a: 0f 93 push r16
197c: 1f 93 push r17
197e: cf 93 push r28
1980: a8 2f mov r26, r24
uint8_t bpointer,spointer;
uint8_t x,y,z,a;
uint16_t checksum;
 
r_buffer[0] = p_buffer[0];
1982: 80 91 63 04 lds r24, 0x0463
1986: 80 93 e9 04 sts 0x04E9, r24
r_buffer[1] = p_buffer[1];
198a: 80 91 64 04 lds r24, 0x0464
198e: 80 93 ea 04 sts 0x04EA, r24
r_buffer[2] = p_buffer[2];
1992: 80 91 65 04 lds r24, 0x0465
1996: 80 93 eb 04 sts 0x04EB, r24
 
bpointer = 3;
199a: 43 e0 ldi r20, 0x03 ; 3
199c: f4 2e mov r15, r20
spointer = 3;
199e: 7f 2d mov r23, r15
 
while (spointer < number)
{
x = p_buffer[spointer];
y = p_buffer[spointer + 1];
z = p_buffer[spointer + 2];
spointer += 3;
r_buffer[bpointer + 0] = (x >> 2) + 61;
r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61;
r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61;
r_buffer[bpointer + 3] = (z & 0x3F) + 61;
bpointer += 4;
19a0: fa 16 cp r15, r26
19a2: e0 f5 brcc .+120 ; 0x1a1c <base64_send+0xa4>
19a4: e7 2f mov r30, r23
19a6: ff 27 eor r31, r31
19a8: ed 59 subi r30, 0x9D ; 157
19aa: fb 4f sbci r31, 0xFB ; 251
19ac: 90 81 ld r25, Z
19ae: 21 81 ldd r18, Z+1 ; 0x01
19b0: 62 81 ldd r22, Z+2 ; 0x02
19b2: 7d 5f subi r23, 0xFD ; 253
19b4: ef 2d mov r30, r15
19b6: ff 27 eor r31, r31
19b8: e7 51 subi r30, 0x17 ; 23
19ba: fb 4f sbci r31, 0xFB ; 251
19bc: 89 2f mov r24, r25
19be: 86 95 lsr r24
19c0: 86 95 lsr r24
19c2: 83 5c subi r24, 0xC3 ; 195
19c4: 80 83 st Z, r24
19c6: 89 2f mov r24, r25
19c8: 99 27 eor r25, r25
19ca: 83 70 andi r24, 0x03 ; 3
19cc: 90 70 andi r25, 0x00 ; 0
19ce: 34 e0 ldi r19, 0x04 ; 4
19d0: 88 0f add r24, r24
19d2: 99 1f adc r25, r25
19d4: 3a 95 dec r19
19d6: e1 f7 brne .-8 ; 0x19d0 <base64_send+0x58>
19d8: 42 2f mov r20, r18
19da: 55 27 eor r21, r21
19dc: 9a 01 movw r18, r20
19de: 94 e0 ldi r25, 0x04 ; 4
19e0: 36 95 lsr r19
19e2: 27 95 ror r18
19e4: 9a 95 dec r25
19e6: e1 f7 brne .-8 ; 0x19e0 <base64_send+0x68>
19e8: 82 2b or r24, r18
19ea: 83 5c subi r24, 0xC3 ; 195
19ec: 81 83 std Z+1, r24 ; 0x01
19ee: 4f 70 andi r20, 0x0F ; 15
19f0: 50 70 andi r21, 0x00 ; 0
19f2: 44 0f add r20, r20
19f4: 55 1f adc r21, r21
19f6: 44 0f add r20, r20
19f8: 55 1f adc r21, r21
19fa: 86 2f mov r24, r22
19fc: 99 27 eor r25, r25
19fe: 16 e0 ldi r17, 0x06 ; 6
1a00: 96 95 lsr r25
1a02: 87 95 ror r24
1a04: 1a 95 dec r17
1a06: e1 f7 brne .-8 ; 0x1a00 <base64_send+0x88>
1a08: 84 2b or r24, r20
1a0a: 83 5c subi r24, 0xC3 ; 195
1a0c: 82 83 std Z+2, r24 ; 0x02
1a0e: 6f 73 andi r22, 0x3F ; 63
1a10: 63 5c subi r22, 0xC3 ; 195
1a12: 63 83 std Z+3, r22 ; 0x03
1a14: 84 e0 ldi r24, 0x04 ; 4
1a16: f8 0e add r15, r24
1a18: 7a 17 cp r23, r26
1a1a: 20 f2 brcs .-120 ; 0x19a4 <base64_send+0x2c>
}
 
checksum = 0;
1a1c: 20 e0 ldi r18, 0x00 ; 0
1a1e: 30 e0 ldi r19, 0x00 ; 0
for(a=0;a<bpointer;a++)
1a20: c0 e0 ldi r28, 0x00 ; 0
1a22: cf 15 cp r28, r15
1a24: 40 f4 brcc .+16 ; 0x1a36 <base64_send+0xbe>
1a26: e9 ee ldi r30, 0xE9 ; 233
1a28: f4 e0 ldi r31, 0x04 ; 4
checksum += r_buffer[a];
1a2a: 81 91 ld r24, Z+
1a2c: 28 0f add r18, r24
1a2e: 31 1d adc r19, r1
1a30: cf 5f subi r28, 0xFF ; 255
1a32: cf 15 cp r28, r15
1a34: d0 f3 brcs .-12 ; 0x1a2a <base64_send+0xb2>
checksum %= 4096;
1a36: 3f 70 andi r19, 0x0F ; 15
r_buffer[bpointer] = (checksum / 64) + 61;
1a38: ef 2d mov r30, r15
1a3a: ff 27 eor r31, r31
1a3c: e7 51 subi r30, 0x17 ; 23
1a3e: fb 4f sbci r31, 0xFB ; 251
1a40: c9 01 movw r24, r18
1a42: c6 e0 ldi r28, 0x06 ; 6
1a44: 96 95 lsr r25
1a46: 87 95 ror r24
1a48: ca 95 dec r28
1a4a: e1 f7 brne .-8 ; 0x1a44 <base64_send+0xcc>
1a4c: 83 5c subi r24, 0xC3 ; 195
1a4e: 80 83 st Z, r24
r_buffer[bpointer + 1] = (checksum % 64) + 61;
1a50: 2f 73 andi r18, 0x3F ; 63
1a52: 30 70 andi r19, 0x00 ; 0
1a54: 82 2f mov r24, r18
1a56: 83 5c subi r24, 0xC3 ; 195
1a58: 81 83 std Z+1, r24 ; 0x01
r_buffer[bpointer + 2] = 13;
1a5a: 8d e0 ldi r24, 0x0D ; 13
1a5c: 82 83 std Z+2, r24 ; 0x02
r_buffer[bpointer + 3] = 0;
1a5e: 13 82 std Z+3, r1 ; 0x03
bpointer += 3;
1a60: 83 e0 ldi r24, 0x03 ; 3
1a62: f8 0e add r15, r24
for(a=0;a<bpointer;a++)
1a64: c3 81 ldd r28, Z+3 ; 0x03
1a66: cf 15 cp r28, r15
1a68: 50 f4 brcc .+20 ; 0x1a7e <base64_send+0x106>
1a6a: 09 ee ldi r16, 0xE9 ; 233
1a6c: 14 e0 ldi r17, 0x04 ; 4
RS232_send(r_buffer[a]);
1a6e: f8 01 movw r30, r16
1a70: 81 91 ld r24, Z+
1a72: 8f 01 movw r16, r30
1a74: 0e 94 44 0c call 0x1888 <RS232_send>
1a78: cf 5f subi r28, 0xFF ; 255
1a7a: cf 15 cp r28, r15
1a7c: c0 f3 brcs .-16 ; 0x1a6e <base64_send+0xf6>
1a7e: cf 91 pop r28
1a80: 1f 91 pop r17
1a82: 0f 91 pop r16
1a84: ff 90 pop r15
1a86: 08 95 ret
 
00001a88 <displ_get_text>:
uint8_t displ_page;
 
 
void displ_get_text(uint8_t number)
{
1a88: 1f 93 push r17
1a8a: cf 93 push r28
1a8c: df 93 push r29
1a8e: cd b7 in r28, 0x3d ; 61
1a90: de b7 in r29, 0x3e ; 62
1a92: 61 97 sbiw r28, 0x11 ; 17
1a94: 0f b6 in r0, 0x3f ; 63
1a96: f8 94 cli
1a98: de bf out 0x3e, r29 ; 62
1a9a: 0f be out 0x3f, r0 ; 63
1a9c: cd bf out 0x3d, r28 ; 61
1a9e: 18 2f mov r17, r24
uint8_t text[17];
uint8_t i;
p_buffer[0] = '#';
1aa0: 83 e2 ldi r24, 0x23 ; 35
1aa2: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
1aa6: 81 e6 ldi r24, 0x61 ; 97
1aa8: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 'a';
1aac: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = number;
1ab0: 10 93 66 04 sts 0x0466, r17
p_buffer[4] = 0;
1ab4: 10 92 67 04 sts 0x0467, r1
p_buffer[5] = 0;
1ab8: 10 92 68 04 sts 0x0468, r1
base64_send(6);
1abc: 86 e0 ldi r24, 0x06 ; 6
1abe: 0e 94 bc 0c call 0x1978 <base64_send>
 
do
{
get_message();
1ac2: 0e 94 95 0c call 0x192a <get_message>
}
1ac6: 80 91 ea 04 lds r24, 0x04EA
1aca: 81 34 cpi r24, 0x41 ; 65
1acc: d1 f7 brne .-12 ; 0x1ac2 <displ_get_text+0x3a>
1ace: de 01 movw r26, r28
1ad0: 11 96 adiw r26, 0x01 ; 1
1ad2: e3 e6 ldi r30, 0x63 ; 99
1ad4: f4 e0 ldi r31, 0x04 ; 4
1ad6: 9f e0 ldi r25, 0x0F ; 15
while (r_buffer[1] != 'A');
 
for (i=0;i<16;i++)
text[i] = p_buffer[i];
1ad8: 81 91 ld r24, Z+
1ada: 8d 93 st X+, r24
1adc: 91 50 subi r25, 0x01 ; 1
1ade: 97 ff sbrs r25, 7
1ae0: fb cf rjmp .-10 ; 0x1ad8 <displ_get_text+0x50>
text[16] = 0x00;
1ae2: 19 8a std Y+17, r1 ; 0x11
lcd_print_at(0,(number & 0x07),text,0);
1ae4: 17 70 andi r17, 0x07 ; 7
1ae6: 29 89 ldd r18, Y+17 ; 0x11
1ae8: ae 01 movw r20, r28
1aea: 4f 5f subi r20, 0xFF ; 255
1aec: 5f 4f sbci r21, 0xFF ; 255
1aee: 61 2f mov r22, r17
1af0: 82 2f mov r24, r18
1af2: 0e 94 1d 09 call 0x123a <lcd_print_at>
1af6: 61 96 adiw r28, 0x11 ; 17
1af8: 0f b6 in r0, 0x3f ; 63
1afa: f8 94 cli
1afc: de bf out 0x3e, r29 ; 62
1afe: 0f be out 0x3f, r0 ; 63
1b00: cd bf out 0x3d, r28 ; 61
1b02: df 91 pop r29
1b04: cf 91 pop r28
1b06: 1f 91 pop r17
1b08: 08 95 ret
 
00001b0a <displ_values>:
}
 
void displ_values(void)
{
1b0a: cf 92 push r12
1b0c: df 92 push r13
1b0e: ef 92 push r14
1b10: ff 92 push r15
1b12: 0f 93 push r16
1b14: 1f 93 push r17
1b16: cf 93 push r28
1b18: df 93 push r29
1b1a: cd b7 in r28, 0x3d ; 61
1b1c: de b7 in r29, 0x3e ; 62
1b1e: 61 97 sbiw r28, 0x11 ; 17
1b20: 0f b6 in r0, 0x3f ; 63
1b22: f8 94 cli
1b24: de bf out 0x3e, r29 ; 62
1b26: 0f be out 0x3f, r0 ; 63
1b28: cd bf out 0x3d, r28 ; 61
uint8_t displ_page, i;
int16_t value;
uint8_t text[17];
 
displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte)
1b2a: 00 e0 ldi r16, 0x00 ; 0
lcd_cls(); // LCD löschen
1b2c: 0e 94 36 07 call 0xe6c <lcd_cls>
do
{
for (i=0;i<8;i++) // Texte lesen und anzeigen
1b30: 10 e0 ldi r17, 0x00 ; 0
displ_get_text(i+displ_page*8);
1b32: c0 2e mov r12, r16
1b34: dd 24 eor r13, r13
1b36: c6 01 movw r24, r12
1b38: 53 e0 ldi r21, 0x03 ; 3
1b3a: 88 0f add r24, r24
1b3c: 99 1f adc r25, r25
1b3e: 5a 95 dec r21
1b40: e1 f7 brne .-8 ; 0x1b3a <displ_values+0x30>
1b42: 81 0f add r24, r17
1b44: 0e 94 44 0d call 0x1a88 <displ_get_text>
1b48: 1f 5f subi r17, 0xFF ; 255
1b4a: 18 30 cpi r17, 0x08 ; 8
1b4c: 90 f3 brcs .-28 ; 0x1b32 <displ_values+0x28>
do
{
get_message();
1b4e: 0e 94 95 0c call 0x192a <get_message>
if(r_buffer[1] == 'D')
1b52: 80 91 ea 04 lds r24, 0x04EA
1b56: 84 34 cpi r24, 0x44 ; 68
1b58: 91 f5 brne .+100 ; 0x1bbe <displ_values+0xb4>
{
for (i=0;i<8;i++)
1b5a: 10 e0 ldi r17, 0x00 ; 0
1b5c: ee 24 eor r14, r14
1b5e: ff 24 eor r15, r15
{
value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3];
1b60: f6 01 movw r30, r12
1b62: 43 e0 ldi r20, 0x03 ; 3
1b64: ee 0f add r30, r30
1b66: ff 1f adc r31, r31
1b68: 4a 95 dec r20
1b6a: e1 f7 brne .-8 ; 0x1b64 <displ_values+0x5a>
1b6c: ee 0d add r30, r14
1b6e: ff 1d adc r31, r15
1b70: ee 0f add r30, r30
1b72: ff 1f adc r31, r31
1b74: ed 59 subi r30, 0x9D ; 157
1b76: fb 4f sbci r31, 0xFB ; 251
1b78: 22 81 ldd r18, Z+2 ; 0x02
1b7a: 83 81 ldd r24, Z+3 ; 0x03
1b7c: 99 27 eor r25, r25
1b7e: 98 2f mov r25, r24
1b80: 88 27 eor r24, r24
itoa(value,text,10);
1b82: 4a e0 ldi r20, 0x0A ; 10
1b84: 50 e0 ldi r21, 0x00 ; 0
1b86: be 01 movw r22, r28
1b88: 6f 5f subi r22, 0xFF ; 255
1b8a: 7f 4f sbci r23, 0xFF ; 255
1b8c: 82 0f add r24, r18
1b8e: 91 1d adc r25, r1
1b90: 0e 94 cf 12 call 0x259e <itoa>
lcd_print_atp(14,i,PSTR(" "),0);
1b94: 20 e0 ldi r18, 0x00 ; 0
1b96: 44 e5 ldi r20, 0x54 ; 84
1b98: 56 e0 ldi r21, 0x06 ; 6
1b9a: 61 2f mov r22, r17
1b9c: 8e e0 ldi r24, 0x0E ; 14
1b9e: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
lcd_print_at(14,i,text,0);
1ba2: 20 e0 ldi r18, 0x00 ; 0
1ba4: ae 01 movw r20, r28
1ba6: 4f 5f subi r20, 0xFF ; 255
1ba8: 5f 4f sbci r21, 0xFF ; 255
1baa: 61 2f mov r22, r17
1bac: 8e e0 ldi r24, 0x0E ; 14
1bae: 0e 94 1d 09 call 0x123a <lcd_print_at>
1bb2: 1f 5f subi r17, 0xFF ; 255
1bb4: 08 94 sec
1bb6: e1 1c adc r14, r1
1bb8: f1 1c adc r15, r1
1bba: 18 30 cpi r17, 0x08 ; 8
1bbc: 88 f2 brcs .-94 ; 0x1b60 <displ_values+0x56>
}
}
}
1bbe: 80 91 e6 04 lds r24, 0x04E6
1bc2: 88 23 and r24, r24
1bc4: 21 f2 breq .-120 ; 0x1b4e <displ_values+0x44>
while (key == 0x00);
if (key == 0x01)
1bc6: 80 91 e6 04 lds r24, 0x04E6
1bca: 81 30 cpi r24, 0x01 ; 1
1bcc: 09 f4 brne .+2 ; 0x1bd0 <displ_values+0xc6>
displ_page++;
1bce: 0f 5f subi r16, 0xFF ; 255
if (key == 0x02)
1bd0: 80 91 e6 04 lds r24, 0x04E6
1bd4: 82 30 cpi r24, 0x02 ; 2
1bd6: 09 f4 brne .+2 ; 0x1bda <displ_values+0xd0>
displ_page--;
1bd8: 01 50 subi r16, 0x01 ; 1
displ_page &= 0x03;
1bda: 03 70 andi r16, 0x03 ; 3
}
1bdc: 80 91 e6 04 lds r24, 0x04E6
1be0: 88 30 cpi r24, 0x08 ; 8
1be2: 09 f0 breq .+2 ; 0x1be6 <displ_values+0xdc>
1be4: a5 cf rjmp .-182 ; 0x1b30 <displ_values+0x26>
1be6: 61 96 adiw r28, 0x11 ; 17
1be8: 0f b6 in r0, 0x3f ; 63
1bea: f8 94 cli
1bec: de bf out 0x3e, r29 ; 62
1bee: 0f be out 0x3f, r0 ; 63
1bf0: cd bf out 0x3d, r28 ; 61
1bf2: df 91 pop r29
1bf4: cf 91 pop r28
1bf6: 1f 91 pop r17
1bf8: 0f 91 pop r16
1bfa: ff 90 pop r15
1bfc: ef 90 pop r14
1bfe: df 90 pop r13
1c00: cf 90 pop r12
1c02: 08 95 ret
 
00001c04 <read_parameter>:
 
// Parameter lesen, editieren und zurückschreiben
 
uint8_t read_parameter (uint8_t number) // Number = Parameter-Set#
{
1c04: cf 93 push r28
uint8_t timeout;
timeout = 0;
1c06: c0 e0 ldi r28, 0x00 ; 0
p_buffer[0] = '#'; // Parameter anfordern
1c08: 93 e2 ldi r25, 0x23 ; 35
1c0a: 90 93 63 04 sts 0x0463, r25
p_buffer[1] = 'a';
1c0e: 91 e6 ldi r25, 0x61 ; 97
1c10: 90 93 64 04 sts 0x0464, r25
p_buffer[2] = 'q';
1c14: 91 e7 ldi r25, 0x71 ; 113
1c16: 90 93 65 04 sts 0x0465, r25
p_buffer[3] = number;
1c1a: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 0;
1c1e: c0 93 67 04 sts 0x0467, r28
p_buffer[5] = 0;
1c22: c0 93 68 04 sts 0x0468, r28
base64_send(6);
1c26: 86 e0 ldi r24, 0x06 ; 6
1c28: 0e 94 bc 0c call 0x1978 <base64_send>
 
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1) // Fehler bei der Übertragung?
1c2c: 0e 94 95 0c call 0x192a <get_message>
1c30: 81 30 cpi r24, 0x01 ; 1
1c32: 09 f4 brne .+2 ; 0x1c36 <read_parameter+0x32>
timeout = 30; // Timeout sofort auf Endwert setzen
1c34: ce e1 ldi r28, 0x1E ; 30
timeout ++;
1c36: cf 5f subi r28, 0xFF ; 255
}
1c38: 80 91 ea 04 lds r24, 0x04EA
1c3c: 8c 54 subi r24, 0x4C ; 76
1c3e: 85 30 cpi r24, 0x05 ; 5
1c40: 10 f0 brcs .+4 ; 0x1c46 <read_parameter+0x42>
1c42: ce 31 cpi r28, 0x1E ; 30
1c44: 98 f3 brcs .-26 ; 0x1c2c <read_parameter+0x28>
while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat
if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0
1c46: ce 31 cpi r28, 0x1E ; 30
1c48: 18 f0 brcs .+6 ; 0x1c50 <read_parameter+0x4c>
return 1;
1c4a: 81 e0 ldi r24, 0x01 ; 1
1c4c: 90 e0 ldi r25, 0x00 ; 0
1c4e: 02 c0 rjmp .+4 ; 0x1c54 <read_parameter+0x50>
else
return 0;
1c50: 80 e0 ldi r24, 0x00 ; 0
1c52: 90 e0 ldi r25, 0x00 ; 0
1c54: cf 91 pop r28
1c56: 08 95 ret
 
00001c58 <write_parameter>:
}
 
void write_parameter(uint8_t number) // Schreibe Parameter-Satz
{
1c58: 98 2f mov r25, r24
uint8_t i;
if (number <= 5)
1c5a: 86 30 cpi r24, 0x06 ; 6
1c5c: b8 f4 brcc .+46 ; 0x1c8c <write_parameter+0x34>
1c5e: e9 ea ldi r30, 0xA9 ; 169
1c60: f4 e0 ldi r31, 0x04 ; 4
1c62: 26 e4 ldi r18, 0x46 ; 70
{
 
for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben
p_buffer[(70-i)+3] = p_buffer[70-i];
1c64: 80 81 ld r24, Z
1c66: 83 83 std Z+3, r24 ; 0x03
1c68: 21 50 subi r18, 0x01 ; 1
1c6a: 31 97 sbiw r30, 0x01 ; 1
1c6c: 27 ff sbrs r18, 7
1c6e: fa cf rjmp .-12 ; 0x1c64 <write_parameter+0xc>
p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter
1c70: 83 e2 ldi r24, 0x23 ; 35
1c72: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
1c76: 81 e6 ldi r24, 0x61 ; 97
1c78: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = number + 'k'; // Nummer des Parameters
1c7c: 95 59 subi r25, 0x95 ; 149
1c7e: 90 93 65 04 sts 0x0465, r25
p_buffer[74] = 0;
1c82: 10 92 ad 04 sts 0x04AD, r1
base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes
1c86: 8b e4 ldi r24, 0x4B ; 75
1c88: 0e 94 bc 0c call 0x1978 <base64_send>
1c8c: 08 95 ret
 
00001c8e <binary>:
}
}
 
void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen)
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
1c8e: 9b 01 movw r18, r22
1c90: 68 2f mov r22, r24
1c92: 77 27 eor r23, r23
1c94: 51 e0 ldi r21, 0x01 ; 1
1c96: f9 01 movw r30, r18
1c98: 20 e0 ldi r18, 0x00 ; 0
1c9a: 30 e0 ldi r19, 0x00 ; 0
1c9c: 47 e0 ldi r20, 0x07 ; 7
uint8_t i;
i=0;
for (i=0;i<8;i++)
{
if ((1<<i) & data)
1c9e: cb 01 movw r24, r22
1ca0: 02 2e mov r0, r18
1ca2: 02 c0 rjmp .+4 ; 0x1ca8 <binary+0x1a>
1ca4: 95 95 asr r25
1ca6: 87 95 ror r24
1ca8: 0a 94 dec r0
1caa: e2 f7 brpl .-8 ; 0x1ca4 <binary+0x16>
1cac: 80 ff sbrs r24, 0
1cae: 02 c0 rjmp .+4 ; 0x1cb4 <binary+0x26>
feld[i] = 1;
1cb0: 50 83 st Z, r21
1cb2: 01 c0 rjmp .+2 ; 0x1cb6 <binary+0x28>
else
feld[i] = 0;
1cb4: 10 82 st Z, r1
1cb6: 41 50 subi r20, 0x01 ; 1
1cb8: 2f 5f subi r18, 0xFF ; 255
1cba: 3f 4f sbci r19, 0xFF ; 255
1cbc: 31 96 adiw r30, 0x01 ; 1
1cbe: 47 ff sbrs r20, 7
1cc0: ee cf rjmp .-36 ; 0x1c9e <binary+0x10>
1cc2: 08 95 ret
 
00001cc4 <bindec>:
}
}
 
uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
uint8_t i;
uint8_t result;
result = 0;
1cc4: 50 e0 ldi r21, 0x00 ; 0
1cc6: 61 e0 ldi r22, 0x01 ; 1
1cc8: 70 e0 ldi r23, 0x00 ; 0
1cca: fc 01 movw r30, r24
1ccc: 20 e0 ldi r18, 0x00 ; 0
1cce: 30 e0 ldi r19, 0x00 ; 0
1cd0: 47 e0 ldi r20, 0x07 ; 7
for (i=0;i<8;i++)
{
if (feld[i] == 1)
1cd2: 81 91 ld r24, Z+
1cd4: 81 30 cpi r24, 0x01 ; 1
1cd6: 41 f4 brne .+16 ; 0x1ce8 <bindec+0x24>
result += 1<<i;
1cd8: cb 01 movw r24, r22
1cda: 02 2e mov r0, r18
1cdc: 02 c0 rjmp .+4 ; 0x1ce2 <bindec+0x1e>
1cde: 88 0f add r24, r24
1ce0: 99 1f adc r25, r25
1ce2: 0a 94 dec r0
1ce4: e2 f7 brpl .-8 ; 0x1cde <bindec+0x1a>
1ce6: 58 0f add r21, r24
1ce8: 41 50 subi r20, 0x01 ; 1
1cea: 2f 5f subi r18, 0xFF ; 255
1cec: 3f 4f sbci r19, 0xFF ; 255
1cee: 47 ff sbrs r20, 7
1cf0: f0 cf rjmp .-32 ; 0x1cd2 <bindec+0xe>
}
return result;
}
1cf2: 85 2f mov r24, r21
1cf4: 99 27 eor r25, r25
1cf6: 08 95 ret
 
00001cf8 <decimal>:
 
 
 
 
void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um
{ // (schneller/kleiner als printf())
1cf8: 28 2f mov r18, r24
1cfa: fb 01 movw r30, r22
text[0] = data/100;
1cfc: 34 e6 ldi r19, 0x64 ; 100
1cfe: 63 2f mov r22, r19
1d00: 0e 94 16 13 call 0x262c <__udivmodqi4>
1d04: 58 2f mov r21, r24
data -= (text[0] * 100);
1d06: 83 9f mul r24, r19
1d08: c0 01 movw r24, r0
1d0a: 11 24 eor r1, r1
1d0c: 28 1b sub r18, r24
text[1] = data/10;
1d0e: 3a e0 ldi r19, 0x0A ; 10
1d10: 82 2f mov r24, r18
1d12: 63 2f mov r22, r19
1d14: 0e 94 16 13 call 0x262c <__udivmodqi4>
1d18: 48 2f mov r20, r24
data -= (text[1] *10);
1d1a: 83 9f mul r24, r19
1d1c: c0 01 movw r24, r0
1d1e: 11 24 eor r1, r1
1d20: 28 1b sub r18, r24
text[2] = data + 0x30;
1d22: 20 5d subi r18, 0xD0 ; 208
1d24: 22 83 std Z+2, r18 ; 0x02
text[0] += 0x30;
1d26: 85 2f mov r24, r21
1d28: 80 5d subi r24, 0xD0 ; 208
1d2a: 80 83 st Z, r24
text[1] += 0x30;
1d2c: 40 5d subi r20, 0xD0 ; 208
1d2e: 41 83 std Z+1, r20 ; 0x01
 
if (text[0] == 0x30)
1d30: 80 33 cpi r24, 0x30 ; 48
1d32: 29 f4 brne .+10 ; 0x1d3e <decimal+0x46>
{
text[0] = 0x20;
1d34: 80 e2 ldi r24, 0x20 ; 32
1d36: 80 83 st Z, r24
if (text[1] == 0x30)
1d38: 40 33 cpi r20, 0x30 ; 48
1d3a: 09 f4 brne .+2 ; 0x1d3e <decimal+0x46>
text[1] = 0x20;
1d3c: 81 83 std Z+1, r24 ; 0x01
}
text[3] = 0x00;
1d3e: 13 82 std Z+3, r1 ; 0x03
1d40: 08 95 ret
 
00001d42 <show_parameter>:
}
 
uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück
{
1d42: 9f 92 push r9
1d44: af 92 push r10
1d46: bf 92 push r11
1d48: cf 92 push r12
1d4a: df 92 push r13
1d4c: ef 92 push r14
1d4e: ff 92 push r15
1d50: 0f 93 push r16
1d52: 1f 93 push r17
1d54: cf 93 push r28
1d56: df 93 push r29
1d58: cd b7 in r28, 0x3d ; 61
1d5a: de b7 in r29, 0x3e ; 62
1d5c: a1 97 sbiw r28, 0x21 ; 33
1d5e: 0f b6 in r0, 0x3f ; 63
1d60: f8 94 cli
1d62: de bf out 0x3e, r29 ; 62
1d64: 0f be out 0x3f, r0 ; 63
1d66: cd bf out 0x3d, r28 ; 61
1d68: 08 2f mov r16, r24
uint8_t i;
uint8_t line;
uint8_t text[25];
uint8_t bin[8];
line = 0;
1d6a: 99 24 eor r9, r9
if (number > 1)
1d6c: 82 30 cpi r24, 0x02 ; 2
1d6e: 08 f4 brcc .+2 ; 0x1d72 <show_parameter+0x30>
1d70: 3e c0 rjmp .+124 ; 0x1dee <show_parameter+0xac>
{
for (i = 0; i<66; i++)
1d72: 19 2d mov r17, r9
1d74: 4b e5 ldi r20, 0x5B ; 91
1d76: a4 2e mov r10, r20
1d78: 46 e0 ldi r20, 0x06 ; 6
1d7a: b4 2e mov r11, r20
1d7c: 33 e6 ldi r19, 0x63 ; 99
1d7e: c3 2e mov r12, r19
1d80: 34 e0 ldi r19, 0x04 ; 4
1d82: d3 2e mov r13, r19
1d84: 2d e7 ldi r18, 0x7D ; 125
1d86: e2 2e mov r14, r18
1d88: 2a e0 ldi r18, 0x0A ; 10
1d8a: f2 2e mov r15, r18
{
if (pgm_read_byte(p_limits+i*3+2) == number)
1d8c: f7 01 movw r30, r14
1d8e: 84 91 lpm r24, Z
1d90: 80 17 cp r24, r16
1d92: f1 f4 brne .+60 ; 0x1dd0 <show_parameter+0x8e>
{
array[line] = i;
1d94: e9 2d mov r30, r9
1d96: ff 27 eor r31, r31
1d98: e1 58 subi r30, 0x81 ; 129
1d9a: fa 4f sbci r31, 0xFA ; 250
1d9c: 10 83 st Z, r17
decimal(p_buffer[i],text);
1d9e: be 01 movw r22, r28
1da0: 6f 5f subi r22, 0xFF ; 255
1da2: 7f 4f sbci r23, 0xFF ; 255
1da4: f6 01 movw r30, r12
1da6: 80 81 ld r24, Z
1da8: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print_at(0,line,text,0);
1dac: 20 e0 ldi r18, 0x00 ; 0
1dae: ae 01 movw r20, r28
1db0: 4f 5f subi r20, 0xFF ; 255
1db2: 5f 4f sbci r21, 0xFF ; 255
1db4: 69 2d mov r22, r9
1db6: 82 2f mov r24, r18
1db8: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,line,parameter[i],0);
1dbc: 20 e0 ldi r18, 0x00 ; 0
1dbe: a5 01 movw r20, r10
1dc0: 69 2d mov r22, r9
1dc2: 85 e0 ldi r24, 0x05 ; 5
1dc4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
if (line <= 7)
1dc8: f7 e0 ldi r31, 0x07 ; 7
1dca: f9 15 cp r31, r9
1dcc: 08 f0 brcs .+2 ; 0x1dd0 <show_parameter+0x8e>
line++;
1dce: 93 94 inc r9
1dd0: 1f 5f subi r17, 0xFF ; 255
1dd2: 83 e0 ldi r24, 0x03 ; 3
1dd4: 90 e0 ldi r25, 0x00 ; 0
1dd6: e8 0e add r14, r24
1dd8: f9 1e adc r15, r25
1dda: 08 94 sec
1ddc: c1 1c adc r12, r1
1dde: d1 1c adc r13, r1
1de0: e0 e1 ldi r30, 0x10 ; 16
1de2: f0 e0 ldi r31, 0x00 ; 0
1de4: ae 0e add r10, r30
1de6: bf 1e adc r11, r31
1de8: 12 34 cpi r17, 0x42 ; 66
1dea: 80 f2 brcs .-96 ; 0x1d8c <show_parameter+0x4a>
1dec: 5f c0 rjmp .+190 ; 0x1eac <show_parameter+0x16a>
}
}
}
else
{ // Sonderfälle: Binäre Eingabe
if (number == 1)
1dee: 81 30 cpi r24, 0x01 ; 1
1df0: 71 f5 brne .+92 ; 0x1e4e <show_parameter+0x10c>
{
binary(p_buffer[52],bin); // Loop-Config
1df2: be 01 movw r22, r28
1df4: 66 5e subi r22, 0xE6 ; 230
1df6: 7f 4f sbci r23, 0xFF ; 255
1df8: 80 91 97 04 lds r24, 0x0497
1dfc: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1e00: 9a 82 std Y+2, r9 ; 0x02
for (i=0;i<4;i++)
1e02: 19 2d mov r17, r9
1e04: 9b eb ldi r25, 0xBB ; 187
1e06: c9 2e mov r12, r25
1e08: 99 e0 ldi r25, 0x09 ; 9
1e0a: d9 2e mov r13, r25
1e0c: ee 24 eor r14, r14
1e0e: ff 24 eor r15, r15
{
text[0] = bin[i] + 0x30;
1e10: ce 01 movw r24, r28
1e12: 01 96 adiw r24, 0x01 ; 1
1e14: f7 01 movw r30, r14
1e16: e8 0f add r30, r24
1e18: f9 1f adc r31, r25
1e1a: 21 8d ldd r18, Z+25 ; 0x19
1e1c: 20 5d subi r18, 0xD0 ; 208
1e1e: 29 83 std Y+1, r18 ; 0x01
lcd_print_at(0,i,text,0);
1e20: 20 e0 ldi r18, 0x00 ; 0
1e22: ac 01 movw r20, r24
1e24: 61 2f mov r22, r17
1e26: 82 2f mov r24, r18
1e28: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,i,bin_parameter[i],0);
1e2c: 20 e0 ldi r18, 0x00 ; 0
1e2e: a6 01 movw r20, r12
1e30: 61 2f mov r22, r17
1e32: 85 e0 ldi r24, 0x05 ; 5
1e34: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
1e38: 1f 5f subi r17, 0xFF ; 255
1e3a: 08 94 sec
1e3c: e1 1c adc r14, r1
1e3e: f1 1c adc r15, r1
1e40: 80 e1 ldi r24, 0x10 ; 16
1e42: 90 e0 ldi r25, 0x00 ; 0
1e44: c8 0e add r12, r24
1e46: d9 1e adc r13, r25
1e48: 14 30 cpi r17, 0x04 ; 4
1e4a: 10 f3 brcs .-60 ; 0x1e10 <show_parameter+0xce>
1e4c: 2f c0 rjmp .+94 ; 0x1eac <show_parameter+0x16a>
}
}
if (number == 0)
1e4e: 88 23 and r24, r24
1e50: 69 f5 brne .+90 ; 0x1eac <show_parameter+0x16a>
{
binary(p_buffer[8],bin); // Config
1e52: be 01 movw r22, r28
1e54: 66 5e subi r22, 0xE6 ; 230
1e56: 7f 4f sbci r23, 0xFF ; 255
1e58: 80 91 6b 04 lds r24, 0x046B
1e5c: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1e60: 9a 82 std Y+2, r9 ; 0x02
for (i=0;i<8;i++)
1e62: 19 2d mov r17, r9
1e64: 8b ef ldi r24, 0xFB ; 251
1e66: c8 2e mov r12, r24
1e68: 89 e0 ldi r24, 0x09 ; 9
1e6a: d8 2e mov r13, r24
1e6c: ee 24 eor r14, r14
1e6e: ff 24 eor r15, r15
{
text[0] = bin[i] + 0x30;
1e70: ce 01 movw r24, r28
1e72: 01 96 adiw r24, 0x01 ; 1
1e74: f7 01 movw r30, r14
1e76: e8 0f add r30, r24
1e78: f9 1f adc r31, r25
1e7a: 21 8d ldd r18, Z+25 ; 0x19
1e7c: 20 5d subi r18, 0xD0 ; 208
1e7e: 29 83 std Y+1, r18 ; 0x01
lcd_print_at(0,i,text,0);
1e80: 20 e0 ldi r18, 0x00 ; 0
1e82: ac 01 movw r20, r24
1e84: 61 2f mov r22, r17
1e86: 82 2f mov r24, r18
1e88: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,i,bin_parameter[i+4],0);
1e8c: 20 e0 ldi r18, 0x00 ; 0
1e8e: a6 01 movw r20, r12
1e90: 61 2f mov r22, r17
1e92: 85 e0 ldi r24, 0x05 ; 5
1e94: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
1e98: 1f 5f subi r17, 0xFF ; 255
1e9a: 08 94 sec
1e9c: e1 1c adc r14, r1
1e9e: f1 1c adc r15, r1
1ea0: e0 e1 ldi r30, 0x10 ; 16
1ea2: f0 e0 ldi r31, 0x00 ; 0
1ea4: ce 0e add r12, r30
1ea6: df 1e adc r13, r31
1ea8: 18 30 cpi r17, 0x08 ; 8
1eaa: 10 f3 brcs .-60 ; 0x1e70 <show_parameter+0x12e>
}
}
 
}
return line;
}
1eac: 89 2d mov r24, r9
1eae: 99 27 eor r25, r25
1eb0: a1 96 adiw r28, 0x21 ; 33
1eb2: 0f b6 in r0, 0x3f ; 63
1eb4: f8 94 cli
1eb6: de bf out 0x3e, r29 ; 62
1eb8: 0f be out 0x3f, r0 ; 63
1eba: cd bf out 0x3d, r28 ; 61
1ebc: df 91 pop r29
1ebe: cf 91 pop r28
1ec0: 1f 91 pop r17
1ec2: 0f 91 pop r16
1ec4: ff 90 pop r15
1ec6: ef 90 pop r14
1ec8: df 90 pop r13
1eca: cf 90 pop r12
1ecc: bf 90 pop r11
1ece: af 90 pop r10
1ed0: 9f 90 pop r9
1ed2: 08 95 ret
 
00001ed4 <edit_parameter2>:
 
void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite
{
1ed4: 8f 92 push r8
1ed6: 9f 92 push r9
1ed8: af 92 push r10
1eda: bf 92 push r11
1edc: df 92 push r13
1ede: ef 92 push r14
1ee0: ff 92 push r15
1ee2: 0f 93 push r16
1ee4: 1f 93 push r17
1ee6: cf 93 push r28
1ee8: df 93 push r29
1eea: cd b7 in r28, 0x3d ; 61
1eec: de b7 in r29, 0x3e ; 62
1eee: 62 97 sbiw r28, 0x12 ; 18
1ef0: 0f b6 in r0, 0x3f ; 63
1ef2: f8 94 cli
1ef4: de bf out 0x3e, r29 ; 62
1ef6: 0f be out 0x3f, r0 ; 63
1ef8: cd bf out 0x3d, r28 ; 61
1efa: d8 2e mov r13, r24
uint8_t line;
uint8_t par;
uint8_t min;
uint8_t max;
uint8_t text[10];
uint8_t bin[8];
if (page > 1) // "normale" Parameter-Seiten
1efc: 81 e0 ldi r24, 0x01 ; 1
1efe: 8d 15 cp r24, r13
1f00: 08 f0 brcs .+2 ; 0x1f04 <edit_parameter2+0x30>
1f02: 55 c0 rjmp .+170 ; 0x1fae <edit_parameter2+0xda>
{
line = menu_choose(0,lines-1,4);
1f04: 61 50 subi r22, 0x01 ; 1
1f06: 44 e0 ldi r20, 0x04 ; 4
1f08: 80 e0 ldi r24, 0x00 ; 0
1f0a: 0e 94 86 11 call 0x230c <menu_choose>
1f0e: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
1f10: 8f 3f cpi r24, 0xFF ; 255
1f12: 09 f4 brne .+2 ; 0x1f16 <edit_parameter2+0x42>
1f14: 4c c0 rjmp .+152 ; 0x1fae <edit_parameter2+0xda>
{
par = p_buffer[array[line]];
1f16: e8 2e mov r14, r24
1f18: ff 24 eor r15, r15
1f1a: f7 01 movw r30, r14
1f1c: e1 58 subi r30, 0x81 ; 129
1f1e: fa 4f sbci r31, 0xFA ; 250
1f20: 80 81 ld r24, Z
1f22: e8 2f mov r30, r24
1f24: ff 27 eor r31, r31
1f26: ed 59 subi r30, 0x9D ; 157
1f28: fb 4f sbci r31, 0xFB ; 251
1f2a: 10 81 ld r17, Z
min = pgm_read_byte(p_limits + par * 3);
max = pgm_read_byte(p_limits + par * 3 + 1);
lcd_print_atp(4,line,PSTR("-"),0);
1f2c: 20 e0 ldi r18, 0x00 ; 0
1f2e: 49 e0 ldi r20, 0x09 ; 9
1f30: 5c e0 ldi r21, 0x0C ; 12
1f32: 60 2f mov r22, r16
1f34: 84 e0 ldi r24, 0x04 ; 4
1f36: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
while (key != key_nokey);
1f3a: 80 91 e6 04 lds r24, 0x04E6
1f3e: 88 23 and r24, r24
1f40: e1 f7 brne .-8 ; 0x1f3a <edit_parameter2+0x66>
do
{
if (key == key_minus)
1f42: 80 91 e6 04 lds r24, 0x04E6
1f46: 81 30 cpi r24, 0x01 ; 1
1f48: 09 f4 brne .+2 ; 0x1f4c <edit_parameter2+0x78>
{
//if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert
par --;
1f4a: 11 50 subi r17, 0x01 ; 1
}
if (key == key_plus)
1f4c: 80 91 e6 04 lds r24, 0x04E6
1f50: 82 30 cpi r24, 0x02 ; 2
1f52: 09 f4 brne .+2 ; 0x1f56 <edit_parameter2+0x82>
{
//if (par < max)
par ++;
1f54: 1f 5f subi r17, 0xFF ; 255
}
decimal(par,text);
1f56: be 01 movw r22, r28
1f58: 6f 5f subi r22, 0xFF ; 255
1f5a: 7f 4f sbci r23, 0xFF ; 255
1f5c: 81 2f mov r24, r17
1f5e: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print_at(0,line,text,0);
1f62: 20 e0 ldi r18, 0x00 ; 0
1f64: ae 01 movw r20, r28
1f66: 4f 5f subi r20, 0xFF ; 255
1f68: 5f 4f sbci r21, 0xFF ; 255
1f6a: 60 2f mov r22, r16
1f6c: 82 2f mov r24, r18
1f6e: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
1f72: 84 e1 ldi r24, 0x14 ; 20
1f74: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
1f78: 80 91 61 00 lds r24, 0x0061
1f7c: 88 23 and r24, r24
1f7e: e1 f7 brne .-8 ; 0x1f78 <edit_parameter2+0xa4>
}
1f80: 80 91 e6 04 lds r24, 0x04E6
1f84: 84 30 cpi r24, 0x04 ; 4
1f86: 21 f0 breq .+8 ; 0x1f90 <edit_parameter2+0xbc>
1f88: 80 91 e6 04 lds r24, 0x04E6
1f8c: 88 30 cpi r24, 0x08 ; 8
1f8e: c9 f6 brne .-78 ; 0x1f42 <edit_parameter2+0x6e>
while ((key != 0x04) && (key != 0x08));
if (key == 0x08)
1f90: 80 91 e6 04 lds r24, 0x04E6
1f94: 88 30 cpi r24, 0x08 ; 8
1f96: 59 f4 brne .+22 ; 0x1fae <edit_parameter2+0xda>
p_buffer[array[line]] = par;
1f98: ef e7 ldi r30, 0x7F ; 127
1f9a: f5 e0 ldi r31, 0x05 ; 5
1f9c: ee 0e add r14, r30
1f9e: ff 1e adc r15, r31
1fa0: f7 01 movw r30, r14
1fa2: 80 81 ld r24, Z
1fa4: e8 2f mov r30, r24
1fa6: ff 27 eor r31, r31
1fa8: ed 59 subi r30, 0x9D ; 157
1faa: fb 4f sbci r31, 0xFB ; 251
1fac: 10 83 st Z, r17
}
}
if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen)
1fae: f1 e0 ldi r31, 0x01 ; 1
1fb0: df 16 cp r13, r31
1fb2: 09 f0 breq .+2 ; 0x1fb6 <edit_parameter2+0xe2>
1fb4: 6c c0 rjmp .+216 ; 0x208e <edit_parameter2+0x1ba>
{
binary(p_buffer[52],bin);
1fb6: 6b e0 ldi r22, 0x0B ; 11
1fb8: 86 2e mov r8, r22
1fba: 91 2c mov r9, r1
1fbc: 8c 0e add r8, r28
1fbe: 9d 1e adc r9, r29
1fc0: b4 01 movw r22, r8
1fc2: 80 91 97 04 lds r24, 0x0497
1fc6: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1fca: 1a 82 std Y+2, r1 ; 0x02
 
line = menu_choose(0,3,4);
1fcc: 44 e0 ldi r20, 0x04 ; 4
1fce: 63 e0 ldi r22, 0x03 ; 3
1fd0: 8a 81 ldd r24, Y+2 ; 0x02
1fd2: 0e 94 86 11 call 0x230c <menu_choose>
1fd6: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
1fd8: 8f 3f cpi r24, 0xFF ; 255
1fda: 09 f4 brne .+2 ; 0x1fde <edit_parameter2+0x10a>
1fdc: c6 c0 rjmp .+396 ; 0x216a <edit_parameter2+0x296>
{
par = bin[line];
1fde: e8 2e mov r14, r24
1fe0: ff 24 eor r15, r15
1fe2: 5e 01 movw r10, r28
1fe4: 08 94 sec
1fe6: a1 1c adc r10, r1
1fe8: b1 1c adc r11, r1
1fea: f7 01 movw r30, r14
1fec: ea 0d add r30, r10
1fee: fb 1d adc r31, r11
1ff0: 12 85 ldd r17, Z+10 ; 0x0a
lcd_print_atp(4,line,PSTR("-"),0);
1ff2: 20 e0 ldi r18, 0x00 ; 0
1ff4: 4b e0 ldi r20, 0x0B ; 11
1ff6: 5c e0 ldi r21, 0x0C ; 12
1ff8: 68 2f mov r22, r24
1ffa: 84 e0 ldi r24, 0x04 ; 4
1ffc: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
do
{
if (key == key_minus)
2000: 80 91 e6 04 lds r24, 0x04E6
2004: 81 30 cpi r24, 0x01 ; 1
2006: 09 f4 brne .+2 ; 0x200a <edit_parameter2+0x136>
{
par = 0x00;
2008: 10 e0 ldi r17, 0x00 ; 0
}
if (key == key_plus)
200a: 80 91 e6 04 lds r24, 0x04E6
200e: 82 30 cpi r24, 0x02 ; 2
2010: 09 f4 brne .+2 ; 0x2014 <edit_parameter2+0x140>
{
par = 0x01;
2012: 11 e0 ldi r17, 0x01 ; 1
}
text[0] = par+0x30;
2014: 10 5d subi r17, 0xD0 ; 208
2016: 19 83 std Y+1, r17 ; 0x01
2018: 10 53 subi r17, 0x30 ; 48
lcd_print_at(0,line,text,0);
201a: 20 e0 ldi r18, 0x00 ; 0
201c: ae 01 movw r20, r28
201e: 4f 5f subi r20, 0xFF ; 255
2020: 5f 4f sbci r21, 0xFF ; 255
2022: 60 2f mov r22, r16
2024: 82 2f mov r24, r18
2026: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
202a: 84 e1 ldi r24, 0x14 ; 20
202c: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
2030: d0 90 61 00 lds r13, 0x0061
2034: dd 20 and r13, r13
2036: e1 f7 brne .-8 ; 0x2030 <edit_parameter2+0x15c>
}
2038: 80 91 e6 04 lds r24, 0x04E6
203c: 88 30 cpi r24, 0x08 ; 8
203e: 21 f0 breq .+8 ; 0x2048 <edit_parameter2+0x174>
2040: 80 91 e6 04 lds r24, 0x04E6
2044: 84 30 cpi r24, 0x04 ; 4
2046: e1 f6 brne .-72 ; 0x2000 <edit_parameter2+0x12c>
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
2048: 80 91 e6 04 lds r24, 0x04E6
204c: 88 30 cpi r24, 0x08 ; 8
204e: 49 f4 brne .+18 ; 0x2062 <edit_parameter2+0x18e>
{
bin[line] = par;
2050: ea 0c add r14, r10
2052: fb 1c adc r15, r11
2054: f7 01 movw r30, r14
2056: 12 87 std Z+10, r17 ; 0x0a
p_buffer[52] = bindec(bin);
2058: c4 01 movw r24, r8
205a: 0e 94 62 0e call 0x1cc4 <bindec>
205e: 80 93 97 04 sts 0x0497, r24
}
lcd_cls();
2062: 0e 94 36 07 call 0xe6c <lcd_cls>
decimal(p_buffer[52],text);
2066: be 01 movw r22, r28
2068: 6f 5f subi r22, 0xFF ; 255
206a: 7f 4f sbci r23, 0xFF ; 255
206c: 80 91 97 04 lds r24, 0x0497
2070: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print(text,0);
2074: 6d 2d mov r22, r13
2076: ce 01 movw r24, r28
2078: 01 96 adiw r24, 0x01 ; 1
207a: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 200;
207e: 88 ec ldi r24, 0xC8 ; 200
2080: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
2084: 80 91 61 00 lds r24, 0x0061
2088: 88 23 and r24, r24
208a: e1 f7 brne .-8 ; 0x2084 <edit_parameter2+0x1b0>
208c: 6e c0 rjmp .+220 ; 0x216a <edit_parameter2+0x296>
}
}
if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen)
208e: dd 20 and r13, r13
2090: 09 f0 breq .+2 ; 0x2094 <edit_parameter2+0x1c0>
2092: 6b c0 rjmp .+214 ; 0x216a <edit_parameter2+0x296>
{
binary(p_buffer[8],bin);
2094: 5b e0 ldi r21, 0x0B ; 11
2096: 85 2e mov r8, r21
2098: 91 2c mov r9, r1
209a: 8c 0e add r8, r28
209c: 9d 1e adc r9, r29
209e: b4 01 movw r22, r8
20a0: 80 91 6b 04 lds r24, 0x046B
20a4: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
20a8: da 82 std Y+2, r13 ; 0x02
 
line = menu_choose(0,7,4);
20aa: 44 e0 ldi r20, 0x04 ; 4
20ac: 67 e0 ldi r22, 0x07 ; 7
20ae: 8d 2d mov r24, r13
20b0: 0e 94 86 11 call 0x230c <menu_choose>
20b4: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
20b6: 8f 3f cpi r24, 0xFF ; 255
20b8: 09 f4 brne .+2 ; 0x20bc <edit_parameter2+0x1e8>
20ba: 57 c0 rjmp .+174 ; 0x216a <edit_parameter2+0x296>
{
par = bin[line];
20bc: e8 2e mov r14, r24
20be: ff 24 eor r15, r15
20c0: 5e 01 movw r10, r28
20c2: 08 94 sec
20c4: a1 1c adc r10, r1
20c6: b1 1c adc r11, r1
20c8: f7 01 movw r30, r14
20ca: ea 0d add r30, r10
20cc: fb 1d adc r31, r11
20ce: 12 85 ldd r17, Z+10 ; 0x0a
lcd_print_atp(4,line,PSTR("-"),0);
20d0: 2d 2d mov r18, r13
20d2: 4d e0 ldi r20, 0x0D ; 13
20d4: 5c e0 ldi r21, 0x0C ; 12
20d6: 68 2f mov r22, r24
20d8: 84 e0 ldi r24, 0x04 ; 4
20da: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
do
{
if (key == key_minus)
20de: 80 91 e6 04 lds r24, 0x04E6
20e2: 81 30 cpi r24, 0x01 ; 1
20e4: 09 f4 brne .+2 ; 0x20e8 <edit_parameter2+0x214>
{
par = 0x00;
20e6: 10 e0 ldi r17, 0x00 ; 0
}
if (key == key_plus)
20e8: 80 91 e6 04 lds r24, 0x04E6
20ec: 82 30 cpi r24, 0x02 ; 2
20ee: 09 f4 brne .+2 ; 0x20f2 <edit_parameter2+0x21e>
{
par = 0x01;
20f0: 11 e0 ldi r17, 0x01 ; 1
}
text[0] = par+0x30;
20f2: 10 5d subi r17, 0xD0 ; 208
20f4: 19 83 std Y+1, r17 ; 0x01
20f6: 10 53 subi r17, 0x30 ; 48
lcd_print_at(0,line,text,0);
20f8: 20 e0 ldi r18, 0x00 ; 0
20fa: ae 01 movw r20, r28
20fc: 4f 5f subi r20, 0xFF ; 255
20fe: 5f 4f sbci r21, 0xFF ; 255
2100: 60 2f mov r22, r16
2102: 82 2f mov r24, r18
2104: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
2108: 84 e1 ldi r24, 0x14 ; 20
210a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
210e: d0 90 61 00 lds r13, 0x0061
2112: dd 20 and r13, r13
2114: e1 f7 brne .-8 ; 0x210e <edit_parameter2+0x23a>
}
2116: 80 91 e6 04 lds r24, 0x04E6
211a: 88 30 cpi r24, 0x08 ; 8
211c: 21 f0 breq .+8 ; 0x2126 <edit_parameter2+0x252>
211e: 80 91 e6 04 lds r24, 0x04E6
2122: 84 30 cpi r24, 0x04 ; 4
2124: e1 f6 brne .-72 ; 0x20de <edit_parameter2+0x20a>
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
2126: 80 91 e6 04 lds r24, 0x04E6
212a: 88 30 cpi r24, 0x08 ; 8
212c: 49 f4 brne .+18 ; 0x2140 <edit_parameter2+0x26c>
{
bin[line] = par;
212e: ea 0c add r14, r10
2130: fb 1c adc r15, r11
2132: f7 01 movw r30, r14
2134: 12 87 std Z+10, r17 ; 0x0a
p_buffer[8] = bindec(bin);
2136: c4 01 movw r24, r8
2138: 0e 94 62 0e call 0x1cc4 <bindec>
213c: 80 93 6b 04 sts 0x046B, r24
}
lcd_cls();
2140: 0e 94 36 07 call 0xe6c <lcd_cls>
decimal(p_buffer[8],text);
2144: be 01 movw r22, r28
2146: 6f 5f subi r22, 0xFF ; 255
2148: 7f 4f sbci r23, 0xFF ; 255
214a: 80 91 6b 04 lds r24, 0x046B
214e: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print(text,0);
2152: 6d 2d mov r22, r13
2154: ce 01 movw r24, r28
2156: 01 96 adiw r24, 0x01 ; 1
2158: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 200;
215c: 88 ec ldi r24, 0xC8 ; 200
215e: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
2162: 80 91 61 00 lds r24, 0x0061
2166: 88 23 and r24, r24
2168: e1 f7 brne .-8 ; 0x2162 <edit_parameter2+0x28e>
216a: 62 96 adiw r28, 0x12 ; 18
216c: 0f b6 in r0, 0x3f ; 63
216e: f8 94 cli
2170: de bf out 0x3e, r29 ; 62
2172: 0f be out 0x3f, r0 ; 63
2174: cd bf out 0x3d, r28 ; 61
2176: df 91 pop r29
2178: cf 91 pop r28
217a: 1f 91 pop r17
217c: 0f 91 pop r16
217e: ff 90 pop r15
2180: ef 90 pop r14
2182: df 90 pop r13
2184: bf 90 pop r11
2186: af 90 pop r10
2188: 9f 90 pop r9
218a: 8f 90 pop r8
218c: 08 95 ret
 
0000218e <edit_parameter>:
}
}
}
 
 
void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü
{
218e: 1f 93 push r17
2190: cf 93 push r28
2192: df 93 push r29
2194: cd b7 in r28, 0x3d ; 61
2196: de b7 in r29, 0x3e ; 62
2198: 2f 97 sbiw r28, 0x0f ; 15
219a: 0f b6 in r0, 0x3f ; 63
219c: f8 94 cli
219e: de bf out 0x3e, r29 ; 62
21a0: 0f be out 0x3f, r0 ; 63
21a2: cd bf out 0x3d, r28 ; 61
uint8_t page; // 12 Pages
uint8_t text[15];
uint8_t lines;
uint8_t parameter;
lcd_cls();
21a4: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Lade Parameter\r\n"),0);
21a8: 60 e0 ldi r22, 0x00 ; 0
21aa: 8f e0 ldi r24, 0x0F ; 15
21ac: 9c e0 ldi r25, 0x0C ; 12
21ae: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 1:\r\n"),0);
21b2: 60 e0 ldi r22, 0x00 ; 0
21b4: 80 e2 ldi r24, 0x20 ; 32
21b6: 9c e0 ldi r25, 0x0C ; 12
21b8: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 2:\r\n"),0);
21bc: 60 e0 ldi r22, 0x00 ; 0
21be: 86 e2 ldi r24, 0x26 ; 38
21c0: 9c e0 ldi r25, 0x0C ; 12
21c2: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 3:\r\n"),0);
21c6: 60 e0 ldi r22, 0x00 ; 0
21c8: 8c e2 ldi r24, 0x2C ; 44
21ca: 9c e0 ldi r25, 0x0C ; 12
21cc: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 4:\r\n"),0);
21d0: 60 e0 ldi r22, 0x00 ; 0
21d2: 82 e3 ldi r24, 0x32 ; 50
21d4: 9c e0 ldi r25, 0x0C ; 12
21d6: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 5:\r\n"),0);
21da: 60 e0 ldi r22, 0x00 ; 0
21dc: 88 e3 ldi r24, 0x38 ; 56
21de: 9c e0 ldi r25, 0x0C ; 12
21e0: 0e 94 aa 08 call 0x1154 <lcd_printp>
parameter = menu_choose(1,5,0);
21e4: 40 e0 ldi r20, 0x00 ; 0
21e6: 65 e0 ldi r22, 0x05 ; 5
21e8: 81 e0 ldi r24, 0x01 ; 1
21ea: 0e 94 86 11 call 0x230c <menu_choose>
 
page = 2;
21ee: 12 e0 ldi r17, 0x02 ; 2
if (read_parameter(parameter) == 1)
21f0: 0e 94 02 0e call 0x1c04 <read_parameter>
21f4: 81 30 cpi r24, 0x01 ; 1
21f6: 41 f4 brne .+16 ; 0x2208 <edit_parameter+0x7a>
{
lcd_print_atp(0,6,PSTR("Timeout"),0);
21f8: 20 e0 ldi r18, 0x00 ; 0
21fa: 4e e3 ldi r20, 0x3E ; 62
21fc: 5c e0 ldi r21, 0x0C ; 12
21fe: 66 e0 ldi r22, 0x06 ; 6
2200: 82 2f mov r24, r18
2202: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
2206: 5c c0 rjmp .+184 ; 0x22c0 <edit_parameter+0x132>
}
else
{
do
{
lcd_cls();
2208: 0e 94 36 07 call 0xe6c <lcd_cls>
utoa(page,text,10);
220c: 4a e0 ldi r20, 0x0A ; 10
220e: 50 e0 ldi r21, 0x00 ; 0
2210: be 01 movw r22, r28
2212: 6f 5f subi r22, 0xFF ; 255
2214: 7f 4f sbci r23, 0xFF ; 255
2216: 81 2f mov r24, r17
2218: 99 27 eor r25, r25
221a: 0e 94 f0 12 call 0x25e0 <utoa>
lcd_print(text,0);
221e: 60 e0 ldi r22, 0x00 ; 0
2220: ce 01 movw r24, r28
2222: 01 96 adiw r24, 0x01 ; 1
2224: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 50;
2228: 82 e3 ldi r24, 0x32 ; 50
222a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
222e: 80 91 61 00 lds r24, 0x0061
2232: 88 23 and r24, r24
2234: e1 f7 brne .-8 ; 0x222e <edit_parameter+0xa0>
lcd_cls();
2236: 0e 94 36 07 call 0xe6c <lcd_cls>
lines = show_parameter(page);
223a: 81 2f mov r24, r17
223c: 0e 94 a1 0e call 0x1d42 <show_parameter>
2240: 68 2f mov r22, r24
while (key == key_nokey);
2242: 80 91 e6 04 lds r24, 0x04E6
2246: 88 23 and r24, r24
2248: e1 f3 breq .-8 ; 0x2242 <edit_parameter+0xb4>
if (key == key_plus)
224a: 80 91 e6 04 lds r24, 0x04E6
224e: 82 30 cpi r24, 0x02 ; 2
2250: 09 f4 brne .+2 ; 0x2254 <edit_parameter+0xc6>
page++;
2252: 1f 5f subi r17, 0xFF ; 255
if (key == key_minus)
2254: 80 91 e6 04 lds r24, 0x04E6
2258: 81 30 cpi r24, 0x01 ; 1
225a: 09 f4 brne .+2 ; 0x225e <edit_parameter+0xd0>
page--;
225c: 11 50 subi r17, 0x01 ; 1
if (page == 255)
225e: 1f 3f cpi r17, 0xFF ; 255
2260: 11 f4 brne .+4 ; 0x2266 <edit_parameter+0xd8>
page = 12;
2262: 1c e0 ldi r17, 0x0C ; 12
2264: 03 c0 rjmp .+6 ; 0x226c <edit_parameter+0xde>
if (page > 12)
2266: 1d 30 cpi r17, 0x0D ; 13
2268: 08 f0 brcs .+2 ; 0x226c <edit_parameter+0xde>
page = 0;
226a: 10 e0 ldi r17, 0x00 ; 0
if (key == key_enter)
226c: 80 91 e6 04 lds r24, 0x04E6
2270: 88 30 cpi r24, 0x08 ; 8
2272: 19 f4 brne .+6 ; 0x227a <edit_parameter+0xec>
edit_parameter2(page,lines);
2274: 81 2f mov r24, r17
2276: 0e 94 6a 0f call 0x1ed4 <edit_parameter2>
}
227a: 80 91 e6 04 lds r24, 0x04E6
227e: 84 30 cpi r24, 0x04 ; 4
2280: 19 f6 brne .-122 ; 0x2208 <edit_parameter+0x7a>
while (key != key_esc);
lcd_cls();
2282: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0);
2286: 60 e0 ldi r22, 0x00 ; 0
2288: 86 e4 ldi r24, 0x46 ; 70
228a: 9c e0 ldi r25, 0x0C ; 12
228c: 0e 94 aa 08 call 0x1154 <lcd_printp>
lines = menu_choose(1,2,0);
2290: 40 e0 ldi r20, 0x00 ; 0
2292: 62 e0 ldi r22, 0x02 ; 2
2294: 81 e0 ldi r24, 0x01 ; 1
2296: 0e 94 86 11 call 0x230c <menu_choose>
if (lines == 1 )
229a: 81 30 cpi r24, 0x01 ; 1
229c: 61 f4 brne .+24 ; 0x22b6 <edit_parameter+0x128>
{
lcd_printp(PSTR("\r\n--->"),0);
229e: 60 e0 ldi r22, 0x00 ; 0
22a0: 89 e6 ldi r24, 0x69 ; 105
22a2: 9c e0 ldi r25, 0x0C ; 12
22a4: 0e 94 aa 08 call 0x1154 <lcd_printp>
write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert.
22a8: 85 e0 ldi r24, 0x05 ; 5
22aa: 0e 94 2c 0e call 0x1c58 <write_parameter>
lcd_printp(PSTR("\r\nParameter gespeichert"),0);
22ae: 60 e0 ldi r22, 0x00 ; 0
22b0: 80 e7 ldi r24, 0x70 ; 112
22b2: 9c e0 ldi r25, 0x0C ; 12
22b4: 03 c0 rjmp .+6 ; 0x22bc <edit_parameter+0x12e>
}
else
{
lcd_printp(PSTR("\r\nNicht gespeichert"),0);
22b6: 60 e0 ldi r22, 0x00 ; 0
22b8: 88 e8 ldi r24, 0x88 ; 136
22ba: 9c e0 ldi r25, 0x0C ; 12
22bc: 0e 94 aa 08 call 0x1154 <lcd_printp>
}
}
timer = 100;
22c0: 84 e6 ldi r24, 0x64 ; 100
22c2: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
22c6: 80 91 61 00 lds r24, 0x0061
22ca: 88 23 and r24, r24
22cc: e1 f7 brne .-8 ; 0x22c6 <edit_parameter+0x138>
22ce: 2f 96 adiw r28, 0x0f ; 15
22d0: 0f b6 in r0, 0x3f ; 63
22d2: f8 94 cli
22d4: de bf out 0x3e, r29 ; 62
22d6: 0f be out 0x3f, r0 ; 63
22d8: cd bf out 0x3d, r28 ; 61
22da: df 91 pop r29
22dc: cf 91 pop r28
22de: 1f 91 pop r17
22e0: 08 95 ret
 
000022e2 <menu_set_cursor>:
 
// Subroutine für den Stern (*) bzw. Cursor
 
void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
{
22e2: 0f 93 push r16
22e4: 1f 93 push r17
22e6: 06 2f mov r16, r22
22e8: 14 2f mov r17, r20
lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen
22ea: 20 e0 ldi r18, 0x00 ; 0
22ec: 4c e9 ldi r20, 0x9C ; 156
22ee: 5c e0 ldi r21, 0x0C ; 12
22f0: 68 2f mov r22, r24
22f2: 81 2f mov r24, r17
22f4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen
22f8: 20 e0 ldi r18, 0x00 ; 0
22fa: 4e e9 ldi r20, 0x9E ; 158
22fc: 5c e0 ldi r21, 0x0C ; 12
22fe: 60 2f mov r22, r16
2300: 81 2f mov r24, r17
2302: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
2306: 1f 91 pop r17
2308: 0f 91 pop r16
230a: 08 95 ret
 
0000230c <menu_choose>:
}
 
 
// Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max.
// Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden.
// Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben.
 
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos)
{
230c: ef 92 push r14
230e: ff 92 push r15
2310: 0f 93 push r16
2312: 1f 93 push r17
2314: cf 93 push r28
2316: f8 2e mov r15, r24
2318: e6 2e mov r14, r22
231a: 04 2f mov r16, r20
uint8_t line, before;
line = min;
231c: c8 2f mov r28, r24
before = min;
231e: 18 2f mov r17, r24
menu_set_cursor(line,line,pos);
2320: 68 2f mov r22, r24
2322: 0e 94 71 11 call 0x22e2 <menu_set_cursor>
do
{
while (key != key_nokey);
2326: 80 91 e6 04 lds r24, 0x04E6
232a: 88 23 and r24, r24
232c: e1 f7 brne .-8 ; 0x2326 <menu_choose+0x1a>
while(key == key_nokey);
232e: 80 91 e6 04 lds r24, 0x04E6
2332: 88 23 and r24, r24
2334: e1 f3 breq .-8 ; 0x232e <menu_choose+0x22>
if ((key == key_plus) && (line < max))
2336: 80 91 e6 04 lds r24, 0x04E6
233a: 82 30 cpi r24, 0x02 ; 2
233c: 19 f4 brne .+6 ; 0x2344 <menu_choose+0x38>
233e: ce 15 cp r28, r14
2340: 08 f4 brcc .+2 ; 0x2344 <menu_choose+0x38>
line ++;
2342: cf 5f subi r28, 0xFF ; 255
if ((key == key_minus) && (line > min))
2344: 80 91 e6 04 lds r24, 0x04E6
2348: 81 30 cpi r24, 0x01 ; 1
234a: 19 f4 brne .+6 ; 0x2352 <menu_choose+0x46>
234c: fc 16 cp r15, r28
234e: 08 f4 brcc .+2 ; 0x2352 <menu_choose+0x46>
line --;
2350: c1 50 subi r28, 0x01 ; 1
 
menu_set_cursor(before,line,pos);
2352: 40 2f mov r20, r16
2354: 6c 2f mov r22, r28
2356: 81 2f mov r24, r17
2358: 0e 94 71 11 call 0x22e2 <menu_set_cursor>
before = line;
235c: 1c 2f mov r17, r28
}
235e: 80 91 e6 04 lds r24, 0x04E6
2362: 88 30 cpi r24, 0x08 ; 8
2364: 21 f0 breq .+8 ; 0x236e <menu_choose+0x62>
2366: 80 91 e6 04 lds r24, 0x04E6
236a: 84 30 cpi r24, 0x04 ; 4
236c: e1 f6 brne .-72 ; 0x2326 <menu_choose+0x1a>
while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde
if (key == key_esc)
236e: 80 91 e6 04 lds r24, 0x04E6
2372: 84 30 cpi r24, 0x04 ; 4
2374: 09 f4 brne .+2 ; 0x2378 <menu_choose+0x6c>
line = 255;
2376: cf ef ldi r28, 0xFF ; 255
while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde
2378: 80 91 e6 04 lds r24, 0x04E6
237c: 88 23 and r24, r24
237e: e1 f7 brne .-8 ; 0x2378 <menu_choose+0x6c>
return line;
}
2380: 8c 2f mov r24, r28
2382: 99 27 eor r25, r25
2384: cf 91 pop r28
2386: 1f 91 pop r17
2388: 0f 91 pop r16
238a: ff 90 pop r15
238c: ef 90 pop r14
238e: 08 95 ret
 
00002390 <main_menu>:
 
void main_menu (void)
{
lcd_cls();
2390: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0);
2394: 60 e0 ldi r22, 0x00 ; 0
2396: 80 ea ldi r24, 0xA0 ; 160
2398: 9c e0 ldi r25, 0x0C ; 12
239a: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("\r\nDisplay\r\n"),0);
239e: 60 e0 ldi r22, 0x00 ; 0
23a0: 87 eb ldi r24, 0xB7 ; 183
23a2: 9c e0 ldi r25, 0x0C ; 12
23a4: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("Parameter\r\n"),0);
23a8: 60 e0 ldi r22, 0x00 ; 0
23aa: 83 ec ldi r24, 0xC3 ; 195
23ac: 9c e0 ldi r25, 0x0C ; 12
23ae: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("Motortest"),0);
23b2: 60 e0 ldi r22, 0x00 ; 0
23b4: 8f ec ldi r24, 0xCF ; 207
23b6: 9c e0 ldi r25, 0x0C ; 12
23b8: 0e 94 aa 08 call 0x1154 <lcd_printp>
switch(menu_choose(2,4,10))
23bc: 4a e0 ldi r20, 0x0A ; 10
23be: 64 e0 ldi r22, 0x04 ; 4
23c0: 82 e0 ldi r24, 0x02 ; 2
23c2: 0e 94 86 11 call 0x230c <menu_choose>
23c6: 99 27 eor r25, r25
23c8: 83 30 cpi r24, 0x03 ; 3
23ca: 91 05 cpc r25, r1
23cc: 61 f0 breq .+24 ; 0x23e6 <main_menu+0x56>
23ce: 84 30 cpi r24, 0x04 ; 4
23d0: 91 05 cpc r25, r1
23d2: 1c f4 brge .+6 ; 0x23da <main_menu+0x4a>
23d4: 02 97 sbiw r24, 0x02 ; 2
23d6: 21 f0 breq .+8 ; 0x23e0 <main_menu+0x50>
23d8: 08 95 ret
23da: 04 97 sbiw r24, 0x04 ; 4
23dc: 39 f0 breq .+14 ; 0x23ec <main_menu+0x5c>
23de: 08 95 ret
{
case 2:
display_data(); // LCD-Modus
23e0: 0e 94 23 12 call 0x2446 <display_data>
break;
23e4: 08 95 ret
case 3:
edit_parameter(); // Parameter (Settings) laden/editieren
23e6: 0e 94 c7 10 call 0x218e <edit_parameter>
break;
23ea: 08 95 ret
case 4:
motor_test(); // primitiver Motor-Test
23ec: 0e 94 83 12 call 0x2506 <motor_test>
23f0: 08 95 ret
 
000023f2 <read_display>:
#include "parameter.h"
#include "menu.h"
 
uint8_t read_display (uint8_t command) //
{
23f2: cf 93 push r28
uint8_t timeout;
timeout = 0;
23f4: c0 e0 ldi r28, 0x00 ; 0
p_buffer[0] = '#'; // Display-Zeile anfordern
23f6: 93 e2 ldi r25, 0x23 ; 35
23f8: 90 93 63 04 sts 0x0463, r25
p_buffer[1] = 'a';
23fc: 91 e6 ldi r25, 0x61 ; 97
23fe: 90 93 64 04 sts 0x0464, r25
p_buffer[2] = 'h';
2402: 98 e6 ldi r25, 0x68 ; 104
2404: 90 93 65 04 sts 0x0465, r25
p_buffer[3] = command;
2408: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 0;
240c: c0 93 67 04 sts 0x0467, r28
p_buffer[5] = 0;
2410: c0 93 68 04 sts 0x0468, r28
base64_send(6);
2414: 86 e0 ldi r24, 0x06 ; 6
2416: 0e 94 bc 0c call 0x1978 <base64_send>
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1)
241a: 0e 94 95 0c call 0x192a <get_message>
241e: 81 30 cpi r24, 0x01 ; 1
2420: 09 f4 brne .+2 ; 0x2424 <read_display+0x32>
timeout = 10;
2422: ca e0 ldi r28, 0x0A ; 10
timeout ++;
2424: cf 5f subi r28, 0xFF ; 255
}
2426: 80 91 ea 04 lds r24, 0x04EA
242a: 80 53 subi r24, 0x30 ; 48
242c: 85 30 cpi r24, 0x05 ; 5
242e: 10 f0 brcs .+4 ; 0x2434 <read_display+0x42>
2430: ca 30 cpi r28, 0x0A ; 10
2432: 98 f3 brcs .-26 ; 0x241a <read_display+0x28>
while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10));
if (timeout >= 10)
2434: ca 30 cpi r28, 0x0A ; 10
2436: 18 f0 brcs .+6 ; 0x243e <read_display+0x4c>
return 1;
2438: 81 e0 ldi r24, 0x01 ; 1
243a: 90 e0 ldi r25, 0x00 ; 0
243c: 02 c0 rjmp .+4 ; 0x2442 <read_display+0x50>
else
return 0;
243e: 80 e0 ldi r24, 0x00 ; 0
2440: 90 e0 ldi r25, 0x00 ; 0
2442: cf 91 pop r28
2444: 08 95 ret
 
00002446 <display_data>:
}
 
void display_data (void)
{
2446: 0f 93 push r16
2448: 1f 93 push r17
244a: cf 93 push r28
244c: df 93 push r29
244e: cd b7 in r28, 0x3d ; 61
2450: de b7 in r29, 0x3e ; 62
2452: 2a 97 sbiw r28, 0x0a ; 10
2454: 0f b6 in r0, 0x3f ; 63
2456: f8 94 cli
2458: de bf out 0x3e, r29 ; 62
245a: 0f be out 0x3f, r0 ; 63
245c: cd bf out 0x3d, r28 ; 61
uint8_t line;
uint8_t text[10];
 
lcd_cls();
245e: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Display"),0);
2462: 60 e0 ldi r22, 0x00 ; 0
2464: 89 ed ldi r24, 0xD9 ; 217
2466: 9c e0 ldi r25, 0x0C ; 12
2468: 0e 94 aa 08 call 0x1154 <lcd_printp>
do
{
while (key != 0x00);
246c: 00 91 e6 04 lds r16, 0x04E6
2470: 00 23 and r16, r16
2472: e1 f7 brne .-8 ; 0x246c <display_data+0x26>
if (read_display(0) == 1)
2474: 80 2f mov r24, r16
2476: 0e 94 f9 11 call 0x23f2 <read_display>
247a: 81 30 cpi r24, 0x01 ; 1
247c: 69 f4 brne .+26 ; 0x2498 <display_data+0x52>
{
lcd_printp(PSTR("\r\nTimeout!"),0);
247e: 60 2f mov r22, r16
2480: 81 ee ldi r24, 0xE1 ; 225
2482: 9c e0 ldi r25, 0x0C ; 12
2484: 0e 94 aa 08 call 0x1154 <lcd_printp>
timer = 200;
2488: 88 ec ldi r24, 0xC8 ; 200
248a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
248e: 80 91 61 00 lds r24, 0x0061
2492: 88 23 and r24, r24
2494: e1 f7 brne .-8 ; 0x248e <display_data+0x48>
break;
2496: 2c c0 rjmp .+88 ; 0x24f0 <display_data+0xaa>
}
else
{
line = r_buffer[1];
2498: 10 91 ea 04 lds r17, 0x04EA
text[0] = line;
249c: 19 83 std Y+1, r17 ; 0x01
text[1] = 0x00;
249e: 0a 83 std Y+2, r16 ; 0x02
lcd_print_at(10,0,text,0);
24a0: 20 2f mov r18, r16
24a2: ae 01 movw r20, r28
24a4: 4f 5f subi r20, 0xFF ; 255
24a6: 5f 4f sbci r21, 0xFF ; 255
24a8: 60 2f mov r22, r16
24aa: 8a e0 ldi r24, 0x0A ; 10
24ac: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_at(0,line+1,p_buffer,0);
24b0: 1f 5f subi r17, 0xFF ; 255
24b2: 20 2f mov r18, r16
24b4: 43 e6 ldi r20, 0x63 ; 99
24b6: 54 e0 ldi r21, 0x04 ; 4
24b8: 61 2f mov r22, r17
24ba: 80 2f mov r24, r16
24bc: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 10;
24c0: 8a e0 ldi r24, 0x0A ; 10
24c2: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
24c6: 80 91 61 00 lds r24, 0x0061
24ca: 88 23 and r24, r24
24cc: e1 f7 brne .-8 ; 0x24c6 <display_data+0x80>
if (key == 0x01)
24ce: 80 91 e6 04 lds r24, 0x04E6
24d2: 81 30 cpi r24, 0x01 ; 1
24d4: 11 f4 brne .+4 ; 0x24da <display_data+0x94>
read_display(1);
24d6: 0e 94 f9 11 call 0x23f2 <read_display>
if (key == 0x02)
24da: 80 91 e6 04 lds r24, 0x04E6
24de: 82 30 cpi r24, 0x02 ; 2
24e0: 11 f4 brne .+4 ; 0x24e6 <display_data+0xa0>
read_display(2);
24e2: 0e 94 f9 11 call 0x23f2 <read_display>
}
}
24e6: 80 91 e6 04 lds r24, 0x04E6
24ea: 84 30 cpi r24, 0x04 ; 4
24ec: 09 f0 breq .+2 ; 0x24f0 <display_data+0xaa>
24ee: be cf rjmp .-132 ; 0x246c <display_data+0x26>
24f0: 2a 96 adiw r28, 0x0a ; 10
24f2: 0f b6 in r0, 0x3f ; 63
24f4: f8 94 cli
24f6: de bf out 0x3e, r29 ; 62
24f8: 0f be out 0x3f, r0 ; 63
24fa: cd bf out 0x3d, r28 ; 61
24fc: df 91 pop r29
24fe: cf 91 pop r28
2500: 1f 91 pop r17
2502: 0f 91 pop r16
2504: 08 95 ret
 
00002506 <motor_test>:
#include "base64.h"
 
void motor_test(void)
{
lcd_cls();
2506: 0e 94 36 07 call 0xe6c <lcd_cls>
 
while (key != 0x00);
250a: 60 91 e6 04 lds r22, 0x04E6
250e: 66 23 and r22, r22
2510: e1 f7 brne .-8 ; 0x250a <motor_test+0x4>
 
lcd_printp(PSTR("Taste drücken\r\n"),0);
2512: 8c ee ldi r24, 0xEC ; 236
2514: 9c e0 ldi r25, 0x0C ; 12
2516: 0e 94 aa 08 call 0x1154 <lcd_printp>
while (key == 0x00);
251a: 80 91 e6 04 lds r24, 0x04E6
251e: 88 23 and r24, r24
2520: e1 f3 breq .-8 ; 0x251a <motor_test+0x14>
if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird
2522: 80 91 e6 04 lds r24, 0x04E6
2526: 88 30 cpi r24, 0x08 ; 8
2528: c9 f4 brne .+50 ; 0x255c <motor_test+0x56>
{
p_buffer[0] = '#'; // Motoren einschalten
252a: 83 e2 ldi r24, 0x23 ; 35
252c: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
2530: 81 e6 ldi r24, 0x61 ; 97
2532: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 't';
2536: 84 e7 ldi r24, 0x74 ; 116
2538: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = 10;
253c: 8a e0 ldi r24, 0x0A ; 10
253e: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 10;
2542: 80 93 67 04 sts 0x0467, r24
p_buffer[5] = 10;
2546: 80 93 68 04 sts 0x0468, r24
p_buffer[6] = 10;
254a: 80 93 69 04 sts 0x0469, r24
p_buffer[7] = 0;
254e: 10 92 6a 04 sts 0x046A, r1
p_buffer[8] = 0;
2552: 10 92 6b 04 sts 0x046B, r1
 
base64_send(9);
2556: 89 e0 ldi r24, 0x09 ; 9
2558: 0e 94 bc 0c call 0x1978 <base64_send>
}
while (key != 0x00);
255c: 80 91 e6 04 lds r24, 0x04E6
2560: 88 23 and r24, r24
2562: e1 f7 brne .-8 ; 0x255c <motor_test+0x56>
while (key == 0x00);
2564: 80 91 e6 04 lds r24, 0x04E6
2568: 88 23 and r24, r24
256a: e1 f3 breq .-8 ; 0x2564 <motor_test+0x5e>
p_buffer[0] = '#'; // Motoren ausschalten
256c: 83 e2 ldi r24, 0x23 ; 35
256e: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
2572: 81 e6 ldi r24, 0x61 ; 97
2574: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 't';
2578: 84 e7 ldi r24, 0x74 ; 116
257a: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = 0;
257e: 10 92 66 04 sts 0x0466, r1
p_buffer[4] = 0;
2582: 10 92 67 04 sts 0x0467, r1
p_buffer[5] = 0;
2586: 10 92 68 04 sts 0x0468, r1
p_buffer[6] = 0;
258a: 10 92 69 04 sts 0x0469, r1
p_buffer[7] = 0;
258e: 10 92 6a 04 sts 0x046A, r1
p_buffer[8] = 0;
2592: 10 92 6b 04 sts 0x046B, r1
 
base64_send(9);
2596: 89 e0 ldi r24, 0x09 ; 9
2598: 0e 94 bc 0c call 0x1978 <base64_send>
259c: 08 95 ret
 
0000259e <itoa>:
259e: fb 01 movw r30, r22
25a0: 9f 01 movw r18, r30
25a2: e8 94 clt
25a4: 42 30 cpi r20, 0x02 ; 2
25a6: c4 f0 brlt .+48 ; 0x25d8 <itoa+0x3a>
25a8: 45 32 cpi r20, 0x25 ; 37
25aa: b4 f4 brge .+44 ; 0x25d8 <itoa+0x3a>
25ac: 4a 30 cpi r20, 0x0A ; 10
25ae: 29 f4 brne .+10 ; 0x25ba <itoa+0x1c>
25b0: 97 fb bst r25, 7
25b2: 1e f4 brtc .+6 ; 0x25ba <itoa+0x1c>
25b4: 90 95 com r25
25b6: 81 95 neg r24
25b8: 9f 4f sbci r25, 0xFF ; 255
25ba: 64 2f mov r22, r20
25bc: 77 27 eor r23, r23
25be: 0e 94 22 13 call 0x2644 <__udivmodhi4>
25c2: 80 5d subi r24, 0xD0 ; 208
25c4: 8a 33 cpi r24, 0x3A ; 58
25c6: 0c f0 brlt .+2 ; 0x25ca <itoa+0x2c>
25c8: 89 5d subi r24, 0xD9 ; 217
25ca: 81 93 st Z+, r24
25cc: cb 01 movw r24, r22
25ce: 00 97 sbiw r24, 0x00 ; 0
25d0: a1 f7 brne .-24 ; 0x25ba <itoa+0x1c>
25d2: 16 f4 brtc .+4 ; 0x25d8 <itoa+0x3a>
25d4: 5d e2 ldi r21, 0x2D ; 45
25d6: 51 93 st Z+, r21
25d8: 10 82 st Z, r1
25da: c9 01 movw r24, r18
25dc: 0c 94 06 13 jmp 0x260c <strrev>
 
000025e0 <utoa>:
25e0: fb 01 movw r30, r22
25e2: 9f 01 movw r18, r30
25e4: 42 30 cpi r20, 0x02 ; 2
25e6: 74 f0 brlt .+28 ; 0x2604 <utoa+0x24>
25e8: 45 32 cpi r20, 0x25 ; 37
25ea: 64 f4 brge .+24 ; 0x2604 <utoa+0x24>
25ec: 64 2f mov r22, r20
25ee: 77 27 eor r23, r23
25f0: 0e 94 22 13 call 0x2644 <__udivmodhi4>
25f4: 80 5d subi r24, 0xD0 ; 208
25f6: 8a 33 cpi r24, 0x3A ; 58
25f8: 0c f0 brlt .+2 ; 0x25fc <utoa+0x1c>
25fa: 89 5d subi r24, 0xD9 ; 217
25fc: 81 93 st Z+, r24
25fe: cb 01 movw r24, r22
2600: 00 97 sbiw r24, 0x00 ; 0
2602: a1 f7 brne .-24 ; 0x25ec <utoa+0xc>
2604: 10 82 st Z, r1
2606: c9 01 movw r24, r18
2608: 0c 94 06 13 jmp 0x260c <strrev>
 
0000260c <strrev>:
260c: dc 01 movw r26, r24
260e: fc 01 movw r30, r24
2610: 01 90 ld r0, Z+
2612: 00 20 and r0, r0
2614: e9 f7 brne .-6 ; 0x2610 <strrev+0x4>
2616: 32 97 sbiw r30, 0x02 ; 2
2618: ae 17 cp r26, r30
261a: bf 07 cpc r27, r31
261c: 30 f4 brcc .+12 ; 0x262a <strrev+0x1e>
261e: 7c 91 ld r23, X
2620: 60 81 ld r22, Z
2622: 70 83 st Z, r23
2624: 31 97 sbiw r30, 0x01 ; 1
2626: 6d 93 st X+, r22
2628: f7 cf rjmp .-18 ; 0x2618 <strrev+0xc>
262a: 08 95 ret
 
0000262c <__udivmodqi4>:
262c: 99 1b sub r25, r25
262e: 79 e0 ldi r23, 0x09 ; 9
2630: 04 c0 rjmp .+8 ; 0x263a <__udivmodqi4_ep>
 
00002632 <__udivmodqi4_loop>:
2632: 99 1f adc r25, r25
2634: 96 17 cp r25, r22
2636: 08 f0 brcs .+2 ; 0x263a <__udivmodqi4_ep>
2638: 96 1b sub r25, r22
 
0000263a <__udivmodqi4_ep>:
263a: 88 1f adc r24, r24
263c: 7a 95 dec r23
263e: c9 f7 brne .-14 ; 0x2632 <__udivmodqi4_loop>
2640: 80 95 com r24
2642: 08 95 ret
 
00002644 <__udivmodhi4>:
2644: aa 1b sub r26, r26
2646: bb 1b sub r27, r27
2648: 51 e1 ldi r21, 0x11 ; 17
264a: 07 c0 rjmp .+14 ; 0x265a <__udivmodhi4_ep>
 
0000264c <__udivmodhi4_loop>:
264c: aa 1f adc r26, r26
264e: bb 1f adc r27, r27
2650: a6 17 cp r26, r22
2652: b7 07 cpc r27, r23
2654: 10 f0 brcs .+4 ; 0x265a <__udivmodhi4_ep>
2656: a6 1b sub r26, r22
2658: b7 0b sbc r27, r23
 
0000265a <__udivmodhi4_ep>:
265a: 88 1f adc r24, r24
265c: 99 1f adc r25, r25
265e: 5a 95 dec r21
2660: a9 f7 brne .-22 ; 0x264c <__udivmodhi4_loop>
2662: 80 95 com r24
2664: 90 95 com r25
2666: bc 01 movw r22, r24
2668: cd 01 movw r24, r26
266a: 08 95 ret
/Transportables_Koptertool/trunk/main.lst
0,0 → 1,100
1 .file "main.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global main
20 main:
21 .LFB8:
22 .LM1:
23 /* prologue: frame size=0 */
24 0000 C0E0 ldi r28,lo8(__stack - 0)
25 0002 D0E0 ldi r29,hi8(__stack - 0)
26 0004 DEBF out __SP_H__,r29
27 0006 CDBF out __SP_L__,r28
28 /* prologue end (size=4) */
29 .LM2:
30 0008 8FEF ldi r24,lo8(-1)
31 000a 8BBB out 59-0x20,r24
32 .LM3:
33 000c 83E4 ldi r24,lo8(67)
34 000e 88BB out 56-0x20,r24
35 .LM4:
36 0010 8CEF ldi r24,lo8(-4)
37 0012 85BB out 53-0x20,r24
38 .LM5:
39 0014 8CE7 ldi r24,lo8(124)
40 0016 82BB out 50-0x20,r24
41 .LM6:
42 0018 83E0 ldi r24,lo8(3)
43 001a 84BB out 52-0x20,r24
44 .LM7:
45 001c 80E8 ldi r24,lo8(-128)
46 001e 81BB out 49-0x20,r24
47 .LM8:
48 0020 0E94 0000 call lcd_init
49 .LM9:
50 0024 0E94 0000 call RS232_init
51 .LM10:
52 0028 0E94 0000 call timer_init
53 .LM11:
54 /* #APP */
55 002c 7894 sei
56 /* #NOAPP */
57 .L2:
58 .LM12:
59 002e 0E94 0000 call main_menu
60 .LM13:
61 0032 FDCF rjmp .L2
62 /* epilogue: frame size=0 */
63 /* epilogue: noreturn */
64 /* epilogue end (size=0) */
65 /* function main size 27 (23) */
66 .LFE8:
68 .comm r_buffer,128,1
69 .comm p_buffer,128,1
70 .comm key,1,1
71 .comm timer,1,1
72 .comm rs232_timer,1,1
73 .comm display_buffer,1024,1
74 .comm display_buffer_pointer,2,1
75 .comm display_buffer_counter,1,1
76 .comm display_page_counter,1,1
77 .comm display_mode,1,1
78 .comm counter,1,1
79 .comm counter2,1,1
80 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 main.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/cc42aaaa.s:20 .text:00000000 main
*COM*:00000080 r_buffer
*COM*:00000080 p_buffer
*COM*:00000001 key
*COM*:00000001 timer
*COM*:00000001 rs232_timer
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
*COM*:00000001 counter
*COM*:00000001 counter2
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
lcd_init
RS232_init
timer_init
main_menu
/Transportables_Koptertool/trunk/main.map
0,0 → 1,760
Archive member included because of file (symbol)
 
F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o)
parameter.o (__udivmodqi4)
F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
main.o (__do_copy_data)
F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o)
displ_val.o (itoa)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o)
parameter.o (utoa)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) (strrev)
F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) (__udivmodhi4)
 
Allocating common symbols
Common symbol size file
 
display_page_counter
0x1 main.o
timer 0x1 main.o
display_buffer 0x400 main.o
write_index 0x1 rs232.o
display_buffer_counter
0x1 main.o
p_buffer 0x80 main.o
read_index 0x1 rs232.o
display_mode 0x1 main.o
displ_page 0x1 displ_val.o
counter 0x1 main.o
rs232_timer 0x1 main.o
rs232_buffer 0x10 rs232.o
key 0x1 main.o
display_buffer_pointer
0x2 main.o
array 0x8 parameter.o
lcd_xpos 0x1 lcd.o
r_buffer 0x80 main.o
lcd_ypos 0x1 lcd.o
counter2 0x1 main.o
 
Memory Configuration
 
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
*default* 0x00000000 0xffffffff
 
Linker script and memory map
 
LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
LOAD main.o
LOAD timer.o
LOAD lcd.o
LOAD F8X6.o
LOAD rs232.o
LOAD base64.o
LOAD displ_val.o
LOAD parameter.o
LOAD menu.o
LOAD display.o
LOAD motortest.o
LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a
LOAD F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a
LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a
LOAD F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a
 
.hash
*(.hash)
 
.dynsym
*(.dynsym)
 
.dynstr
*(.dynstr)
 
.gnu.version
*(.gnu.version)
 
.gnu.version_d
*(.gnu.version_d)
 
.gnu.version_r
*(.gnu.version_r)
 
.rel.init
*(.rel.init)
 
.rela.init
*(.rela.init)
 
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
 
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
 
.rel.fini
*(.rel.fini)
 
.rela.fini
*(.rela.fini)
 
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
 
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
 
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
 
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
 
.rel.ctors
*(.rel.ctors)
 
.rela.ctors
*(.rela.ctors)
 
.rel.dtors
*(.rel.dtors)
 
.rela.dtors
*(.rela.dtors)
 
.rel.got
*(.rel.got)
 
.rela.got
*(.rela.got)
 
.rel.bss
*(.rel.bss)
 
.rela.bss
*(.rela.bss)
 
.rel.plt
*(.rel.plt)
 
.rela.plt
*(.rela.plt)
 
.text 0x00000000 0x266c
*(.vectors)
.vectors 0x00000000 0x54 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
0x00000000 __vectors
0x00000000 __vector_default
0x00000054 __ctors_start = .
*(.ctors)
0x00000054 __ctors_end = .
0x00000054 __dtors_start = .
*(.dtors)
0x00000054 __dtors_end = .
*(.progmem.gcc*)
*(.progmem*)
.progmem.data 0x00000054 0x600 F8X6.o
0x00000054 f8x6
.progmem.data 0x00000654 0x7 displ_val.o
.progmem.data 0x0000065b 0x641 parameter.o
0x0000065b parameter
0x00000a7b p_limits
0x00000b42 p_menu_number
0x000009bb bin_parameter
0x00000b85 p_menus
.progmem.data 0x00000c9c 0x3d menu.o
.progmem.data 0x00000cd9 0x13 display.o
.progmem.data 0x00000cec 0x10 motortest.o
0x00000cfc . = ALIGN (0x2)
*(.init0)
*(.init1)
*(.init2)
.init2 0x00000cfc 0xc F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
*(.init3)
*(.init4)
.init4 0x00000d08 0x16 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
0x00000d08 __do_copy_data
.init4 0x00000d1e 0x10 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o)
0x00000d1e __do_clear_bss
*(.init5)
*(.init6)
*(.init7)
*(.init8)
*(.init9)
.init9 0x00000d2e 0x4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
*(.text)
.text 0x00000d32 0x4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
0x00000d32 __vector_1
0x00000d32 __vector_12
0x00000d32 __bad_interrupt
0x00000d32 __vector_6
0x00000d32 __vector_3
0x00000d32 __vector_11
0x00000d32 __vector_17
0x00000d32 __vector_19
0x00000d32 __vector_7
0x00000d32 __vector_5
0x00000d32 __vector_4
0x00000d32 __vector_9
0x00000d32 __vector_2
0x00000d32 __vector_15
0x00000d32 __vector_8
0x00000d32 __vector_14
0x00000d32 __vector_16
0x00000d32 __vector_18
0x00000d32 __vector_20
.text 0x00000d36 0x34 main.o
0x00000d36 main
.text 0x00000d6a 0x8e timer.o
0x00000de8 timer_init
0x00000d6a __vector_10
.text 0x00000df8 0x9f8 lcd.o
0x00000e6c lcd_cls
0x0000123a lcd_print_at
0x00000e72 wait_1ms
0x0000124c lcd_plot
0x00000df8 send_byte
0x000012de lcd_line
0x000011c2 lcd_print_atp
0x0000113a new_line
0x000016ce draw_fcircle
0x000011d4 lcd_print
0x00000f68 scroll
0x00000f22 set_adress
0x00000ea6 lcd_init
0x00001464 lcd_frect
0x00000e7c wait_ms
0x000014e8 lcd_rect
0x00000e08 cls
0x0000157c draw_circle
0x00001154 lcd_printp
0x00000fd2 put_char
.text 0x000017f0 0xbe rs232.o
0x00001834 RS232_init
0x00001888 RS232_send
0x000017f0 __vector_13
0x0000183e RS232_get
0x00001890 RS232_text
.text 0x000018ae 0x1da base64.o
0x00001978 base64_send
0x0000192a get_message
0x000018ae base64_decode
.text 0x00001a88 0x17c displ_val.o
0x00001b0a displ_values
0x00001a88 displ_get_text
.text 0x00001c04 0x6de parameter.o
0x00001ed4 edit_parameter2
0x00001c04 read_parameter
0x0000218e edit_parameter
0x00001cc4 bindec
0x00001d42 show_parameter
0x00001cf8 decimal
0x00001c8e binary
0x00001c58 write_parameter
.text 0x000022e2 0x110 menu.o
0x000022e2 menu_set_cursor
0x0000230c menu_choose
0x00002390 main_menu
.text 0x000023f2 0x114 display.o
0x00002446 display_data
0x000023f2 read_display
.text 0x00002506 0x98 motortest.o
0x00002506 motor_test
.text 0x0000259e 0x42 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o)
0x0000259e itoa
.text 0x000025e0 0x2c F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o)
0x000025e0 utoa
.text 0x0000260c 0x20 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o)
0x0000260c strrev
0x0000262c . = ALIGN (0x2)
*(.text.*)
.text.libgcc 0x0000262c 0x18 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o)
0x0000262c __udivmodqi4
.text.libgcc 0x00002644 0x28 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o)
0x00002644 __udivmodhi4
0x0000266c . = ALIGN (0x2)
*(.fini9)
*(.fini8)
*(.fini7)
*(.fini6)
*(.fini5)
*(.fini4)
*(.fini3)
*(.fini2)
*(.fini1)
*(.fini0)
0x0000266c _etext = .
 
.data 0x00800060 0x0 load address 0x0000266c
0x00800060 PROVIDE (__data_start, .)
*(.data)
*(.gnu.linkonce.d*)
0x00800060 . = ALIGN (0x2)
0x00800060 _edata = .
0x00800060 PROVIDE (__data_end, .)
 
.bss 0x00800060 0x527
0x00800060 PROVIDE (__bss_start, .)
*(.bss)
*(COMMON)
COMMON 0x00800060 0x50a main.o
0x00800060 display_page_counter
0x00800061 timer
0x00800062 display_buffer
0x00800462 display_buffer_counter
0x00800463 p_buffer
0x008004e3 display_mode
0x008004e4 counter
0x008004e5 rs232_timer
0x008004e6 key
0x008004e7 display_buffer_pointer
0x008004e9 r_buffer
0x00800569 counter2
COMMON 0x0080056a 0x2 lcd.o
0x0080056a lcd_xpos
0x0080056b lcd_ypos
COMMON 0x0080056c 0x12 rs232.o
0x0080056c write_index
0x0080056d read_index
0x0080056e rs232_buffer
COMMON 0x0080057e 0x1 displ_val.o
0x0080057e displ_page
COMMON 0x0080057f 0x8 parameter.o
0x0080057f array
0x00800587 PROVIDE (__bss_end, .)
0x0000266c __data_load_start = LOADADDR (.data)
0x0000266c __data_load_end = (__data_load_start + SIZEOF (.data))
 
.noinit 0x00800587 0x0
0x00800587 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800587 PROVIDE (__noinit_end, .)
0x00800587 _end = .
0x00800587 PROVIDE (__heap_start, .)
 
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
 
.stab 0x00000000 0x36c
*(.stab)
.stab 0x00000000 0x36c F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
 
.stabstr 0x00000000 0x84
*(.stabstr)
.stabstr 0x00000000 0x84 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
 
.stab.excl
*(.stab.excl)
 
.stab.exclstr
*(.stab.exclstr)
 
.stab.index
*(.stab.index)
 
.stab.indexstr
*(.stab.indexstr)
 
.comment
*(.comment)
 
.debug
*(.debug)
 
.line
*(.line)
 
.debug_srcinfo
*(.debug_srcinfo)
 
.debug_sfnames
*(.debug_sfnames)
 
.debug_aranges 0x00000000 0xc8
*(.debug_aranges)
.debug_aranges
0x00000000 0x14 main.o
.debug_aranges
0x00000014 0x14 timer.o
.debug_aranges
0x00000028 0x14 lcd.o
.debug_aranges
0x0000003c 0x14 rs232.o
.debug_aranges
0x00000050 0x14 base64.o
.debug_aranges
0x00000064 0x14 displ_val.o
.debug_aranges
0x00000078 0x14 parameter.o
.debug_aranges
0x0000008c 0x14 menu.o
.debug_aranges
0x000000a0 0x14 display.o
.debug_aranges
0x000000b4 0x14 motortest.o
 
.debug_pubnames
0x00000000 0x902
*(.debug_pubnames)
.debug_pubnames
0x00000000 0xe3 main.o
.debug_pubnames
0x000000e3 0x6c timer.o
.debug_pubnames
0x0000014f 0x1b1 lcd.o
.debug_pubnames
0x00000300 0x1b F8X6.o
.debug_pubnames
0x0000031b 0x8d rs232.o
.debug_pubnames
0x000003a8 0xd1 base64.o
.debug_pubnames
0x00000479 0xd2 displ_val.o
.debug_pubnames
0x0000054b 0x177 parameter.o
.debug_pubnames
0x000006c2 0xd1 menu.o
.debug_pubnames
0x00000793 0xc1 display.o
.debug_pubnames
0x00000854 0xae motortest.o
 
.debug_info 0x00000000 0x1dfa
*(.debug_info)
.debug_info 0x00000000 0x1c7 main.o
.debug_info 0x000001c7 0xe6 timer.o
.debug_info 0x000002ad 0x979 lcd.o
.debug_info 0x00000c26 0xdd F8X6.o
.debug_info 0x00000d03 0x174 rs232.o
.debug_info 0x00000e77 0x28d base64.o
.debug_info 0x00001104 0x21e displ_val.o
.debug_info 0x00001322 0x542 parameter.o
.debug_info 0x00001864 0x222 menu.o
.debug_info 0x00001a86 0x1f4 display.o
.debug_info 0x00001c7a 0x180 motortest.o
*(.gnu.linkonce.wi.*)
 
.debug_abbrev 0x00000000 0x98e
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x92 main.o
.debug_abbrev 0x00000092 0x75 timer.o
.debug_abbrev 0x00000107 0x1c7 lcd.o
.debug_abbrev 0x000002ce 0x61 F8X6.o
.debug_abbrev 0x0000032f 0xde rs232.o
.debug_abbrev 0x0000040d 0xe5 base64.o
.debug_abbrev 0x000004f2 0xcc displ_val.o
.debug_abbrev 0x000005be 0x179 parameter.o
.debug_abbrev 0x00000737 0xed menu.o
.debug_abbrev 0x00000824 0xda display.o
.debug_abbrev 0x000008fe 0x90 motortest.o
 
.debug_line 0x00000000 0x1982
*(.debug_line)
.debug_line 0x00000000 0x13b main.o
.debug_line 0x0000013b 0xcd timer.o
.debug_line 0x00000208 0x71f lcd.o
.debug_line 0x00000927 0xbf F8X6.o
.debug_line 0x000009e6 0x144 rs232.o
.debug_line 0x00000b2a 0x236 base64.o
.debug_line 0x00000d60 0x1c3 displ_val.o
.debug_line 0x00000f23 0x547 parameter.o
.debug_line 0x0000146a 0x1b2 menu.o
.debug_line 0x0000161c 0x1cd display.o
.debug_line 0x000017e9 0x199 motortest.o
 
.debug_frame
*(.debug_frame)
 
.debug_str 0x00000000 0x4dc
*(.debug_str)
.debug_str 0x00000000 0x124 main.o
0x192 (size before relaxing)
.debug_str 0x00000124 0x1f timer.o
0xf5 (size before relaxing)
.debug_str 0x00000143 0x166 lcd.o
0x2e2 (size before relaxing)
.debug_str 0x000002a9 0x12 F8X6.o
0x101 (size before relaxing)
.debug_str 0x000002bb 0x63 rs232.o
0x12c (size before relaxing)
.debug_str 0x0000031e 0x4f base64.o
0x1c5 (size before relaxing)
.debug_str 0x0000036d 0x39 displ_val.o
0x1a8 (size before relaxing)
.debug_str 0x000003a6 0xbf parameter.o
0x271 (size before relaxing)
.debug_str 0x00000465 0x34 menu.o
0x19c (size before relaxing)
.debug_str 0x00000499 0x2c display.o
0x1a7 (size before relaxing)
.debug_str 0x000004c5 0x17 motortest.o
0x17a (size before relaxing)
 
.debug_loc
*(.debug_loc)
 
.debug_macinfo
*(.debug_macinfo)
OUTPUT(main.elf elf32-avr)
 
.debug_ranges 0x0000266c 0xc
.debug_ranges 0x0000266c 0xc lcd.o
 
Cross Reference Table
 
Symbol File
RS232_get rs232.o
base64.o
RS232_init rs232.o
main.o
RS232_send rs232.o
base64.o
RS232_text rs232.o
__bad_interrupt F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__bss_end F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o)
__bss_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o)
__data_end F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
__data_load_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
__data_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
__do_clear_bss F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o)
motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
rs232.o
F8X6.o
lcd.o
timer.o
main.o
__do_copy_data F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o)
motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
rs232.o
F8X6.o
lcd.o
timer.o
main.o
__heap_end F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__init F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__stack F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
main.o
__udivmodhi4 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o)
__udivmodqi4 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o)
parameter.o
__vector_1 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_10 timer.o
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_11 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_12 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_13 rs232.o
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_14 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_15 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_16 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_17 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_18 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_19 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_2 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_20 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_3 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_5 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_6 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_7 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_8 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_9 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vector_default F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
__vectors F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
array parameter.o
base64_decode base64.o
base64_send base64.o
motortest.o
display.o
parameter.o
displ_val.o
bin_parameter parameter.o
binary parameter.o
bindec parameter.o
cls lcd.o
counter timer.o
main.o
counter2 timer.o
main.o
decimal parameter.o
displ_get_text displ_val.o
displ_page displ_val.o
displ_values displ_val.o
display_buffer motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
lcd.o
main.o
display_buffer_counter motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
lcd.o
main.o
display_buffer_pointer motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
lcd.o
main.o
display_data display.o
menu.o
display_mode motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
lcd.o
main.o
display_page_counter motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
lcd.o
main.o
draw_circle lcd.o
draw_fcircle lcd.o
edit_parameter parameter.o
menu.o
edit_parameter2 parameter.o
f8x6 F8X6.o
lcd.o
get_message base64.o
display.o
parameter.o
displ_val.o
itoa F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o)
displ_val.o
key motortest.o
display.o
menu.o
parameter.o
displ_val.o
timer.o
main.o
lcd_cls lcd.o
motortest.o
display.o
menu.o
parameter.o
displ_val.o
lcd_frect lcd.o
lcd_init lcd.o
main.o
lcd_line lcd.o
lcd_plot lcd.o
lcd_print lcd.o
parameter.o
lcd_print_at lcd.o
display.o
parameter.o
displ_val.o
lcd_print_atp lcd.o
menu.o
parameter.o
displ_val.o
lcd_printp lcd.o
motortest.o
display.o
menu.o
parameter.o
lcd_rect lcd.o
lcd_xpos lcd.o
lcd_ypos lcd.o
main main.o
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o
main_menu menu.o
main.o
menu_choose menu.o
parameter.o
menu_set_cursor menu.o
motor_test motortest.o
menu.o
new_line lcd.o
p_buffer motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
main.o
p_limits parameter.o
p_menu_number parameter.o
p_menus parameter.o
parameter parameter.o
put_char lcd.o
r_buffer motortest.o
display.o
menu.o
parameter.o
displ_val.o
base64.o
main.o
read_display display.o
read_index rs232.o
read_parameter parameter.o
rs232_buffer rs232.o
rs232_timer rs232.o
timer.o
main.o
scroll lcd.o
send_byte lcd.o
set_adress lcd.o
show_parameter parameter.o
strrev F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o)
F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o)
timer display.o
parameter.o
base64.o
timer.o
main.o
timer_init timer.o
main.o
utoa F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o)
parameter.o
wait_1ms lcd.o
wait_ms lcd.o
write_index rs232.o
write_parameter parameter.o
/Transportables_Koptertool/trunk/main.sym
0,0 → 1,204
00000000 W __heap_end
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 W __vector_default
00000000 T __vectors
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
00000054 T __ctors_end
00000054 T __ctors_start
00000054 T __dtors_end
00000054 T __dtors_start
00000054 T f8x6
00000654 t __c.0
0000065b T parameter
0000085f W __stack
000009bb T bin_parameter
00000a7b T p_limits
00000b42 T p_menu_number
00000b85 T p_menus
00000c09 t __c.11
00000c0b t __c.12
00000c0d t __c.13
00000c0f t __c.0
00000c20 t __c.1
00000c26 t __c.2
00000c2c t __c.3
00000c32 t __c.4
00000c38 t __c.5
00000c3e t __c.6
00000c46 t __c.7
00000c69 t __c.8
00000c70 t __c.9
00000c88 t __c.10
00000c9c t __c.4
00000c9e t __c.5
00000ca0 t __c.0
00000cb7 t __c.1
00000cc3 t __c.2
00000ccf t __c.3
00000cd9 t __c.0
00000ce1 t __c.1
00000cec t __c.0
00000cfc W __init
00000d08 T __do_copy_data
00000d14 t .do_copy_data_loop
00000d18 t .do_copy_data_start
00000d1e T __do_clear_bss
00000d26 t .do_clear_bss_loop
00000d28 t .do_clear_bss_start
00000d32 T __bad_interrupt
00000d32 W __vector_1
00000d32 W __vector_11
00000d32 W __vector_12
00000d32 W __vector_14
00000d32 W __vector_15
00000d32 W __vector_16
00000d32 W __vector_17
00000d32 W __vector_18
00000d32 W __vector_19
00000d32 W __vector_2
00000d32 W __vector_20
00000d32 W __vector_3
00000d32 W __vector_4
00000d32 W __vector_5
00000d32 W __vector_6
00000d32 W __vector_7
00000d32 W __vector_8
00000d32 W __vector_9
00000d36 T main
00000d6a T __vector_10
00000de8 T timer_init
00000df8 T send_byte
00000e08 T cls
00000e6c T lcd_cls
00000e72 T wait_1ms
00000e7c T wait_ms
00000ea6 T lcd_init
00000f22 T set_adress
00000f68 T scroll
00000fd2 T put_char
0000113a T new_line
00001154 T lcd_printp
000011c2 T lcd_print_atp
000011d4 T lcd_print
0000123a T lcd_print_at
0000124c T lcd_plot
000012de T lcd_line
00001464 T lcd_frect
000014e8 T lcd_rect
0000157c T draw_circle
000016ce T draw_fcircle
000017f0 T __vector_13
00001834 T RS232_init
0000183e T RS232_get
00001888 T RS232_send
00001890 T RS232_text
000018ae T base64_decode
0000192a T get_message
00001978 T base64_send
00001a88 T displ_get_text
00001b0a T displ_values
00001c04 T read_parameter
00001c58 T write_parameter
00001c8e T binary
00001cc4 T bindec
00001cf8 T decimal
00001d42 T show_parameter
00001ed4 T edit_parameter2
0000218e T edit_parameter
000022e2 T menu_set_cursor
0000230c T menu_choose
00002390 T main_menu
000023f2 T read_display
00002446 T display_data
00002506 T motor_test
0000259e T itoa
000025e0 T utoa
0000260c T strrev
0000262c T __udivmodqi4
00002632 t __udivmodqi4_loop
0000263a t __udivmodqi4_ep
00002644 T __udivmodhi4
0000264c t __udivmodhi4_loop
0000265a t __udivmodhi4_ep
0000266c A __data_load_end
0000266c A __data_load_start
0000266c T _etext
00800060 B __bss_start
00800060 D __data_end
00800060 D __data_start
00800060 D _edata
00800060 B display_page_counter
00800061 B timer
00800062 B display_buffer
00800462 B display_buffer_counter
00800463 B p_buffer
008004e3 B display_mode
008004e4 B counter
008004e5 B rs232_timer
008004e6 B key
008004e7 B display_buffer_pointer
008004e9 B r_buffer
00800569 B counter2
0080056a B lcd_xpos
0080056b B lcd_ypos
0080056c B write_index
0080056d B read_index
0080056e B rs232_buffer
0080057e B displ_page
0080057f B array
00800587 B __bss_end
00800587 ? _end
00810000 ? __eeprom_end
/Transportables_Koptertool/trunk/makefile
0,0 → 1,414
# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al.
# Released to the Public Domain
# Please read the make user manual!
#
# Additional material for this makefile was submitted by:
# Tim Henigan
# Peter Fleury
# Reiner Patommel
# Sander Pool
# Frederik Rouleau
# Markus Pfaff
#
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB).
#
# make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio
# 4.07 or greater).
#
# make program = Download the hex file to the device, using avrdude. Please
# customize the avrdude settings below first!
#
# make filename.s = Just compile filename.c into the assembler code only
#
# To rebuild project do "make clean" then "make all".
#
 
 
# MCU name
MCU = atmega32
 
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
 
#put the name of the target file here (without extension)
# TARGET = main
TARGET = MMT
 
#put your C sourcefiles here
# SRC = circle.c F8x8b.c F8x8a.c F8x6.c f8x8fv.c f8x6fv.c f6x5fv.c f6x4fv.c fontsoft.c serial.c paul.c bitmap.c demo.c draw.c F16x8a.c F16x8b.c F16x8c.c t6963.c $(TARGET).c
SRC = $(TARGET).c timer.c lcd.c F8X6.c rs232.c base64.c displ_val.c parameter.c menu.c display.c motortest.c
 
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
 
 
# List C source files here. (C dependencies are automatically generated.)
# SRC = $(TARGET).c
 
# If there is more than one source file, append them above, or modify and
# uncomment the following:
#SRC += foo.c bar.c
 
# You can also wrap lines by appending a backslash to the end of the line:
#SRC += baz.c \
#xyzzy.c
 
 
 
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
 
 
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
EXTRAINCDIRS =
 
 
# Optional compiler flags.
# -g: generate debugging information (for GDB, or for COFF conversion)
# -O*: optimization level
# -f...: tuning, see gcc manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create assembler listing
CFLAGS = -g -O$(OPT) \
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-adhlns=$(<:.c=.lst) \
$(patsubst %,-I%,$(EXTRAINCDIRS))
 
 
# Set a "language standard" compiler flag.
# Unremark just one line below to set the language standard to use.
# gnu99 = C99 + GNU extensions. See GCC manual for more information.
#CFLAGS += -std=c89
#CFLAGS += -std=gnu89
#CFLAGS += -std=c99
CFLAGS += -std=gnu99
 
 
 
# Optional assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
 
 
 
# Optional linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
 
 
 
# Additional libraries
 
# Minimalistic printf version
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min
 
# Floating point printf version (requires -lm below)
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
 
# -lm = math library
LDFLAGS += -lm
 
 
 
 
# Programming support using avrdude. Settings and variables.
 
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Type: avrdude -c ?
# to get a full listing.
#
AVRDUDE_PROGRAMMER = avr911
 
 
AVRDUDE_PORT = com4 # programmer connected to serial device
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port
 
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b 115200 -F
 
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE += -y
 
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_FLAGS += -V
 
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_FLAGS += -v -v
 
 
 
 
# ---------------------------------------------------------------------------
 
# Define directories, if needed.
DIRAVR = F:/Eigene Dateien/Controller/winavr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = .
DIRLIB = $(DIRAVR)/avr/lib
 
 
# Defines and commands.
SHELL = sh
 
CC = avr-gcc
 
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
 
 
# Programming support using avrdude.
AVRDUDE = avrdude
 
 
REMOVE = rm -f
COPY = cp
 
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
 
 
 
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for Flash:
MSG_EEPROM = Creating load file for EEPROM:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
 
 
 
 
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
 
# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
 
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
 
 
 
# Default target.
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \
$(TARGET).lss $(TARGET).sym sizeafter finished end
 
 
# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@echo
@echo $(MSG_BEGIN)
 
finished:
@echo $(MSG_ERRORS_NONE)
 
end:
@echo $(MSG_END)
@echo
 
 
# Display size of file.
sizebefore:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
 
sizeafter:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
 
 
 
# Display compiler version information.
gccversion :
@$(CC) --version
 
 
 
 
# Convert ELF to COFF for use in debugging / simulating in
# AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
 
 
coff: $(TARGET).elf
@echo
@echo $(MSG_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
 
 
extcoff: $(TARGET).elf
@echo
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
 
 
 
# Programming support using ponyprog. Settings and variables.
#PONYPROG= ponyprog2000.exe
#PONYPROG= C:\Programme\ponyprog2000\ponyprog2000.exe
# Program the device.
#program: $(TARGET).hex $(TARGET).eep
# echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG $(TARGET).hex\n#LOAD-DATA $(TARGET).eep\nWRITE-PROG" >isp.e2s
# $(PONYPROG) isp.e2s
 
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 
 
 
 
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
 
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
 
# Create extended listing file from ELF output file.
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S $< > $@
 
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
avr-nm -n $< > $@
 
 
 
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
 
 
# Compile: create object files from C source files.
%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 
# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@
 
 
# Assemble: create object files from assembler source files.
%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
 
 
 
 
 
 
# Target: clean project.
clean: begin clean_list finished end
 
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).eep
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).cof
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(OBJ)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
 
 
# Automatically generate C source code dependencies.
# (Code originally taken from the GNU make user manual and modified
# (See README.txt Credits).)
#
# Note that this will work with sh (bash) and sed that is shipped with WinAVR
# (see the SHELL variable defined above).
# This may not work with other shells or other seds.
#
%.d: %.c
set -e; $(CC) -MM $(ALL_CFLAGS) $< \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
[ -s $@ ] || rm -f $@
 
 
# Remove the '-' if you want to see the dependency files generated.
-include $(SRC:.c=.d)
 
 
 
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
clean clean_list program
 
/Transportables_Koptertool/trunk/menu.c
0,0 → 1,90
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "lcd.h"
#include "rs232.h"
#include "base64.h"
#include "parameter.h"
#include "menu.h"
#include "display.h"
#include "motortest.h"
#include "debug.h"
#include "settings.h"
 
 
// Subroutine für den Stern (*) bzw. Cursor
 
void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
{
lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen
lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen
}
 
 
// Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max.
// Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden.
// Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben.
 
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos)
{
uint8_t line, before;
line = min;
before = min;
menu_set_cursor(line,line,pos);
do
{
while (key != key_nokey);
while(key == key_nokey);
if ((key == key_plus) && (line < max))
line ++;
if ((key == key_minus) && (line > min))
line --;
 
menu_set_cursor(before,line,pos);
before = line;
}
while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde
if (key == key_esc)
line = 255;
while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde
return line;
}
 
void main_menu (void)
{
lcd_cls();
lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0);
lcd_printp(PSTR("\r\nDisplay\r\n"),0);
lcd_printp(PSTR("Parameter\r\n"),0);
lcd_printp(PSTR("Motortest\r\n"),0);
lcd_printp(PSTR("Debug Daten\r\n"),0);
lcd_printp(PSTR("Settings\r\n"),0);
lcd_printp(PSTR("Mod by Mikeljo 05/08"),0);
 
switch(menu_choose(2,6,12))
{
case 2:
display_data(); // LCD-Modus
break;
case 3:
edit_parameter(); // Parameter (Settings) laden/editieren
break;
case 4:
motor_test(); // primitiver Motor-Test
break;
case 5:
display_debug(); // Debug Daten
break;
case 6:
LCD_settings(); // Einstellungen
break;
}
}
/Transportables_Koptertool/trunk/menu.d
0,0 → 1,2
menu.o menu.d : menu.c main.h lcd.h rs232.h base64.h parameter.h menu.h display.h \
motortest.h
/Transportables_Koptertool/trunk/menu.h
0,0 → 1,7
#ifndef menu_h
#define menu_h
 
void main_menu (void);
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos);
 
#endif
/Transportables_Koptertool/trunk/menu.lst
0,0 → 1,264
1 .file "menu.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .section .progmem.data,"a",@progbits
21 __c.4:
22 0000 2000 .string " "
25 __c.5:
26 0002 2A00 .string "*"
27 .text
28 .global menu_set_cursor
30 menu_set_cursor:
31 .LFB4:
32 .LM1:
33 /* prologue: frame size=0 */
34 0000 0F93 push r16
35 0002 1F93 push r17
36 /* prologue end (size=2) */
37 0004 062F mov r16,r22
38 0006 142F mov r17,r20
39 .LM2:
40 0008 20E0 ldi r18,lo8(0)
41 000a 40E0 ldi r20,lo8(__c.4)
42 000c 50E0 ldi r21,hi8(__c.4)
43 000e 682F mov r22,r24
44 0010 812F mov r24,r17
45 0012 0E94 0000 call lcd_print_atp
46 .LM3:
47 0016 20E0 ldi r18,lo8(0)
48 0018 40E0 ldi r20,lo8(__c.5)
49 001a 50E0 ldi r21,hi8(__c.5)
50 001c 602F mov r22,r16
51 001e 812F mov r24,r17
52 0020 0E94 0000 call lcd_print_atp
53 /* epilogue: frame size=0 */
54 0024 1F91 pop r17
55 0026 0F91 pop r16
56 0028 0895 ret
57 /* epilogue end (size=3) */
58 /* function menu_set_cursor size 21 (16) */
59 .LFE4:
61 .global menu_choose
63 menu_choose:
64 .LFB5:
65 .LM4:
66 /* prologue: frame size=0 */
67 002a EF92 push r14
68 002c FF92 push r15
69 002e 0F93 push r16
70 0030 1F93 push r17
71 0032 CF93 push r28
72 /* prologue end (size=5) */
73 0034 F82E mov r15,r24
74 0036 E62E mov r14,r22
75 0038 042F mov r16,r20
76 .LM5:
77 003a C82F mov r28,r24
78 .LM6:
79 003c 182F mov r17,r24
80 .LM7:
81 003e 682F mov r22,r24
82 0040 0E94 0000 call menu_set_cursor
83 .L21:
84 .LM8:
85 0044 8091 0000 lds r24,key
86 0048 8823 tst r24
87 004a E1F7 brne .L21
88 .L9:
89 .LM9:
90 004c 8091 0000 lds r24,key
91 0050 8823 tst r24
92 0052 E1F3 breq .L9
93 .LM10:
94 0054 8091 0000 lds r24,key
95 0058 8230 cpi r24,lo8(2)
96 005a 19F4 brne .L12
97 005c CE15 cp r28,r14
98 005e 08F4 brsh .L12
99 .LM11:
100 0060 CF5F subi r28,lo8(-(1))
101 .L12:
102 .LM12:
103 0062 8091 0000 lds r24,key
104 0066 8130 cpi r24,lo8(1)
105 0068 19F4 brne .L13
106 006a FC16 cp r15,r28
107 006c 08F4 brsh .L13
108 .LM13:
109 006e C150 subi r28,lo8(-(-1))
110 .L13:
111 .LM14:
112 0070 402F mov r20,r16
113 0072 6C2F mov r22,r28
114 0074 812F mov r24,r17
115 0076 0E94 0000 call menu_set_cursor
116 .LM15:
117 007a 1C2F mov r17,r28
118 .LM16:
119 007c 8091 0000 lds r24,key
120 0080 8830 cpi r24,lo8(8)
121 0082 21F0 breq .L4
122 0084 8091 0000 lds r24,key
123 0088 8430 cpi r24,lo8(4)
124 008a E1F6 brne .L21
125 .L4:
126 .LM17:
127 008c 8091 0000 lds r24,key
128 0090 8430 cpi r24,lo8(4)
129 0092 09F4 brne .L15
130 .LM18:
131 0094 CFEF ldi r28,lo8(-1)
132 .L15:
133 .LM19:
134 0096 8091 0000 lds r24,key
135 009a 8823 tst r24
136 009c E1F7 brne .L15
137 .LM20:
138 009e 8C2F mov r24,r28
139 00a0 9927 clr r25
140 /* epilogue: frame size=0 */
141 00a2 CF91 pop r28
142 00a4 1F91 pop r17
143 00a6 0F91 pop r16
144 00a8 FF90 pop r15
145 00aa EF90 pop r14
146 00ac 0895 ret
147 /* epilogue end (size=6) */
148 /* function menu_choose size 66 (55) */
149 .LFE5:
151 .section .progmem.data
154 __c.0:
155 0004 4861 7570 .string "Hauptmen\374(BETA V0.1)\r\n"
155 746D 656E
155 FC28 4245
155 5441 2056
155 302E 3129
158 __c.1:
159 001b 0D0A 4469 .string "\r\nDisplay\r\n"
159 7370 6C61
159 790D 0A00
162 __c.2:
163 0027 5061 7261 .string "Parameter\r\n"
163 6D65 7465
163 720D 0A00
166 __c.3:
167 0033 4D6F 746F .string "Motortest"
167 7274 6573
167 7400
168 .text
169 .global main_menu
171 main_menu:
172 .LFB6:
173 .LM21:
174 /* prologue: frame size=0 */
175 /* prologue end (size=0) */
176 .LM22:
177 00ae 0E94 0000 call lcd_cls
178 .LM23:
179 00b2 60E0 ldi r22,lo8(0)
180 00b4 80E0 ldi r24,lo8(__c.0)
181 00b6 90E0 ldi r25,hi8(__c.0)
182 00b8 0E94 0000 call lcd_printp
183 .LM24:
184 00bc 60E0 ldi r22,lo8(0)
185 00be 80E0 ldi r24,lo8(__c.1)
186 00c0 90E0 ldi r25,hi8(__c.1)
187 00c2 0E94 0000 call lcd_printp
188 .LM25:
189 00c6 60E0 ldi r22,lo8(0)
190 00c8 80E0 ldi r24,lo8(__c.2)
191 00ca 90E0 ldi r25,hi8(__c.2)
192 00cc 0E94 0000 call lcd_printp
193 .LM26:
194 00d0 60E0 ldi r22,lo8(0)
195 00d2 80E0 ldi r24,lo8(__c.3)
196 00d4 90E0 ldi r25,hi8(__c.3)
197 00d6 0E94 0000 call lcd_printp
198 .LM27:
199 00da 4AE0 ldi r20,lo8(10)
200 00dc 64E0 ldi r22,lo8(4)
201 00de 82E0 ldi r24,lo8(2)
202 00e0 0E94 0000 call menu_choose
203 00e4 9927 clr r25
204 00e6 8330 cpi r24,3
205 00e8 9105 cpc r25,__zero_reg__
206 00ea 61F0 breq .L25
207 .LM28:
208 00ec 8430 cpi r24,4
209 00ee 9105 cpc r25,__zero_reg__
210 00f0 1CF4 brge .L27
211 00f2 0297 sbiw r24,2
212 00f4 21F0 breq .L24
213 00f6 0895 ret
214 .L27:
215 00f8 0497 sbiw r24,4
216 00fa 39F0 breq .L26
217 00fc 0895 ret
218 .L24:
219 .LM29:
220 00fe 0E94 0000 call display_data
221 .LM30:
222 0102 0895 ret
223 .L25:
224 .LM31:
225 0104 0E94 0000 call edit_parameter
226 .LM32:
227 0108 0895 ret
228 .L26:
229 .LM33:
230 010a 0E94 0000 call motor_test
231 010e 0895 ret
232 /* epilogue: frame size=0 */
233 /* epilogue: noreturn */
234 /* epilogue end (size=0) */
235 /* function main_menu size 51 (51) */
236 .LFE6:
238 .comm r_buffer,128,1
239 .comm p_buffer,128,1
240 .comm display_buffer,1024,1
241 .comm display_buffer_pointer,2,1
242 .comm display_buffer_counter,1,1
243 .comm display_page_counter,1,1
244 .comm display_mode,1,1
245 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 menu.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:21 .progmem.data:00000000 __c.4
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:25 .progmem.data:00000002 __c.5
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:30 .text:00000000 menu_set_cursor
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:63 .text:0000002a menu_choose
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:154 .progmem.data:00000004 __c.0
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:158 .progmem.data:0000001b __c.1
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:162 .progmem.data:00000027 __c.2
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:166 .progmem.data:00000033 __c.3
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccegaaaa.s:171 .text:000000ae main_menu
*COM*:00000080 r_buffer
*COM*:00000080 p_buffer
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
lcd_print_atp
key
lcd_cls
lcd_printp
display_data
edit_parameter
motor_test
/Transportables_Koptertool/trunk/mmt.aws
0,0 → 1,0
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA32"/><Files><File00000 Name="D:\Develop\MMT\lcd.c" Position="269 211 1116 677" LineCol="26 0" State="Maximized"/><File00001 Name="D:\Develop\MMT\settings.c" Position="309 265 1156 731" LineCol="9 0" State="Maximized"/><File00002 Name="D:\Develop\MMT\settings.h" Position="176 63 1185 766" LineCol="4 0" State="Maximized"/><File00003 Name="D:\Develop\MMT\main.h" Position="208 126 1055 592" LineCol="25 0" State="Maximized"/><File00004 Name="D:\Develop\MMT\lcd.h" Position="252 184 1099 650" LineCol="27 0" State="Maximized"/><File00005 Name="D:\Develop\MMT\main.c" Position="274 213 1121 679" LineCol="88 0" State="Maximized"/><File00006 Name="D:\Develop\MMT\menu.c" Position="185 69 1194 772" LineCol="0 0" State="Maximized"/><File00007 Name="D:\Develop\MMT\debug.c" Position="188 71 1197 774" LineCol="184 39" State="Maximized"/><File00008 Name="D:\Develop\MMT\base64.c" Position="214 130 1061 596" LineCol="77 0" State="Maximized"/><File00009 Name="D:\Develop\MMT\display.c" Position="236 159 1083 625" LineCol="32 72" State="Maximized"/><File00010 Name="D:\Develop\MMT\parameter.c" Position="258 188 1105 654" LineCol="277 18" State="Maximized"/><File00011 Name="D:\Develop\MMT\base64.h" Position="302 246 1149 712" LineCol="9 0" State="Maximized"/><File00012 Name="D:\Develop\MMT\debug.h" Position="324 275 1171 741" LineCol="8 10" State="Maximized"/><File00013 Name="D:\Develop\MMT\parameter.h" Position="346 304 1193 770" LineCol="4 43" State="Maximized"/></Files></AVRWorkspace>
/Transportables_Koptertool/trunk/motortest.c
0,0 → 1,52
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "motortest.h"
#include "lcd.h"
#include "base64.h"
 
void motor_test(void)
{
lcd_cls();
 
while (key != 0x00);
 
lcd_printp(PSTR("Taste drücken\r\n"),0);
while (key == 0x00);
if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird
{
p_buffer[0] = '#'; // Motoren einschalten
p_buffer[1] = 'a';
p_buffer[2] = 't';
p_buffer[3] = 10;
p_buffer[4] = 10;
p_buffer[5] = 10;
p_buffer[6] = 10;
p_buffer[7] = 0;
p_buffer[8] = 0;
 
base64_send(9);
}
while (key != 0x00);
while (key == 0x00);
p_buffer[0] = '#'; // Motoren ausschalten
p_buffer[1] = 'a';
p_buffer[2] = 't';
p_buffer[3] = 0;
p_buffer[4] = 0;
p_buffer[5] = 0;
p_buffer[6] = 0;
p_buffer[7] = 0;
p_buffer[8] = 0;
 
base64_send(9);
}
/Transportables_Koptertool/trunk/motortest.d
0,0 → 1,0
motortest.o motortest.d : motortest.c main.h motortest.h lcd.h base64.h
/Transportables_Koptertool/trunk/motortest.h
0,0 → 1,6
#ifndef motortest_h
#define motortest_h
 
void motor_test(void);
 
#endif
/Transportables_Koptertool/trunk/motortest.lst
0,0 → 1,139
1 .file "motortest.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .section .progmem.data,"a",@progbits
21 __c.0:
22 0000 5461 7374 .string "Taste dr\374cken\r\n"
22 6520 6472
22 FC63 6B65
22 6E0D 0A00
23 .text
24 .global motor_test
26 motor_test:
27 .LFB4:
28 .LM1:
29 /* prologue: frame size=0 */
30 /* prologue end (size=0) */
31 .LM2:
32 0000 0E94 0000 call lcd_cls
33 .L2:
34 .LM3:
35 0004 6091 0000 lds r22,key
36 0008 6623 tst r22
37 000a E1F7 brne .L2
38 .LM4:
39 000c 80E0 ldi r24,lo8(__c.0)
40 000e 90E0 ldi r25,hi8(__c.0)
41 0010 0E94 0000 call lcd_printp
42 .L5:
43 .LM5:
44 0014 8091 0000 lds r24,key
45 0018 8823 tst r24
46 001a E1F3 breq .L5
47 .LM6:
48 001c 8091 0000 lds r24,key
49 0020 8830 cpi r24,lo8(8)
50 0022 C9F4 brne .L9
51 .LM7:
52 0024 83E2 ldi r24,lo8(35)
53 0026 8093 0000 sts p_buffer,r24
54 .LM8:
55 002a 81E6 ldi r24,lo8(97)
56 002c 8093 0000 sts p_buffer+1,r24
57 .LM9:
58 0030 84E7 ldi r24,lo8(116)
59 0032 8093 0000 sts p_buffer+2,r24
60 .LM10:
61 0036 8AE0 ldi r24,lo8(10)
62 0038 8093 0000 sts p_buffer+3,r24
63 .LM11:
64 003c 8093 0000 sts p_buffer+4,r24
65 .LM12:
66 0040 8093 0000 sts p_buffer+5,r24
67 .LM13:
68 0044 8093 0000 sts p_buffer+6,r24
69 .LM14:
70 0048 1092 0000 sts p_buffer+7,__zero_reg__
71 .LM15:
72 004c 1092 0000 sts p_buffer+8,__zero_reg__
73 .LM16:
74 0050 89E0 ldi r24,lo8(9)
75 0052 0E94 0000 call base64_send
76 .L9:
77 .LM17:
78 0056 8091 0000 lds r24,key
79 005a 8823 tst r24
80 005c E1F7 brne .L9
81 .L12:
82 .LM18:
83 005e 8091 0000 lds r24,key
84 0062 8823 tst r24
85 0064 E1F3 breq .L12
86 .LM19:
87 0066 83E2 ldi r24,lo8(35)
88 0068 8093 0000 sts p_buffer,r24
89 .LM20:
90 006c 81E6 ldi r24,lo8(97)
91 006e 8093 0000 sts p_buffer+1,r24
92 .LM21:
93 0072 84E7 ldi r24,lo8(116)
94 0074 8093 0000 sts p_buffer+2,r24
95 .LM22:
96 0078 1092 0000 sts p_buffer+3,__zero_reg__
97 .LM23:
98 007c 1092 0000 sts p_buffer+4,__zero_reg__
99 .LM24:
100 0080 1092 0000 sts p_buffer+5,__zero_reg__
101 .LM25:
102 0084 1092 0000 sts p_buffer+6,__zero_reg__
103 .LM26:
104 0088 1092 0000 sts p_buffer+7,__zero_reg__
105 .LM27:
106 008c 1092 0000 sts p_buffer+8,__zero_reg__
107 .LM28:
108 0090 89E0 ldi r24,lo8(9)
109 0092 0E94 0000 call base64_send
110 /* epilogue: frame size=0 */
111 0096 0895 ret
112 /* epilogue end (size=1) */
113 /* function motor_test size 76 (75) */
114 .LFE4:
116 .comm r_buffer,128,1
117 .comm p_buffer,128,1
118 .comm display_buffer,1024,1
119 .comm display_buffer_pointer,2,1
120 .comm display_buffer_counter,1,1
121 .comm display_page_counter,1,1
122 .comm display_mode,1,1
123 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 motortest.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:21 .progmem.data:00000000 __c.0
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccUxaaaa.s:26 .text:00000000 motor_test
*COM*:00000080 p_buffer
*COM*:00000080 r_buffer
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
lcd_cls
key
lcd_printp
base64_send
/Transportables_Koptertool/trunk/parameter.c
0,0 → 1,556
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
 
#include "main.h"
#include "lcd.h"
#include "rs232.h"
#include "base64.h"
#include "parameter.h"
#include "menu.h"
 
uint8_t array[8];
 
prog_uchar p_menus[12][11]=
{
"Config ",
"Channels ",
"Stick ",
"Hoehe ",
"Gyro ",
"Looping ",
"Camera ",
"Sonstiges ",
"User ",
"Coupling ",
"Config(2) ",
"Loopingset"
};
 
 
// Diese Tabelle ordnet die eingelesenen Parameter den Menü-Seiten zu
 
prog_uchar p_menu_number[67]=
{
2,2,2,2,2,2,2,2, // Die ersten 8 Parameter werden auf Menüseite 2 angezeigt (=Kanalzuordnungen)
0,4,4,4,4,4,4,3,
3,3,8,8,8,8,5,5,
8,8,8,0,5,9,9,9,
9,7,7,7,7,7,7,6,
6,6,10,10,6,6,5,5,
5,9,9,9,9,0,7,11,
11,11,11,12,12, 12,
12,12,12,12,12
 
};
 
prog_uchar p_limits[199]= // Limits für die Parameter
{
1,8,2, // 2:Nick (3)
1,8,2, // 2:Roll (4)
1,8,2, // 2:Gas (2)
1,8,2, // 2:Gier (1)
1,8,2, // 2:Poti1 (6)
1,8,2, // 2:Poti2 (6)
1,8,2, // 2:Poti3 (7)
1,8,2, // 2:Poti4 (5)
0,0,0, // 1:Config
0,255,4, // 4:Höhe MinGas (30)
0,255,4, // 4:Luftdruck_D (30)
0,255,4, // 4:MaxHöhe (Setpoint?) (Poti4)
0,255,4, // 4:Höhe_P (10)
0,50,4, // 4:Höhe Verstärkung (3)
0,255,4, // 4:Höhe Z-acc (30)
0,6,3, // 3:Nick/Roll P (3)
0,64,3, // 3:Nick/Roll D (4)
0,20,3, // 3:Gier_P (6)
0,32,8, // 8:Min.Gas (15)
33,250,8, // 8:Max.Gas (250)
0,50,8, // 5:Gyro-Acc Faktor (30)
0,255,8, // 8:Kompass-Wirkung (128)
0,0,5, // 5:Gyro-P (80)
0,0,5, // 5:Gyro-I (120)
0,250,8, // 8:Unterspannung (94)
0,250,8, // 8:Not-Gas Zeit (20)
0,250,8, // 8:Not-Gas (35)
0,1,0, // Ufo-Ausrichtung (X +)
0,255,5, // I-Faktor (32)
0,255,9, // 9:User1 (80)
0,255,9, // 9:User2 (0)
0,255,9, // 9:User3
0,255,9, // 9:User4
0,255,7, // 7:Servo Nick Control (100)
0,250,7, // 7:Servo Nick Compensation (40)
0,250,7, // 7:Servo Nick min (50)
0,250,7, // 7:Servo Nick max (150)
0,25,7, // 7:Servo Nick refrsh (5)
0,255,6, // 6:Loop Gas Limit (50)
0,250,6, // 6:Loop Ansprechschwelle (90)
0,250,6, // 6:Loop Hysterese (50)
0,255,10, // 10:Achskopplung (90)
0,255,10, // 10:Achsgegenkopplung (5)
0,250,6, // 6:Turnover Nick (100)
0,250,6, // 6:Turnover Roll (100)
0,250,5, // 5: Gyro-Abgleich (Comp.) (32)
0,250,5, // 5: Drift (4)
0,255,5, // 5: Dynamic stability (75)
0,255,9, // 9:User5
0,255,9, // 9:User6
0,255,9, // 9:User7
0,255,9, // 9:User8 (0)
 
0,0,1, // 6:Loop Config (0)
0,1,7 // 7:Servo Nick Compensation Invert (0)
};
 
prog_char bin_parameter[12][16] = // Die binär kodierten Parametern werden getrennt behandelt.
{
"Loop up ",
"Loop down ",
"Loop left ",
"Loop right ",
"Höhenregler ", // 8
"Höhenschalter ",
"Headhold ",
"Kompass ",
"KompassFix ",
"GPS ",
"Achsenkopplung ",
"Drehrate "
};
 
prog_char parameter[54][16]=
{
"Nick ", // 0 (3)
"Roll ", // 1 (4)
"Gas ", // (2)
"Gier ", // (1)
"Poti1 ", // (6)
"Poti2 ", // (6)
"Poti3 ", // (7)
"Poti4 ", // 7 (5)
"Config ", // 8
"Hoehe_MinGas ", // 9 (30)
"Luftdruck_D ", // 10 Wert : 0-250 (30)
"MaxHoehe ", // 11 Wert : 0-250 251 -> Poti1 (Poti4)
"Hoehe_P ", // 12 Wert : 0-32 (10)
"Hoehe_Verstaerk", // 13 Wert : 0-50
"Hoehe_ACC_Wirk.", // 14 Wert : 0-250 (30)
"Stick_P ", // 15 Wert : 1-6
"Stick_D ", // 16 Wert : 0-64
"Gier_P ", // 17 Wert : 1-20 POTI(?)
"Gas_Min ", // 17 Wert : 0-32
"Gas_Max ", // 18 Wert : 33-250
"GyroAccFaktor ", // 19 Wert : 1-64
"KompassWirkung ", // 20 Wert : 0-250
"Gyro_P ", // 21 Wert : 0-250
"Gyro_I ", // 22 Wert : 0-250
"Unterspannung ", // 23 Wert : 0-250
"NotGas ", // 24 Wert : 0-250 // Gaswert bei Empangsverlust
"NotGasZeit ", // 25 Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
"UfoAusrichtung ", // 26 X oder + Formation
"I_Faktor ", // 27 = 32;
"UserParam1 ", // 28 = 32 * 4; //zur freien Verwendung
"UserParam2 ", // 29 zur freien Verwendung
"UserParam3 ", // 30 zur freien Verwendung
"UserParam4 ", // 31 zur freien Verwendung
"ServoNickCtrl ", // 32 Wert : 0-250 // Stellung des Servos
"ServoNickComp ", // 33 Wert : 0-250 // Einfluss Gyro/Servo
"ServoNickMin ", // 34 Wert : 0-250 // Anschlag
"ServoNickMax ", // 35 Wert : 0-250 // Anschlag
"ServoNickRefrsh", // 36
"LoopGasLimit ", // 37
"LoopThreshold ", // 38 Wert: 0-250 Schwelle für Stickausschlag
"LoopHysterese ", // 39
"AchsKopplung ", // 40
"AchsGegenKoppl.", // 41
"WinklUmschlNick", // 42
"WinklUmschlRoll", // 43
"GyroAccAbgleich", // 44 1/k
"Driftkomp ", // 45
"DynamicStabilit", // 47
"UserParam5 ", // 48 zur freien Verwendung
"UserParam6 ", // 49 zur freien Verwendung
"UserParam7 ", // 50 zur freien Verwendung
"UserParam8 ", // 51 zur freien Verwendung
"LoopConfig ", // 52 Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
"ServoNickCompIn" // 53 Wert : 0-250 // Richtung Einfluss Gyro/Servo
// "Name " // 54
};
 
 
// Parameter lesen, editieren und zurückschreiben
 
uint8_t read_parameter (uint8_t number) // Number = Parameter-Set#
{
uint8_t timeout;
timeout = 0;
p_buffer[0] = '#'; // Parameter anfordern
p_buffer[1] = 'a';
p_buffer[2] = 'q';
p_buffer[3] = number;
p_buffer[4] = 0;
p_buffer[5] = 0;
base64_send(6);
 
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1) // Fehler bei der Übertragung?
timeout = 30; // Timeout sofort auf Endwert setzen
timeout ++;
}
while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat
if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0
return 1;
else
return 0;
}
 
void write_parameter(uint8_t number) // Schreibe Parameter-Satz
{
uint8_t i;
if (number <= 5)
{
 
for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben
p_buffer[(70-i)+3] = p_buffer[70-i];
p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter
p_buffer[1] = 'a';
p_buffer[2] = number + 'k'; // Nummer des Parameters
p_buffer[74] = 0;
base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes
}
}
 
void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen)
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
uint8_t i;
i=0;
for (i=0;i<8;i++)
{
if ((1<<i) & data)
feld[i] = 1;
else
feld[i] = 0;
}
}
 
uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
uint8_t i;
uint8_t result;
result = 0;
for (i=0;i<8;i++)
{
if (feld[i] == 1)
result += 1<<i;
}
return result;
}
 
 
 
 
void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um
{ // (schneller/kleiner als printf())
text[0] = data/100;
data -= (text[0] * 100);
text[1] = data/10;
data -= (text[1] *10);
text[2] = data + 0x30;
text[0] += 0x30;
text[1] += 0x30;
 
if (text[0] == 0x30)
{
text[0] = 0x20;
if (text[1] == 0x30)
text[1] = 0x20;
}
text[3] = 0x00;
}
 
uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück
{
uint8_t i;
uint8_t line;
uint8_t text[25];
uint8_t bin[8];
line = 0;
if (number > 1)
{
for (i = 0; i<66; i++)
{
if (pgm_read_byte(p_limits+i*3+2) == number)
{
array[line] = i;
decimal(p_buffer[i],text);
lcd_print_at(0,line,text,0);
lcd_print_atp(5,line,parameter[i],0);
if (line <= 7)
line++;
}
}
}
else
{ // Sonderfälle: Binäre Eingabe
if (number == 1)
{
binary(p_buffer[52],bin); // Loop-Config
text[1] = 0x00;
for (i=0;i<4;i++)
{
text[0] = bin[i] + 0x30;
lcd_print_at(0,i,text,0);
lcd_print_atp(5,i,bin_parameter[i],0);
}
}
if (number == 0)
{
binary(p_buffer[8],bin); // Config
text[1] = 0x00;
for (i=0;i<8;i++)
{
text[0] = bin[i] + 0x30;
lcd_print_at(0,i,text,0);
lcd_print_atp(5,i,bin_parameter[i+4],0);
}
}
 
}
return line;
}
 
void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite
{
uint8_t line;
uint8_t par;
uint8_t min;
uint8_t max;
uint8_t text[10];
uint8_t bin[8];
if (page > 1) // "normale" Parameter-Seiten
{
line = menu_choose(0,lines-1,4);
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
{
par = p_buffer[array[line]];
min = pgm_read_byte(p_limits + par * 3);
max = pgm_read_byte(p_limits + par * 3 + 1);
lcd_print_atp(4,line,PSTR("-"),0);
while (key != key_nokey);
do
{
if (key == key_minus)
{
//if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert
par --;
}
if (key == key_plus)
{
//if (par < max)
par ++;
}
decimal(par,text);
lcd_print_at(0,line,text,0);
timer = 20;
while (timer > 0);
}
while ((key != 0x04) && (key != 0x08));
if (key == 0x08)
p_buffer[array[line]] = par;
}
}
if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen)
{
binary(p_buffer[52],bin);
text[1] = 0x00;
 
line = menu_choose(0,3,4);
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
{
par = bin[line];
lcd_print_atp(4,line,PSTR("-"),0);
do
{
if (key == key_minus)
{
par = 0x00;
}
if (key == key_plus)
{
par = 0x01;
}
text[0] = par+0x30;
lcd_print_at(0,line,text,0);
timer = 20;
while (timer > 0);
}
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
{
bin[line] = par;
p_buffer[52] = bindec(bin);
}
lcd_cls();
decimal(p_buffer[52],text);
lcd_print(text,0);
timer = 200;
while(timer > 0);
}
}
if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen)
{
binary(p_buffer[8],bin);
text[1] = 0x00;
 
line = menu_choose(0,7,4);
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
{
par = bin[line];
lcd_print_atp(4,line,PSTR("-"),0);
do
{
if (key == key_minus)
{
par = 0x00;
}
if (key == key_plus)
{
par = 0x01;
}
text[0] = par+0x30;
lcd_print_at(0,line,text,0);
timer = 20;
while (timer > 0);
}
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
{
bin[line] = par;
p_buffer[8] = bindec(bin);
}
lcd_cls();
decimal(p_buffer[8],text);
lcd_print(text,0);
timer = 200;
while(timer > 0);
}
}
}
 
 
void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü
{
uint8_t page; // 12 Pages
uint8_t text[15];
uint8_t lines;
uint8_t parameter;
lcd_cls();
lcd_printp(PSTR("Lade Parameter\r\n"),0);
lcd_printp(PSTR(" 1:\r\n"),0);
lcd_printp(PSTR(" 2:\r\n"),0);
lcd_printp(PSTR(" 3:\r\n"),0);
lcd_printp(PSTR(" 4:\r\n"),0);
lcd_printp(PSTR(" 5:\r\n"),0);
parameter = menu_choose(1,5,0);
 
page = 2;
if (read_parameter(parameter) == 1)
{
lcd_print_atp(0,6,PSTR("Timeout"),0);
}
else
{
do
{
lcd_cls();
utoa(page,text,10);
lcd_print(text,0);
timer = 50;
while (timer > 0);
lcd_cls();
lines = show_parameter(page);
while (key == key_nokey);
if (key == key_plus)
page++;
if (key == key_minus)
page--;
if (page == 255)
page = 12;
if (page > 12)
page = 0;
if (key == key_enter)
edit_parameter2(page,lines);
}
while (key != key_esc);
lcd_cls();
lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0);
lines = menu_choose(1,2,0);
if (lines == 1 )
{
lcd_printp(PSTR("\r\n--->"),0);
write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert.
lcd_printp(PSTR("\r\nParameter gespeichert"),0);
}
else
{
lcd_printp(PSTR("\r\nNicht gespeichert"),0);
}
}
timer = 100;
while(timer > 0);
 
}
/Transportables_Koptertool/trunk/parameter.d
0,0 → 1,0
parameter.o parameter.d : parameter.c main.h lcd.h rs232.h base64.h parameter.h menu.h
/Transportables_Koptertool/trunk/parameter.h
0,0 → 1,7
#ifndef parameter_h
#define parameter_h
 
void edit_parameter (void);
void decimal (uint8_t data, uint8_t *text);
 
#endif
/Transportables_Koptertool/trunk/parameter.lst
0,0 → 1,1797
1 .file "parameter.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global parameter
19 .section .progmem.data,"a",@progbits
22 parameter:
23 0000 4E69 636B .string "Nick "
23 2020 2020
23 2020 2020
23 2020 2000
24 0010 526F 6C6C .string "Roll "
24 2020 2020
24 2020 2020
24 2020 2000
25 0020 4761 7320 .string "Gas "
25 2020 2020
25 2020 2020
25 2020 2000
26 0030 4769 6572 .string "Gier\t\t\t"
26 0909 0900
27 0038 0000 0000 .skip 8,0
27 0000 0000
28 0040 506F 7469 .string "Poti1\t\t\t"
28 3109 0909
28 00
29 0049 0000 0000 .skip 7,0
29 0000 00
30 0050 506F 7469 .string "Poti2\t\t\t"
30 3209 0909
30 00
31 0059 0000 0000 .skip 7,0
31 0000 00
32 0060 506F 7469 .string "Poti3\t\t\t"
32 3309 0909
32 00
33 0069 0000 0000 .skip 7,0
33 0000 00
34 0070 506F 7469 .string "Poti4\t\t\t"
34 3409 0909
34 00
35 0079 0000 0000 .skip 7,0
35 0000 00
36 0080 436F 6E66 .string "Config\t\t\t"
36 6967 0909
36 0900
37 008a 0000 0000 .skip 6,0
37 0000
38 0090 486F 6568 .string "Hoehe_MinGas "
38 655F 4D69
38 6E47 6173
38 2020 2000
39 00a0 4C75 6674 .string "Luftdruck_D "
39 6472 7563
39 6B5F 4420
39 2020 2000
40 00b0 4D61 7848 .string "MaxHoehe "
40 6F65 6865
40 2020 2020
40 2020 2000
41 00c0 486F 6568 .string "Hoehe_P "
41 655F 5020
41 2020 2020
41 2020 2000
42 00d0 486F 6568 .string "Hoehe_Verstaerk"
42 655F 5665
42 7273 7461
42 6572 6B00
43 00e0 486F 6568 .string "Hoehe_ACC_Wirk."
43 655F 4143
43 435F 5769
43 726B 2E00
44 00f0 5374 6963 .string "Stick_P "
44 6B5F 5020
44 2020 2020
44 2020 2000
45 0100 5374 6963 .string "Stick_D "
45 6B5F 4420
45 2020 2020
45 2020 2000
46 0110 4769 6572 .string "Gier_P "
46 5F50 2020
46 2020 2020
46 2020 2000
47 0120 4761 735F .string "Gas_Min "
47 4D69 6E20
47 2020 2020
47 2020 2000
48 0130 4761 735F .string "Gas_Max "
48 4D61 7820
48 2020 2020
48 2020 2000
49 0140 4779 726F .string "GyroAccFaktor\t"
49 4163 6346
49 616B 746F
49 7209 00
50 014f 00 .skip 1,0
51 0150 4B6F 6D70 .string "KompassWirkung "
51 6173 7357
51 6972 6B75
51 6E67 2000
52 0160 4779 726F .string "Gyro_P \t\t"
52 5F50 2009
52 0900
53 016a 0000 0000 .skip 6,0
53 0000
54 0170 4779 726F .string "Gyro_I\t\t\t"
54 5F49 0909
54 0900
55 017a 0000 0000 .skip 6,0
55 0000
56 0180 556E 7465 .string "Unterspannung "
56 7273 7061
56 6E6E 756E
56 6720 2000
57 0190 4E6F 7447 .string "NotGas\t\t\t"
57 6173 0909
57 0900
58 019a 0000 0000 .skip 6,0
58 0000
59 01a0 4E6F 7447 .string "NotGasZeit "
59 6173 5A65
59 6974 2020
59 2020 2000
60 01b0 5566 6F41 .string "UfoAusrichtung "
60 7573 7269
60 6368 7475
60 6E67 2000
61 01c0 495F 4661 .string "I_Faktor "
61 6B74 6F72
61 2020 2020
61 2020 2000
62 01d0 5573 6572 .string "UserParam1\t\t"
62 5061 7261
62 6D31 0909
62 00
63 01dd 0000 00 .skip 3,0
64 01e0 5573 6572 .string "UserParam2\t\t"
64 5061 7261
64 6D32 0909
64 00
65 01ed 0000 00 .skip 3,0
66 01f0 5573 6572 .string "UserParam3\t\t"
66 5061 7261
66 6D33 0909
66 00
67 01fd 0000 00 .skip 3,0
68 0200 5573 6572 .string "UserParam4\t\t"
68 5061 7261
68 6D34 0909
68 00
69 020d 0000 00 .skip 3,0
70 0210 5365 7276 .string "ServoNickCtrl\t"
70 6F4E 6963
70 6B43 7472
70 6C09 00
71 021f 00 .skip 1,0
72 0220 5365 7276 .string "ServoNickComp\t"
72 6F4E 6963
72 6B43 6F6D
72 7009 00
73 022f 00 .skip 1,0
74 0230 5365 7276 .string "ServoNickMin\t"
74 6F4E 6963
74 6B4D 696E
74 0900
75 023e 0000 .skip 2,0
76 0240 5365 7276 .string "ServoNickMax\t"
76 6F4E 6963
76 6B4D 6178
76 0900
77 024e 0000 .skip 2,0
78 0250 5365 7276 .string "ServoNickRefrsh"
78 6F4E 6963
78 6B52 6566
78 7273 6800
79 0260 4C6F 6F70 .string "LoopGasLimit\t"
79 4761 734C
79 696D 6974
79 0900
80 026e 0000 .skip 2,0
81 0270 4C6F 6F70 .string "LoopThreshold\t"
81 5468 7265
81 7368 6F6C
81 6409 00
82 027f 00 .skip 1,0
83 0280 4C6F 6F70 .string "LoopHysterese\t"
83 4879 7374
83 6572 6573
83 6509 00
84 028f 00 .skip 1,0
85 0290 4163 6873 .string "AchsKopplung\t"
85 4B6F 7070
85 6C75 6E67
85 0900
86 029e 0000 .skip 2,0
87 02a0 4163 6873 .string "AchsGegenKoppl."
87 4765 6765
87 6E4B 6F70
87 706C 2E00
88 02b0 5769 6E6B .string "WinklUmschlNick"
88 6C55 6D73
88 6368 6C4E
88 6963 6B00
89 02c0 5769 6E6B .string "WinklUmschlRoll"
89 6C55 6D73
89 6368 6C52
89 6F6C 6C00
90 02d0 4779 726F .string "GyroAccAbgleich"
90 4163 6341
90 6267 6C65
90 6963 6800
91 02e0 4472 6966 .string "Driftkomp\t\t"
91 746B 6F6D
91 7009 0900
92 02ec 0000 0000 .skip 4,0
93 02f0 4479 6E61 .string "DynamicStabilit"
93 6D69 6353
93 7461 6269
93 6C69 7400
94 0300 5573 6572 .string "UserParam5\t\t"
94 5061 7261
94 6D35 0909
94 00
95 030d 0000 00 .skip 3,0
96 0310 5573 6572 .string "UserParam6\t\t"
96 5061 7261
96 6D36 0909
96 00
97 031d 0000 00 .skip 3,0
98 0320 5573 6572 .string "UserParam7\t\t"
98 5061 7261
98 6D37 0909
98 00
99 032d 0000 00 .skip 3,0
100 0330 5573 6572 .string "UserParam8\t\t"
100 5061 7261
100 6D38 0909
100 00
101 033d 0000 00 .skip 3,0
102 0340 4C6F 6F70 .string "LoopConfig\t\t"
102 436F 6E66
102 6967 0909
102 00
103 034d 0000 00 .skip 3,0
104 0350 5365 7276 .string "ServoNickCompIn"
104 6F4E 6963
104 6B43 6F6D
104 7049 6E00
105 .global bin_parameter
108 bin_parameter:
109 0360 4C6F 6F70 .string "Loop up "
109 2075 7020
109 2020 2020
109 2020 2000
110 0370 4C6F 6F70 .string "Loop down\t "
110 2064 6F77
110 6E09 2020
110 2020 00
111 037f 00 .skip 1,0
112 0380 4C6F 6F70 .string "Loop left "
112 206C 6566
112 7420 2020
112 2020 2000
113 0390 4C6F 6F70 .string "Loop right "
113 2072 6967
113 6874 2020
113 2020 2000
114 03a0 48F6 6865 .string "H\366henregler "
114 6E72 6567
114 6C65 7220
114 2020 2000
115 03b0 48F6 6865 .string "H\366henschalter "
115 6E73 6368
115 616C 7465
115 7220 2000
116 03c0 4865 6164 .string "Headhold\t\t"
116 686F 6C64
116 0909 00
117 03cb 0000 0000 .skip 5,0
117 00
118 03d0 4B6F 6D70 .string "Kompass\t\t"
118 6173 7309
118 0900
119 03da 0000 0000 .skip 6,0
119 0000
120 03e0 4B6F 6D70 .string "KompassFix\t\t"
120 6173 7346
120 6978 0909
120 00
121 03ed 0000 00 .skip 3,0
122 03f0 4750 5309 .string "GPS\t\t\t"
122 0909 00
123 03f7 0000 0000 .skip 9,0
123 0000 0000
123 00
124 0400 4163 6873 .string "Achsenkopplung "
124 656E 6B6F
124 7070 6C75
124 6E67 2000
125 0410 4472 6568 .string "Drehrate\t\t"
125 7261 7465
125 0909 00
126 041b 0000 0000 .skip 5,0
126 00
127 .global p_limits
130 p_limits:
131 0420 01 .byte 1
132 0421 08 .byte 8
133 0422 02 .byte 2
134 0423 01 .byte 1
135 0424 08 .byte 8
136 0425 02 .byte 2
137 0426 01 .byte 1
138 0427 08 .byte 8
139 0428 02 .byte 2
140 0429 01 .byte 1
141 042a 08 .byte 8
142 042b 02 .byte 2
143 042c 01 .byte 1
144 042d 08 .byte 8
145 042e 02 .byte 2
146 042f 01 .byte 1
147 0430 08 .byte 8
148 0431 02 .byte 2
149 0432 01 .byte 1
150 0433 08 .byte 8
151 0434 02 .byte 2
152 0435 01 .byte 1
153 0436 08 .byte 8
154 0437 02 .byte 2
155 0438 00 .byte 0
156 0439 00 .byte 0
157 043a 00 .byte 0
158 043b 00 .byte 0
159 043c FF .byte -1
160 043d 04 .byte 4
161 043e 00 .byte 0
162 043f FF .byte -1
163 0440 04 .byte 4
164 0441 00 .byte 0
165 0442 FF .byte -1
166 0443 04 .byte 4
167 0444 00 .byte 0
168 0445 FF .byte -1
169 0446 04 .byte 4
170 0447 00 .byte 0
171 0448 32 .byte 50
172 0449 04 .byte 4
173 044a 00 .byte 0
174 044b FF .byte -1
175 044c 04 .byte 4
176 044d 00 .byte 0
177 044e 06 .byte 6
178 044f 03 .byte 3
179 0450 00 .byte 0
180 0451 40 .byte 64
181 0452 03 .byte 3
182 0453 00 .byte 0
183 0454 14 .byte 20
184 0455 03 .byte 3
185 0456 00 .byte 0
186 0457 20 .byte 32
187 0458 08 .byte 8
188 0459 21 .byte 33
189 045a FA .byte -6
190 045b 08 .byte 8
191 045c 00 .byte 0
192 045d 32 .byte 50
193 045e 08 .byte 8
194 045f 00 .byte 0
195 0460 FF .byte -1
196 0461 08 .byte 8
197 0462 00 .byte 0
198 0463 00 .byte 0
199 0464 05 .byte 5
200 0465 00 .byte 0
201 0466 00 .byte 0
202 0467 05 .byte 5
203 0468 00 .byte 0
204 0469 FA .byte -6
205 046a 08 .byte 8
206 046b 00 .byte 0
207 046c FA .byte -6
208 046d 08 .byte 8
209 046e 00 .byte 0
210 046f FA .byte -6
211 0470 08 .byte 8
212 0471 00 .byte 0
213 0472 01 .byte 1
214 0473 00 .byte 0
215 0474 00 .byte 0
216 0475 FF .byte -1
217 0476 05 .byte 5
218 0477 00 .byte 0
219 0478 FF .byte -1
220 0479 09 .byte 9
221 047a 00 .byte 0
222 047b FF .byte -1
223 047c 09 .byte 9
224 047d 00 .byte 0
225 047e FF .byte -1
226 047f 09 .byte 9
227 0480 00 .byte 0
228 0481 FF .byte -1
229 0482 09 .byte 9
230 0483 00 .byte 0
231 0484 FF .byte -1
232 0485 07 .byte 7
233 0486 00 .byte 0
234 0487 FA .byte -6
235 0488 07 .byte 7
236 0489 00 .byte 0
237 048a FA .byte -6
238 048b 07 .byte 7
239 048c 00 .byte 0
240 048d FA .byte -6
241 048e 07 .byte 7
242 048f 00 .byte 0
243 0490 19 .byte 25
244 0491 07 .byte 7
245 0492 00 .byte 0
246 0493 FF .byte -1
247 0494 06 .byte 6
248 0495 00 .byte 0
249 0496 FA .byte -6
250 0497 06 .byte 6
251 0498 00 .byte 0
252 0499 FA .byte -6
253 049a 06 .byte 6
254 049b 00 .byte 0
255 049c FF .byte -1
256 049d 0A .byte 10
257 049e 00 .byte 0
258 049f FF .byte -1
259 04a0 0A .byte 10
260 04a1 00 .byte 0
261 04a2 FA .byte -6
262 04a3 06 .byte 6
263 04a4 00 .byte 0
264 04a5 FA .byte -6
265 04a6 06 .byte 6
266 04a7 00 .byte 0
267 04a8 FA .byte -6
268 04a9 05 .byte 5
269 04aa 00 .byte 0
270 04ab FA .byte -6
271 04ac 05 .byte 5
272 04ad 00 .byte 0
273 04ae FF .byte -1
274 04af 05 .byte 5
275 04b0 00 .byte 0
276 04b1 FF .byte -1
277 04b2 09 .byte 9
278 04b3 00 .byte 0
279 04b4 FF .byte -1
280 04b5 09 .byte 9
281 04b6 00 .byte 0
282 04b7 FF .byte -1
283 04b8 09 .byte 9
284 04b9 00 .byte 0
285 04ba FF .byte -1
286 04bb 09 .byte 9
287 04bc 00 .byte 0
288 04bd 00 .byte 0
289 04be 01 .byte 1
290 04bf 00 .byte 0
291 04c0 01 .byte 1
292 04c1 07 .byte 7
293 04c2 0000 0000 .skip 37,0
293 0000 0000
293 0000 0000
293 0000 0000
293 0000 0000
294 .global p_menu_number
297 p_menu_number:
298 04e7 02 .byte 2
299 04e8 02 .byte 2
300 04e9 02 .byte 2
301 04ea 02 .byte 2
302 04eb 02 .byte 2
303 04ec 02 .byte 2
304 04ed 02 .byte 2
305 04ee 02 .byte 2
306 04ef 00 .byte 0
307 04f0 04 .byte 4
308 04f1 04 .byte 4
309 04f2 04 .byte 4
310 04f3 04 .byte 4
311 04f4 04 .byte 4
312 04f5 04 .byte 4
313 04f6 03 .byte 3
314 04f7 03 .byte 3
315 04f8 03 .byte 3
316 04f9 08 .byte 8
317 04fa 08 .byte 8
318 04fb 08 .byte 8
319 04fc 08 .byte 8
320 04fd 05 .byte 5
321 04fe 05 .byte 5
322 04ff 08 .byte 8
323 0500 08 .byte 8
324 0501 08 .byte 8
325 0502 00 .byte 0
326 0503 05 .byte 5
327 0504 09 .byte 9
328 0505 09 .byte 9
329 0506 09 .byte 9
330 0507 09 .byte 9
331 0508 07 .byte 7
332 0509 07 .byte 7
333 050a 07 .byte 7
334 050b 07 .byte 7
335 050c 07 .byte 7
336 050d 07 .byte 7
337 050e 06 .byte 6
338 050f 06 .byte 6
339 0510 06 .byte 6
340 0511 0A .byte 10
341 0512 0A .byte 10
342 0513 06 .byte 6
343 0514 06 .byte 6
344 0515 05 .byte 5
345 0516 05 .byte 5
346 0517 05 .byte 5
347 0518 09 .byte 9
348 0519 09 .byte 9
349 051a 09 .byte 9
350 051b 09 .byte 9
351 051c 00 .byte 0
352 051d 07 .byte 7
353 051e 0B .byte 11
354 051f 0B .byte 11
355 0520 0B .byte 11
356 0521 0B .byte 11
357 0522 0C .byte 12
358 0523 0C .byte 12
359 0524 0C .byte 12
360 0525 0C .byte 12
361 0526 0C .byte 12
362 0527 0C .byte 12
363 0528 0C .byte 12
364 0529 0C .byte 12
365 .global p_menus
368 p_menus:
369 052a 436F 6E66 .string "Config "
369 6967 2020
369 2020 00
370 0535 4368 616E .string "Channels "
370 6E65 6C73
370 2020 00
371 0540 5374 6963 .string "Stick "
371 6B20 2020
371 2020 00
372 054b 486F 6568 .string "Hoehe "
372 6520 2020
372 2020 00
373 0556 4779 726F .string "Gyro "
373 2020 2020
373 2020 00
374 0561 4C6F 6F70 .string "Looping "
374 696E 6720
374 2020 00
375 056c 4361 6D65 .string "Camera "
375 7261 2020
375 2020 00
376 0577 536F 6E73 .string "Sonstiges "
376 7469 6765
376 7320 00
377 0582 5573 6572 .string "User "
377 2020 2020
377 2020 00
378 058d 436F 7570 .string "Coupling "
378 6C69 6E67
378 2020 00
379 0598 436F 6E66 .string "Config(2) "
379 6967 2832
379 2920 00
380 05a3 4C6F 6F70 .string "Loopingset"
380 696E 6773
380 6574 00
381 .text
382 .global read_parameter
384 read_parameter:
385 .LFB4:
386 .LM1:
387 /* prologue: frame size=0 */
388 0000 CF93 push r28
389 /* prologue end (size=1) */
390 .LM2:
391 0002 C0E0 ldi r28,lo8(0)
392 .LM3:
393 0004 93E2 ldi r25,lo8(35)
394 0006 9093 0000 sts p_buffer,r25
395 .LM4:
396 000a 91E6 ldi r25,lo8(97)
397 000c 9093 0000 sts p_buffer+1,r25
398 .LM5:
399 0010 91E7 ldi r25,lo8(113)
400 0012 9093 0000 sts p_buffer+2,r25
401 .LM6:
402 0016 8093 0000 sts p_buffer+3,r24
403 .LM7:
404 001a C093 0000 sts p_buffer+4,r28
405 .LM8:
406 001e C093 0000 sts p_buffer+5,r28
407 .LM9:
408 0022 86E0 ldi r24,lo8(6)
409 0024 0E94 0000 call base64_send
410 .L2:
411 .LM10:
412 0028 0E94 0000 call get_message
413 002c 8130 cpi r24,lo8(1)
414 002e 09F4 brne .L5
415 .LM11:
416 0030 CEE1 ldi r28,lo8(30)
417 .L5:
418 .LM12:
419 0032 CF5F subi r28,lo8(-(1))
420 .LM13:
421 0034 8091 0000 lds r24,r_buffer+1
422 0038 8C54 subi r24,lo8(-(-76))
423 003a 8530 cpi r24,lo8(5)
424 003c 10F0 brlo .L3
425 003e CE31 cpi r28,lo8(30)
426 0040 98F3 brlo .L2
427 .L3:
428 .LM14:
429 0042 CE31 cpi r28,lo8(30)
430 0044 18F0 brlo .L6
431 .LM15:
432 0046 81E0 ldi r24,lo8(1)
433 0048 90E0 ldi r25,hi8(1)
434 004a 02C0 rjmp .L1
435 .L6:
436 .LM16:
437 004c 80E0 ldi r24,lo8(0)
438 004e 90E0 ldi r25,hi8(0)
439 .L1:
440 /* epilogue: frame size=0 */
441 0050 CF91 pop r28
442 0052 0895 ret
443 /* epilogue end (size=2) */
444 /* function read_parameter size 42 (39) */
445 .LFE4:
447 .global write_parameter
449 write_parameter:
450 .LFB5:
451 .LM17:
452 /* prologue: frame size=0 */
453 /* prologue end (size=0) */
454 0054 982F mov r25,r24
455 .LM18:
456 0056 8630 cpi r24,lo8(6)
457 0058 B8F4 brsh .L8
458 005a E0E0 ldi r30,lo8(p_buffer+70)
459 005c F0E0 ldi r31,hi8(p_buffer+70)
460 005e 26E4 ldi r18,lo8(70)
461 .L13:
462 .LM19:
463 0060 8081 ld r24,Z
464 0062 8383 std Z+3,r24
465 .LM20:
466 0064 2150 subi r18,lo8(-(-1))
467 0066 3197 sbiw r30,1
468 0068 27FF sbrs r18,7
469 006a FACF rjmp .L13
470 .LM21:
471 006c 83E2 ldi r24,lo8(35)
472 006e 8093 0000 sts p_buffer,r24
473 .LM22:
474 0072 81E6 ldi r24,lo8(97)
475 0074 8093 0000 sts p_buffer+1,r24
476 .LM23:
477 0078 9559 subi r25,lo8(-(107))
478 007a 9093 0000 sts p_buffer+2,r25
479 .LM24:
480 007e 1092 0000 sts p_buffer+74,__zero_reg__
481 .LM25:
482 0082 8BE4 ldi r24,lo8(75)
483 0084 0E94 0000 call base64_send
484 .L8:
485 0088 0895 ret
486 /* epilogue: frame size=0 */
487 /* epilogue: noreturn */
488 /* epilogue end (size=0) */
489 /* function write_parameter size 27 (27) */
490 .LFE5:
492 .global binary
494 binary:
495 .LFB6:
496 .LM26:
497 /* prologue: frame size=0 */
498 /* prologue end (size=0) */
499 008a 9B01 movw r18,r22
500 008c 682F mov r22,r24
501 008e 7727 clr r23
502 0090 51E0 ldi r21,lo8(1)
503 0092 F901 movw r30,r18
504 0094 20E0 ldi r18,lo8(0)
505 0096 30E0 ldi r19,hi8(0)
506 0098 47E0 ldi r20,lo8(7)
507 .L22:
508 .LM27:
509 009a CB01 movw r24,r22
510 009c 022E mov r0,r18
511 009e 02C0 rjmp 2f
512 00a0 9595 1: asr r25
513 00a2 8795 ror r24
514 00a4 0A94 2: dec r0
515 00a6 E2F7 brpl 1b
516 00a8 80FF sbrs r24,0
517 00aa 02C0 rjmp .L20
518 .LM28:
519 00ac 5083 st Z,r21
520 00ae 01C0 rjmp .L19
521 .L20:
522 .LM29:
523 00b0 1082 st Z,__zero_reg__
524 .L19:
525 .LM30:
526 00b2 4150 subi r20,lo8(-(-1))
527 00b4 2F5F subi r18,lo8(-(1))
528 00b6 3F4F sbci r19,hi8(-(1))
529 00b8 3196 adiw r30,1
530 00ba 47FF sbrs r20,7
531 00bc EECF rjmp .L22
532 /* epilogue: frame size=0 */
533 00be 0895 ret
534 /* epilogue end (size=1) */
535 /* function binary size 27 (26) */
536 .LFE6:
538 .global bindec
540 bindec:
541 .LFB7:
542 .LM31:
543 /* prologue: frame size=0 */
544 /* prologue end (size=0) */
545 .LM32:
546 00c0 50E0 ldi r21,lo8(0)
547 00c2 61E0 ldi r22,lo8(1)
548 00c4 70E0 ldi r23,hi8(1)
549 00c6 FC01 movw r30,r24
550 00c8 20E0 ldi r18,lo8(0)
551 00ca 30E0 ldi r19,hi8(0)
552 00cc 47E0 ldi r20,lo8(7)
553 .L30:
554 .LM33:
555 00ce 8191 ld r24,Z+
556 00d0 8130 cpi r24,lo8(1)
557 00d2 41F4 brne .L28
558 .LM34:
559 00d4 CB01 movw r24,r22
560 00d6 022E mov r0,r18
561 00d8 02C0 rjmp 2f
562 00da 880F 1: lsl r24
563 00dc 991F rol r25
564 00de 0A94 2: dec r0
565 00e0 E2F7 brpl 1b
566 00e2 580F add r21,r24
567 .L28:
568 .LM35:
569 00e4 4150 subi r20,lo8(-(-1))
570 00e6 2F5F subi r18,lo8(-(1))
571 00e8 3F4F sbci r19,hi8(-(1))
572 00ea 47FF sbrs r20,7
573 00ec F0CF rjmp .L30
574 .LM36:
575 00ee 852F mov r24,r21
576 00f0 9927 clr r25
577 /* epilogue: frame size=0 */
578 00f2 0895 ret
579 /* epilogue end (size=1) */
580 /* function bindec size 26 (25) */
581 .LFE7:
583 .global decimal
585 decimal:
586 .LFB8:
587 .LM37:
588 /* prologue: frame size=0 */
589 /* prologue end (size=0) */
590 00f4 282F mov r18,r24
591 00f6 FB01 movw r30,r22
592 .LM38:
593 00f8 34E6 ldi r19,lo8(100)
594 00fa 632F mov r22,r19
595 00fc 0E94 0000 call __udivmodqi4
596 0100 582F mov r21,r24
597 .LM39:
598 0102 839F mul r24,r19
599 0104 C001 movw r24,r0
600 0106 1124 clr r1
601 0108 281B sub r18,r24
602 .LM40:
603 010a 3AE0 ldi r19,lo8(10)
604 010c 822F mov r24,r18
605 010e 632F mov r22,r19
606 0110 0E94 0000 call __udivmodqi4
607 0114 482F mov r20,r24
608 .LM41:
609 0116 839F mul r24,r19
610 0118 C001 movw r24,r0
611 011a 1124 clr r1
612 011c 281B sub r18,r24
613 .LM42:
614 011e 205D subi r18,lo8(-(48))
615 0120 2283 std Z+2,r18
616 .LM43:
617 0122 852F mov r24,r21
618 0124 805D subi r24,lo8(-(48))
619 0126 8083 st Z,r24
620 .LM44:
621 0128 405D subi r20,lo8(-(48))
622 012a 4183 std Z+1,r20
623 .LM45:
624 012c 8033 cpi r24,lo8(48)
625 012e 29F4 brne .L34
626 .LM46:
627 0130 80E2 ldi r24,lo8(32)
628 0132 8083 st Z,r24
629 .LM47:
630 0134 4033 cpi r20,lo8(48)
631 0136 09F4 brne .L34
632 .LM48:
633 0138 8183 std Z+1,r24
634 .L34:
635 .LM49:
636 013a 1382 std Z+3,__zero_reg__
637 /* epilogue: frame size=0 */
638 013c 0895 ret
639 /* epilogue end (size=1) */
640 /* function decimal size 37 (36) */
641 .LFE8:
643 .global show_parameter
645 show_parameter:
646 .LFB9:
647 .LM50:
648 /* prologue: frame size=33 */
649 013e 9F92 push r9
650 0140 AF92 push r10
651 0142 BF92 push r11
652 0144 CF92 push r12
653 0146 DF92 push r13
654 0148 EF92 push r14
655 014a FF92 push r15
656 014c 0F93 push r16
657 014e 1F93 push r17
658 0150 CF93 push r28
659 0152 DF93 push r29
660 0154 CDB7 in r28,__SP_L__
661 0156 DEB7 in r29,__SP_H__
662 0158 A197 sbiw r28,33
663 015a 0FB6 in __tmp_reg__,__SREG__
664 015c F894 cli
665 015e DEBF out __SP_H__,r29
666 0160 0FBE out __SREG__,__tmp_reg__
667 0162 CDBF out __SP_L__,r28
668 /* prologue end (size=19) */
669 0164 082F mov r16,r24
670 .LM51:
671 0166 9924 clr r9
672 .LM52:
673 0168 8230 cpi r24,lo8(2)
674 016a 08F4 brsh .+2
675 016c 3EC0 rjmp .L37
676 .LM53:
677 016e 192D mov r17,r9
678 0170 40E0 ldi r20,lo8(parameter)
679 0172 A42E mov r10,r20
680 0174 40E0 ldi r20,hi8(parameter)
681 0176 B42E mov r11,r20
682 0178 30E0 ldi r19,lo8(p_buffer)
683 017a C32E mov r12,r19
684 017c 30E0 ldi r19,hi8(p_buffer)
685 017e D32E mov r13,r19
686 0180 20E0 ldi r18,lo8(p_limits+2)
687 0182 E22E mov r14,r18
688 0184 20E0 ldi r18,hi8(p_limits+2)
689 0186 F22E mov r15,r18
690 .L43:
691 .LBB2:
692 .LM54:
693 0188 F701 movw r30,r14
694 /* #APP */
695 018a 8491 lpm r24, Z
696
697 /* #NOAPP */
698 .LBE2:
699 018c 8017 cp r24,r16
700 018e F1F4 brne .L40
701 .LM55:
702 0190 E92D mov r30,r9
703 0192 FF27 clr r31
704 0194 E050 subi r30,lo8(-(array))
705 0196 F040 sbci r31,hi8(-(array))
706 0198 1083 st Z,r17
707 .LM56:
708 019a BE01 movw r22,r28
709 019c 6F5F subi r22,lo8(-(1))
710 019e 7F4F sbci r23,hi8(-(1))
711 01a0 F601 movw r30,r12
712 01a2 8081 ld r24,Z
713 01a4 0E94 0000 call decimal
714 .LM57:
715 01a8 20E0 ldi r18,lo8(0)
716 01aa AE01 movw r20,r28
717 01ac 4F5F subi r20,lo8(-(1))
718 01ae 5F4F sbci r21,hi8(-(1))
719 01b0 692D mov r22,r9
720 01b2 822F mov r24,r18
721 01b4 0E94 0000 call lcd_print_at
722 .LM58:
723 01b8 20E0 ldi r18,lo8(0)
724 01ba A501 movw r20,r10
725 01bc 692D mov r22,r9
726 01be 85E0 ldi r24,lo8(5)
727 01c0 0E94 0000 call lcd_print_atp
728 .LM59:
729 01c4 F7E0 ldi r31,lo8(7)
730 01c6 F915 cp r31,r9
731 01c8 08F0 brlo .L40
732 .LM60:
733 01ca 9394 inc r9
734 .L40:
735 .LM61:
736 01cc 1F5F subi r17,lo8(-(1))
737 01ce 83E0 ldi r24,lo8(3)
738 01d0 90E0 ldi r25,hi8(3)
739 01d2 E80E add r14,r24
740 01d4 F91E adc r15,r25
741 01d6 0894 sec
742 01d8 C11C adc r12,__zero_reg__
743 01da D11C adc r13,__zero_reg__
744 01dc E0E1 ldi r30,lo8(16)
745 01de F0E0 ldi r31,hi8(16)
746 01e0 AE0E add r10,r30
747 01e2 BF1E adc r11,r31
748 01e4 1234 cpi r17,lo8(66)
749 01e6 80F2 brlo .L43
750 01e8 5FC0 rjmp .L44
751 .L37:
752 .LM62:
753 01ea 8130 cpi r24,lo8(1)
754 01ec 71F5 brne .L45
755 .LM63:
756 01ee BE01 movw r22,r28
757 01f0 665E subi r22,lo8(-(26))
758 01f2 7F4F sbci r23,hi8(-(26))
759 01f4 8091 0000 lds r24,p_buffer+52
760 01f8 0E94 0000 call binary
761 .LM64:
762 01fc 9A82 std Y+2,r9
763 .LM65:
764 01fe 192D mov r17,r9
765 0200 90E0 ldi r25,lo8(bin_parameter)
766 0202 C92E mov r12,r25
767 0204 90E0 ldi r25,hi8(bin_parameter)
768 0206 D92E mov r13,r25
769 0208 EE24 clr r14
770 020a FF24 clr r15
771 .L49:
772 .LM66:
773 020c CE01 movw r24,r28
774 020e 0196 adiw r24,1
775 0210 F701 movw r30,r14
776 0212 E80F add r30,r24
777 0214 F91F adc r31,r25
778 0216 218D ldd r18,Z+25
779 0218 205D subi r18,lo8(-(48))
780 021a 2983 std Y+1,r18
781 .LM67:
782 021c 20E0 ldi r18,lo8(0)
783 021e AC01 movw r20,r24
784 0220 612F mov r22,r17
785 0222 822F mov r24,r18
786 0224 0E94 0000 call lcd_print_at
787 .LM68:
788 0228 20E0 ldi r18,lo8(0)
789 022a A601 movw r20,r12
790 022c 612F mov r22,r17
791 022e 85E0 ldi r24,lo8(5)
792 0230 0E94 0000 call lcd_print_atp
793 .LM69:
794 0234 1F5F subi r17,lo8(-(1))
795 0236 0894 sec
796 0238 E11C adc r14,__zero_reg__
797 023a F11C adc r15,__zero_reg__
798 023c 80E1 ldi r24,lo8(16)
799 023e 90E0 ldi r25,hi8(16)
800 0240 C80E add r12,r24
801 0242 D91E adc r13,r25
802 0244 1430 cpi r17,lo8(4)
803 0246 10F3 brlo .L49
804 0248 2FC0 rjmp .L44
805 .L45:
806 .LM70:
807 024a 8823 tst r24
808 024c 69F5 brne .L44
809 .LM71:
810 024e BE01 movw r22,r28
811 0250 665E subi r22,lo8(-(26))
812 0252 7F4F sbci r23,hi8(-(26))
813 0254 8091 0000 lds r24,p_buffer+8
814 0258 0E94 0000 call binary
815 .LM72:
816 025c 9A82 std Y+2,r9
817 .LM73:
818 025e 192D mov r17,r9
819 0260 80E0 ldi r24,lo8(bin_parameter+64)
820 0262 C82E mov r12,r24
821 0264 80E0 ldi r24,hi8(bin_parameter+64)
822 0266 D82E mov r13,r24
823 0268 EE24 clr r14
824 026a FF24 clr r15
825 .L54:
826 .LM74:
827 026c CE01 movw r24,r28
828 026e 0196 adiw r24,1
829 0270 F701 movw r30,r14
830 0272 E80F add r30,r24
831 0274 F91F adc r31,r25
832 0276 218D ldd r18,Z+25
833 0278 205D subi r18,lo8(-(48))
834 027a 2983 std Y+1,r18
835 .LM75:
836 027c 20E0 ldi r18,lo8(0)
837 027e AC01 movw r20,r24
838 0280 612F mov r22,r17
839 0282 822F mov r24,r18
840 0284 0E94 0000 call lcd_print_at
841 .LM76:
842 0288 20E0 ldi r18,lo8(0)
843 028a A601 movw r20,r12
844 028c 612F mov r22,r17
845 028e 85E0 ldi r24,lo8(5)
846 0290 0E94 0000 call lcd_print_atp
847 .LM77:
848 0294 1F5F subi r17,lo8(-(1))
849 0296 0894 sec
850 0298 E11C adc r14,__zero_reg__
851 029a F11C adc r15,__zero_reg__
852 029c E0E1 ldi r30,lo8(16)
853 029e F0E0 ldi r31,hi8(16)
854 02a0 CE0E add r12,r30
855 02a2 DF1E adc r13,r31
856 02a4 1830 cpi r17,lo8(8)
857 02a6 10F3 brlo .L54
858 .L44:
859 .LM78:
860 02a8 892D mov r24,r9
861 02aa 9927 clr r25
862 /* epilogue: frame size=33 */
863 02ac A196 adiw r28,33
864 02ae 0FB6 in __tmp_reg__,__SREG__
865 02b0 F894 cli
866 02b2 DEBF out __SP_H__,r29
867 02b4 0FBE out __SREG__,__tmp_reg__
868 02b6 CDBF out __SP_L__,r28
869 02b8 DF91 pop r29
870 02ba CF91 pop r28
871 02bc 1F91 pop r17
872 02be 0F91 pop r16
873 02c0 FF90 pop r15
874 02c2 EF90 pop r14
875 02c4 DF90 pop r13
876 02c6 CF90 pop r12
877 02c8 BF90 pop r11
878 02ca AF90 pop r10
879 02cc 9F90 pop r9
880 02ce 0895 ret
881 /* epilogue end (size=18) */
882 /* function show_parameter size 204 (167) */
883 .LFE9:
885 .section .progmem.data
888 __c.11:
889 05ae 2D00 .string "-"
892 __c.12:
893 05b0 2D00 .string "-"
896 __c.13:
897 05b2 2D00 .string "-"
898 .text
899 .global edit_parameter2
901 edit_parameter2:
902 .LFB10:
903 .LM79:
904 /* prologue: frame size=18 */
905 02d0 8F92 push r8
906 02d2 9F92 push r9
907 02d4 AF92 push r10
908 02d6 BF92 push r11
909 02d8 DF92 push r13
910 02da EF92 push r14
911 02dc FF92 push r15
912 02de 0F93 push r16
913 02e0 1F93 push r17
914 02e2 CF93 push r28
915 02e4 DF93 push r29
916 02e6 CDB7 in r28,__SP_L__
917 02e8 DEB7 in r29,__SP_H__
918 02ea 6297 sbiw r28,18
919 02ec 0FB6 in __tmp_reg__,__SREG__
920 02ee F894 cli
921 02f0 DEBF out __SP_H__,r29
922 02f2 0FBE out __SREG__,__tmp_reg__
923 02f4 CDBF out __SP_L__,r28
924 /* prologue end (size=19) */
925 02f6 D82E mov r13,r24
926 .LM80:
927 02f8 81E0 ldi r24,lo8(1)
928 02fa 8D15 cp r24,r13
929 02fc 08F0 brlo .+2
930 02fe 55C0 rjmp .L60
931 .LM81:
932 0300 6150 subi r22,lo8(-(-1))
933 0302 44E0 ldi r20,lo8(4)
934 0304 80E0 ldi r24,lo8(0)
935 0306 0E94 0000 call menu_choose
936 030a 082F mov r16,r24
937 .LM82:
938 030c 8F3F cpi r24,lo8(-1)
939 030e 09F4 brne .+2
940 0310 4CC0 rjmp .L60
941 .LM83:
942 0312 E82E mov r14,r24
943 0314 FF24 clr r15
944 0316 F701 movw r30,r14
945 0318 E050 subi r30,lo8(-(array))
946 031a F040 sbci r31,hi8(-(array))
947 031c 8081 ld r24,Z
948 031e E82F mov r30,r24
949 0320 FF27 clr r31
950 0322 E050 subi r30,lo8(-(p_buffer))
951 0324 F040 sbci r31,hi8(-(p_buffer))
952 0326 1081 ld r17,Z
953 .LM84:
954 0328 20E0 ldi r18,lo8(0)
955 032a 40E0 ldi r20,lo8(__c.11)
956 032c 50E0 ldi r21,hi8(__c.11)
957 032e 602F mov r22,r16
958 0330 84E0 ldi r24,lo8(4)
959 0332 0E94 0000 call lcd_print_atp
960 .L62:
961 .LM85:
962 0336 8091 0000 lds r24,key
963 033a 8823 tst r24
964 033c E1F7 brne .L62
965 .L65:
966 .LM86:
967 033e 8091 0000 lds r24,key
968 0342 8130 cpi r24,lo8(1)
969 0344 09F4 brne .L68
970 .LM87:
971 0346 1150 subi r17,lo8(-(-1))
972 .L68:
973 .LM88:
974 0348 8091 0000 lds r24,key
975 034c 8230 cpi r24,lo8(2)
976 034e 09F4 brne .L69
977 .LM89:
978 0350 1F5F subi r17,lo8(-(1))
979 .L69:
980 .LM90:
981 0352 BE01 movw r22,r28
982 0354 6F5F subi r22,lo8(-(1))
983 0356 7F4F sbci r23,hi8(-(1))
984 0358 812F mov r24,r17
985 035a 0E94 0000 call decimal
986 .LM91:
987 035e 20E0 ldi r18,lo8(0)
988 0360 AE01 movw r20,r28
989 0362 4F5F subi r20,lo8(-(1))
990 0364 5F4F sbci r21,hi8(-(1))
991 0366 602F mov r22,r16
992 0368 822F mov r24,r18
993 036a 0E94 0000 call lcd_print_at
994 .LM92:
995 036e 84E1 ldi r24,lo8(20)
996 0370 8093 0000 sts timer,r24
997 .L70:
998 .LM93:
999 0374 8091 0000 lds r24,timer
1000 0378 8823 tst r24
1001 037a E1F7 brne .L70
1002 .LM94:
1003 037c 8091 0000 lds r24,key
1004 0380 8430 cpi r24,lo8(4)
1005 0382 21F0 breq .L66
1006 0384 8091 0000 lds r24,key
1007 0388 8830 cpi r24,lo8(8)
1008 038a C9F6 brne .L65
1009 .L66:
1010 .LM95:
1011 038c 8091 0000 lds r24,key
1012 0390 8830 cpi r24,lo8(8)
1013 0392 59F4 brne .L60
1014 .LM96:
1015 0394 E0E0 ldi r30,lo8(array)
1016 0396 F0E0 ldi r31,hi8(array)
1017 0398 EE0E add r14,r30
1018 039a FF1E adc r15,r31
1019 039c F701 movw r30,r14
1020 039e 8081 ld r24,Z
1021 03a0 E82F mov r30,r24
1022 03a2 FF27 clr r31
1023 03a4 E050 subi r30,lo8(-(p_buffer))
1024 03a6 F040 sbci r31,hi8(-(p_buffer))
1025 03a8 1083 st Z,r17
1026 .L60:
1027 .LM97:
1028 03aa F1E0 ldi r31,lo8(1)
1029 03ac DF16 cp r13,r31
1030 03ae 09F0 breq .+2
1031 03b0 6CC0 rjmp .L74
1032 .LM98:
1033 03b2 6BE0 ldi r22,lo8(11)
1034 03b4 862E mov r8,r22
1035 03b6 912C mov r9,__zero_reg__
1036 03b8 8C0E add r8,r28
1037 03ba 9D1E adc r9,r29
1038 03bc B401 movw r22,r8
1039 03be 8091 0000 lds r24,p_buffer+52
1040 03c2 0E94 0000 call binary
1041 .LM99:
1042 03c6 1A82 std Y+2,__zero_reg__
1043 .LM100:
1044 03c8 44E0 ldi r20,lo8(4)
1045 03ca 63E0 ldi r22,lo8(3)
1046 03cc 8A81 ldd r24,Y+2
1047 03ce 0E94 0000 call menu_choose
1048 03d2 082F mov r16,r24
1049 .LM101:
1050 03d4 8F3F cpi r24,lo8(-1)
1051 03d6 09F4 brne .+2
1052 03d8 C6C0 rjmp .L59
1053 .LM102:
1054 03da E82E mov r14,r24
1055 03dc FF24 clr r15
1056 03de 5E01 movw r10,r28
1057 03e0 0894 sec
1058 03e2 A11C adc r10,__zero_reg__
1059 03e4 B11C adc r11,__zero_reg__
1060 03e6 F701 movw r30,r14
1061 03e8 EA0D add r30,r10
1062 03ea FB1D adc r31,r11
1063 03ec 1285 ldd r17,Z+10
1064 .LM103:
1065 03ee 20E0 ldi r18,lo8(0)
1066 03f0 40E0 ldi r20,lo8(__c.12)
1067 03f2 50E0 ldi r21,hi8(__c.12)
1068 03f4 682F mov r22,r24
1069 03f6 84E0 ldi r24,lo8(4)
1070 03f8 0E94 0000 call lcd_print_atp
1071 .L76:
1072 .LM104:
1073 03fc 8091 0000 lds r24,key
1074 0400 8130 cpi r24,lo8(1)
1075 0402 09F4 brne .L79
1076 .LM105:
1077 0404 10E0 ldi r17,lo8(0)
1078 .L79:
1079 .LM106:
1080 0406 8091 0000 lds r24,key
1081 040a 8230 cpi r24,lo8(2)
1082 040c 09F4 brne .L80
1083 .LM107:
1084 040e 11E0 ldi r17,lo8(1)
1085 .L80:
1086 .LM108:
1087 0410 105D subi r17,lo8(-(48))
1088 0412 1983 std Y+1,r17
1089 0414 1053 subi r17,lo8(-(-48))
1090 .LM109:
1091 0416 20E0 ldi r18,lo8(0)
1092 0418 AE01 movw r20,r28
1093 041a 4F5F subi r20,lo8(-(1))
1094 041c 5F4F sbci r21,hi8(-(1))
1095 041e 602F mov r22,r16
1096 0420 822F mov r24,r18
1097 0422 0E94 0000 call lcd_print_at
1098 .LM110:
1099 0426 84E1 ldi r24,lo8(20)
1100 0428 8093 0000 sts timer,r24
1101 .L81:
1102 .LM111:
1103 042c D090 0000 lds r13,timer
1104 0430 DD20 tst r13
1105 0432 E1F7 brne .L81
1106 .LM112:
1107 0434 8091 0000 lds r24,key
1108 0438 8830 cpi r24,lo8(8)
1109 043a 21F0 breq .L77
1110 043c 8091 0000 lds r24,key
1111 0440 8430 cpi r24,lo8(4)
1112 0442 E1F6 brne .L76
1113 .L77:
1114 .LM113:
1115 0444 8091 0000 lds r24,key
1116 0448 8830 cpi r24,lo8(8)
1117 044a 49F4 brne .L84
1118 .LM114:
1119 044c EA0C add r14,r10
1120 044e FB1C adc r15,r11
1121 0450 F701 movw r30,r14
1122 0452 1287 std Z+10,r17
1123 .LM115:
1124 0454 C401 movw r24,r8
1125 0456 0E94 0000 call bindec
1126 045a 8093 0000 sts p_buffer+52,r24
1127 .L84:
1128 .LM116:
1129 045e 0E94 0000 call lcd_cls
1130 .LM117:
1131 0462 BE01 movw r22,r28
1132 0464 6F5F subi r22,lo8(-(1))
1133 0466 7F4F sbci r23,hi8(-(1))
1134 0468 8091 0000 lds r24,p_buffer+52
1135 046c 0E94 0000 call decimal
1136 .LM118:
1137 0470 6D2D mov r22,r13
1138 0472 CE01 movw r24,r28
1139 0474 0196 adiw r24,1
1140 0476 0E94 0000 call lcd_print
1141 .LM119:
1142 047a 88EC ldi r24,lo8(-56)
1143 047c 8093 0000 sts timer,r24
1144 .L85:
1145 .LM120:
1146 0480 8091 0000 lds r24,timer
1147 0484 8823 tst r24
1148 0486 E1F7 brne .L85
1149 0488 6EC0 rjmp .L59
1150 .L74:
1151 .LM121:
1152 048a DD20 tst r13
1153 048c 09F0 breq .+2
1154 048e 6BC0 rjmp .L59
1155 .LM122:
1156 0490 5BE0 ldi r21,lo8(11)
1157 0492 852E mov r8,r21
1158 0494 912C mov r9,__zero_reg__
1159 0496 8C0E add r8,r28
1160 0498 9D1E adc r9,r29
1161 049a B401 movw r22,r8
1162 049c 8091 0000 lds r24,p_buffer+8
1163 04a0 0E94 0000 call binary
1164 .LM123:
1165 04a4 DA82 std Y+2,r13
1166 .LM124:
1167 04a6 44E0 ldi r20,lo8(4)
1168 04a8 67E0 ldi r22,lo8(7)
1169 04aa 8D2D mov r24,r13
1170 04ac 0E94 0000 call menu_choose
1171 04b0 082F mov r16,r24
1172 .LM125:
1173 04b2 8F3F cpi r24,lo8(-1)
1174 04b4 09F4 brne .+2
1175 04b6 57C0 rjmp .L59
1176 .LM126:
1177 04b8 E82E mov r14,r24
1178 04ba FF24 clr r15
1179 04bc 5E01 movw r10,r28
1180 04be 0894 sec
1181 04c0 A11C adc r10,__zero_reg__
1182 04c2 B11C adc r11,__zero_reg__
1183 04c4 F701 movw r30,r14
1184 04c6 EA0D add r30,r10
1185 04c8 FB1D adc r31,r11
1186 04ca 1285 ldd r17,Z+10
1187 .LM127:
1188 04cc 2D2D mov r18,r13
1189 04ce 40E0 ldi r20,lo8(__c.13)
1190 04d0 50E0 ldi r21,hi8(__c.13)
1191 04d2 682F mov r22,r24
1192 04d4 84E0 ldi r24,lo8(4)
1193 04d6 0E94 0000 call lcd_print_atp
1194 .L90:
1195 .LM128:
1196 04da 8091 0000 lds r24,key
1197 04de 8130 cpi r24,lo8(1)
1198 04e0 09F4 brne .L93
1199 .LM129:
1200 04e2 10E0 ldi r17,lo8(0)
1201 .L93:
1202 .LM130:
1203 04e4 8091 0000 lds r24,key
1204 04e8 8230 cpi r24,lo8(2)
1205 04ea 09F4 brne .L94
1206 .LM131:
1207 04ec 11E0 ldi r17,lo8(1)
1208 .L94:
1209 .LM132:
1210 04ee 105D subi r17,lo8(-(48))
1211 04f0 1983 std Y+1,r17
1212 04f2 1053 subi r17,lo8(-(-48))
1213 .LM133:
1214 04f4 20E0 ldi r18,lo8(0)
1215 04f6 AE01 movw r20,r28
1216 04f8 4F5F subi r20,lo8(-(1))
1217 04fa 5F4F sbci r21,hi8(-(1))
1218 04fc 602F mov r22,r16
1219 04fe 822F mov r24,r18
1220 0500 0E94 0000 call lcd_print_at
1221 .LM134:
1222 0504 84E1 ldi r24,lo8(20)
1223 0506 8093 0000 sts timer,r24
1224 .L95:
1225 .LM135:
1226 050a D090 0000 lds r13,timer
1227 050e DD20 tst r13
1228 0510 E1F7 brne .L95
1229 .LM136:
1230 0512 8091 0000 lds r24,key
1231 0516 8830 cpi r24,lo8(8)
1232 0518 21F0 breq .L91
1233 051a 8091 0000 lds r24,key
1234 051e 8430 cpi r24,lo8(4)
1235 0520 E1F6 brne .L90
1236 .L91:
1237 .LM137:
1238 0522 8091 0000 lds r24,key
1239 0526 8830 cpi r24,lo8(8)
1240 0528 49F4 brne .L98
1241 .LM138:
1242 052a EA0C add r14,r10
1243 052c FB1C adc r15,r11
1244 052e F701 movw r30,r14
1245 0530 1287 std Z+10,r17
1246 .LM139:
1247 0532 C401 movw r24,r8
1248 0534 0E94 0000 call bindec
1249 0538 8093 0000 sts p_buffer+8,r24
1250 .L98:
1251 .LM140:
1252 053c 0E94 0000 call lcd_cls
1253 .LM141:
1254 0540 BE01 movw r22,r28
1255 0542 6F5F subi r22,lo8(-(1))
1256 0544 7F4F sbci r23,hi8(-(1))
1257 0546 8091 0000 lds r24,p_buffer+8
1258 054a 0E94 0000 call decimal
1259 .LM142:
1260 054e 6D2D mov r22,r13
1261 0550 CE01 movw r24,r28
1262 0552 0196 adiw r24,1
1263 0554 0E94 0000 call lcd_print
1264 .LM143:
1265 0558 88EC ldi r24,lo8(-56)
1266 055a 8093 0000 sts timer,r24
1267 .L99:
1268 .LM144:
1269 055e 8091 0000 lds r24,timer
1270 0562 8823 tst r24
1271 0564 E1F7 brne .L99
1272 .L59:
1273 /* epilogue: frame size=18 */
1274 0566 6296 adiw r28,18
1275 0568 0FB6 in __tmp_reg__,__SREG__
1276 056a F894 cli
1277 056c DEBF out __SP_H__,r29
1278 056e 0FBE out __SREG__,__tmp_reg__
1279 0570 CDBF out __SP_L__,r28
1280 0572 DF91 pop r29
1281 0574 CF91 pop r28
1282 0576 1F91 pop r17
1283 0578 0F91 pop r16
1284 057a FF90 pop r15
1285 057c EF90 pop r14
1286 057e DF90 pop r13
1287 0580 BF90 pop r11
1288 0582 AF90 pop r10
1289 0584 9F90 pop r9
1290 0586 8F90 pop r8
1291 0588 0895 ret
1292 /* epilogue end (size=18) */
1293 /* function edit_parameter2 size 349 (312) */
1294 .LFE10:
1296 .section .progmem.data
1299 __c.0:
1300 05b4 4C61 6465 .string "Lade Parameter\r\n"
1300 2050 6172
1300 616D 6574
1300 6572 0D0A
1300 00
1303 __c.1:
1304 05c5 2031 3A0D .string " 1:\r\n"
1304 0A00
1307 __c.2:
1308 05cb 2032 3A0D .string " 2:\r\n"
1308 0A00
1311 __c.3:
1312 05d1 2033 3A0D .string " 3:\r\n"
1312 0A00
1315 __c.4:
1316 05d7 2034 3A0D .string " 4:\r\n"
1316 0A00
1319 __c.5:
1320 05dd 2035 3A0D .string " 5:\r\n"
1320 0A00
1323 __c.6:
1324 05e3 5469 6D65 .string "Timeout"
1324 6F75 7400
1327 __c.7:
1328 05eb 5061 7261 .string "Parameter speichern?\r\n ja\r\n nein"
1328 6D65 7465
1328 7220 7370
1328 6569 6368
1328 6572 6E3F
1331 __c.8:
1332 060e 0D0A 2D2D .string "\r\n--->"
1332 2D3E 00
1335 __c.9:
1336 0615 0D0A 5061 .string "\r\nParameter gespeichert"
1336 7261 6D65
1336 7465 7220
1336 6765 7370
1336 6569 6368
1339 __c.10:
1340 062d 0D0A 4E69 .string "\r\nNicht gespeichert"
1340 6368 7420
1340 6765 7370
1340 6569 6368
1340 6572 7400
1341 .text
1342 .global edit_parameter
1344 edit_parameter:
1345 .LFB11:
1346 .LM145:
1347 /* prologue: frame size=15 */
1348 058a 1F93 push r17
1349 058c CF93 push r28
1350 058e DF93 push r29
1351 0590 CDB7 in r28,__SP_L__
1352 0592 DEB7 in r29,__SP_H__
1353 0594 2F97 sbiw r28,15
1354 0596 0FB6 in __tmp_reg__,__SREG__
1355 0598 F894 cli
1356 059a DEBF out __SP_H__,r29
1357 059c 0FBE out __SREG__,__tmp_reg__
1358 059e CDBF out __SP_L__,r28
1359 /* prologue end (size=11) */
1360 .LM146:
1361 05a0 0E94 0000 call lcd_cls
1362 .LM147:
1363 05a4 60E0 ldi r22,lo8(0)
1364 05a6 80E0 ldi r24,lo8(__c.0)
1365 05a8 90E0 ldi r25,hi8(__c.0)
1366 05aa 0E94 0000 call lcd_printp
1367 .LM148:
1368 05ae 60E0 ldi r22,lo8(0)
1369 05b0 80E0 ldi r24,lo8(__c.1)
1370 05b2 90E0 ldi r25,hi8(__c.1)
1371 05b4 0E94 0000 call lcd_printp
1372 .LM149:
1373 05b8 60E0 ldi r22,lo8(0)
1374 05ba 80E0 ldi r24,lo8(__c.2)
1375 05bc 90E0 ldi r25,hi8(__c.2)
1376 05be 0E94 0000 call lcd_printp
1377 .LM150:
1378 05c2 60E0 ldi r22,lo8(0)
1379 05c4 80E0 ldi r24,lo8(__c.3)
1380 05c6 90E0 ldi r25,hi8(__c.3)
1381 05c8 0E94 0000 call lcd_printp
1382 .LM151:
1383 05cc 60E0 ldi r22,lo8(0)
1384 05ce 80E0 ldi r24,lo8(__c.4)
1385 05d0 90E0 ldi r25,hi8(__c.4)
1386 05d2 0E94 0000 call lcd_printp
1387 .LM152:
1388 05d6 60E0 ldi r22,lo8(0)
1389 05d8 80E0 ldi r24,lo8(__c.5)
1390 05da 90E0 ldi r25,hi8(__c.5)
1391 05dc 0E94 0000 call lcd_printp
1392 .LM153:
1393 05e0 40E0 ldi r20,lo8(0)
1394 05e2 65E0 ldi r22,lo8(5)
1395 05e4 81E0 ldi r24,lo8(1)
1396 05e6 0E94 0000 call menu_choose
1397 .LM154:
1398 05ea 12E0 ldi r17,lo8(2)
1399 .LM155:
1400 05ec 0E94 0000 call read_parameter
1401 05f0 8130 cpi r24,lo8(1)
1402 05f2 41F4 brne .L105
1403 .LM156:
1404 05f4 20E0 ldi r18,lo8(0)
1405 05f6 40E0 ldi r20,lo8(__c.6)
1406 05f8 50E0 ldi r21,hi8(__c.6)
1407 05fa 66E0 ldi r22,lo8(6)
1408 05fc 822F mov r24,r18
1409 05fe 0E94 0000 call lcd_print_atp
1410 0602 5CC0 rjmp .L104
1411 .L105:
1412 .LM157:
1413 0604 0E94 0000 call lcd_cls
1414 .LM158:
1415 0608 4AE0 ldi r20,lo8(10)
1416 060a 50E0 ldi r21,hi8(10)
1417 060c BE01 movw r22,r28
1418 060e 6F5F subi r22,lo8(-(1))
1419 0610 7F4F sbci r23,hi8(-(1))
1420 0612 812F mov r24,r17
1421 0614 9927 clr r25
1422 0616 0E94 0000 call utoa
1423 .LM159:
1424 061a 60E0 ldi r22,lo8(0)
1425 061c CE01 movw r24,r28
1426 061e 0196 adiw r24,1
1427 0620 0E94 0000 call lcd_print
1428 .LM160:
1429 0624 82E3 ldi r24,lo8(50)
1430 0626 8093 0000 sts timer,r24
1431 .L108:
1432 .LM161:
1433 062a 8091 0000 lds r24,timer
1434 062e 8823 tst r24
1435 0630 E1F7 brne .L108
1436 .LM162:
1437 0632 0E94 0000 call lcd_cls
1438 .LM163:
1439 0636 812F mov r24,r17
1440 0638 0E94 0000 call show_parameter
1441 063c 682F mov r22,r24
1442 .L111:
1443 .LM164:
1444 063e 8091 0000 lds r24,key
1445 0642 8823 tst r24
1446 0644 E1F3 breq .L111
1447 .LM165:
1448 0646 8091 0000 lds r24,key
1449 064a 8230 cpi r24,lo8(2)
1450 064c 09F4 brne .L114
1451 .LM166:
1452 064e 1F5F subi r17,lo8(-(1))
1453 .L114:
1454 .LM167:
1455 0650 8091 0000 lds r24,key
1456 0654 8130 cpi r24,lo8(1)
1457 0656 09F4 brne .L115
1458 .LM168:
1459 0658 1150 subi r17,lo8(-(-1))
1460 .L115:
1461 .LM169:
1462 065a 1F3F cpi r17,lo8(-1)
1463 065c 11F4 brne .L116
1464 .LM170:
1465 065e 1CE0 ldi r17,lo8(12)
1466 0660 03C0 rjmp .L117
1467 .L116:
1468 .LM171:
1469 0662 1D30 cpi r17,lo8(13)
1470 0664 08F0 brlo .L117
1471 .LM172:
1472 0666 10E0 ldi r17,lo8(0)
1473 .L117:
1474 .LM173:
1475 0668 8091 0000 lds r24,key
1476 066c 8830 cpi r24,lo8(8)
1477 066e 19F4 brne .L107
1478 .LM174:
1479 0670 812F mov r24,r17
1480 0672 0E94 0000 call edit_parameter2
1481 .L107:
1482 .LM175:
1483 0676 8091 0000 lds r24,key
1484 067a 8430 cpi r24,lo8(4)
1485 067c 19F6 brne .L105
1486 .LM176:
1487 067e 0E94 0000 call lcd_cls
1488 .LM177:
1489 0682 60E0 ldi r22,lo8(0)
1490 0684 80E0 ldi r24,lo8(__c.7)
1491 0686 90E0 ldi r25,hi8(__c.7)
1492 0688 0E94 0000 call lcd_printp
1493 .LM178:
1494 068c 40E0 ldi r20,lo8(0)
1495 068e 62E0 ldi r22,lo8(2)
1496 0690 81E0 ldi r24,lo8(1)
1497 0692 0E94 0000 call menu_choose
1498 .LM179:
1499 0696 8130 cpi r24,lo8(1)
1500 0698 61F4 brne .L119
1501 .LM180:
1502 069a 60E0 ldi r22,lo8(0)
1503 069c 80E0 ldi r24,lo8(__c.8)
1504 069e 90E0 ldi r25,hi8(__c.8)
1505 06a0 0E94 0000 call lcd_printp
1506 .LM181:
1507 06a4 85E0 ldi r24,lo8(5)
1508 06a6 0E94 0000 call write_parameter
1509 .LM182:
1510 06aa 60E0 ldi r22,lo8(0)
1511 06ac 80E0 ldi r24,lo8(__c.9)
1512 06ae 90E0 ldi r25,hi8(__c.9)
1513 06b0 03C0 rjmp .L124
1514 .L119:
1515 .LM183:
1516 06b2 60E0 ldi r22,lo8(0)
1517 06b4 80E0 ldi r24,lo8(__c.10)
1518 06b6 90E0 ldi r25,hi8(__c.10)
1519 .L124:
1520 06b8 0E94 0000 call lcd_printp
1521 .L104:
1522 .LM184:
1523 06bc 84E6 ldi r24,lo8(100)
1524 06be 8093 0000 sts timer,r24
1525 .L121:
1526 .LM185:
1527 06c2 8091 0000 lds r24,timer
1528 06c6 8823 tst r24
1529 06c8 E1F7 brne .L121
1530 /* epilogue: frame size=15 */
1531 06ca 2F96 adiw r28,15
1532 06cc 0FB6 in __tmp_reg__,__SREG__
1533 06ce F894 cli
1534 06d0 DEBF out __SP_H__,r29
1535 06d2 0FBE out __SREG__,__tmp_reg__
1536 06d4 CDBF out __SP_L__,r28
1537 06d6 DF91 pop r29
1538 06d8 CF91 pop r28
1539 06da 1F91 pop r17
1540 06dc 0895 ret
1541 /* epilogue end (size=10) */
1542 /* function edit_parameter size 170 (149) */
1543 .LFE11:
1545 .comm r_buffer,128,1
1546 .comm p_buffer,128,1
1547 .comm display_buffer,1024,1
1548 .comm display_buffer_pointer,2,1
1549 .comm display_buffer_counter,1,1
1550 .comm display_page_counter,1,1
1551 .comm display_mode,1,1
1552 .comm array,8,1
1553 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 parameter.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:22 .progmem.data:00000000 parameter
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:108 .progmem.data:00000360 bin_parameter
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:130 .progmem.data:00000420 p_limits
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:297 .progmem.data:000004e7 p_menu_number
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:368 .progmem.data:0000052a p_menus
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:384 .text:00000000 read_parameter
*COM*:00000080 p_buffer
*COM*:00000080 r_buffer
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:449 .text:00000054 write_parameter
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:494 .text:0000008a binary
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:540 .text:000000c0 bindec
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:585 .text:000000f4 decimal
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:645 .text:0000013e show_parameter
*COM*:00000008 array
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:888 .progmem.data:000005ae __c.11
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:892 .progmem.data:000005b0 __c.12
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:896 .progmem.data:000005b2 __c.13
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:901 .text:000002d0 edit_parameter2
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1299 .progmem.data:000005b4 __c.0
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1303 .progmem.data:000005c5 __c.1
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1307 .progmem.data:000005cb __c.2
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1311 .progmem.data:000005d1 __c.3
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1315 .progmem.data:000005d7 __c.4
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1319 .progmem.data:000005dd __c.5
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1323 .progmem.data:000005e3 __c.6
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1327 .progmem.data:000005eb __c.7
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1331 .progmem.data:0000060e __c.8
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1335 .progmem.data:00000615 __c.9
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1339 .progmem.data:0000062d __c.10
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccoJaaaa.s:1344 .text:0000058a edit_parameter
*COM*:00000400 display_buffer
*COM*:00000002 display_buffer_pointer
*COM*:00000001 display_buffer_counter
*COM*:00000001 display_page_counter
*COM*:00000001 display_mode
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
base64_send
get_message
__udivmodqi4
lcd_print_at
lcd_print_atp
menu_choose
key
timer
lcd_cls
lcd_print
lcd_printp
utoa
/Transportables_Koptertool/trunk/rs232.c
0,0 → 1,58
 
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include "main.h"
#include "rs232.h"
 
volatile uint8_t read_index, write_index;
volatile uint8_t rs232_buffer[16];
 
ISR(USART_RXC_vect)
{
rs232_buffer[write_index++] = UDR;
write_index &= 15;
}
 
void RS232_init (void)
{
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
// UBRRL = 7; // 57600 Baud @ 7,372800 MHz
UBRR = 7; // 57600 Baud @ 7,372800 MHz
}
 
uint8_t RS232_get (void)
{
uint8_t c;
 
rs232_timer = 10;
while ((read_index == write_index) && (rs232_timer > 0));
if (rs232_timer != 0)
{
c = rs232_buffer[read_index++];
read_index &= 15;
}
else
{
c=0;
}
return c;
}
void RS232_send (uint8_t data)
{
// while ((UCSRA & (1<<UDRE)) == 0);
while ((USR & (1<<UDRE)) == 0);
UDR = data;
}
void RS232_text (uint8_t *text)
{
while (*text)
{
RS232_send(*text);
text++;
}
}
 
 
/Transportables_Koptertool/trunk/rs232.d
0,0 → 1,0
rs232.o rs232.d : rs232.c main.h
/Transportables_Koptertool/trunk/rs232.h
0,0 → 1,46
#ifndef rs232_h
#define rs232_h
 
void RS232_init (void);
uint8_t RS232_get (void);
void RS232_send (uint8_t data);
void RS232_text (uint8_t *text);
#endif
 
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird
#if defined (__AVR_ATmega128__)
#define USR UCSR0A
#define UCR UCSR0B
#define UDR UDR0
#define UBRR UBRR0L
#define EICR EICRB
#endif
 
#if defined (__AVR_ATmega32__)
#define USR UCSRA
#define UCR UCSRB
#define UBRR UBRRL
#define EICR EICRB
#define INT_VEC_RX SIG_UART_RECV
#define INT_VEC_TX SIG_UART_TRANS
#endif
 
#if defined (__AVR_ATmega644__)
#define USR UCSR0A
#define UCR UCSR0B
#define UDR UDR0
#define UBRR UBRR0L
#define EICR EICR0B
#define TXEN TXEN0
#define RXEN RXEN0
#define RXCIE RXCIE0
#define TXCIE TXCIE0
#define U2X U2X0
#define UCSRB UCSR0B
#define UDRE UDRE0
#define INT_VEC_RX SIG_USART_RECV
#define INT_VEC_TX SIG_USART_TRANS
 
#define USART_RXC_vect SIG_USART_RECV
#endif
/Transportables_Koptertool/trunk/rs232.lst
0,0 → 1,188
1 .file "rs232.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global __vector_13
20 __vector_13:
21 .LFB4:
22 .LM1:
23 /* prologue: frame size=0 */
24 0000 1F92 push __zero_reg__
25 0002 0F92 push __tmp_reg__
26 0004 0FB6 in __tmp_reg__,__SREG__
27 0006 0F92 push __tmp_reg__
28 0008 1124 clr __zero_reg__
29 000a 8F93 push r24
30 000c 9F93 push r25
31 000e EF93 push r30
32 0010 FF93 push r31
33 /* prologue end (size=9) */
34 .LM2:
35 0012 9091 0000 lds r25,write_index
36 0016 E0E0 ldi r30,lo8(rs232_buffer)
37 0018 F0E0 ldi r31,hi8(rs232_buffer)
38 001a E90F add r30,r25
39 001c F11D adc r31,__zero_reg__
40 001e 8CB1 in r24,44-0x20
41 0020 8083 st Z,r24
42 0022 9F5F subi r25,lo8(-(1))
43 0024 9093 0000 sts write_index,r25
44 .LM3:
45 0028 8091 0000 lds r24,write_index
46 002c 8F70 andi r24,lo8(15)
47 002e 8093 0000 sts write_index,r24
48 /* epilogue: frame size=0 */
49 0032 FF91 pop r31
50 0034 EF91 pop r30
51 0036 9F91 pop r25
52 0038 8F91 pop r24
53 003a 0F90 pop __tmp_reg__
54 003c 0FBE out __SREG__,__tmp_reg__
55 003e 0F90 pop __tmp_reg__
56 0040 1F90 pop __zero_reg__
57 0042 1895 reti
58 /* epilogue end (size=9) */
59 /* function __vector_13 size 34 (16) */
60 .LFE4:
62 .global RS232_init
64 RS232_init:
65 .LFB5:
66 .LM4:
67 /* prologue: frame size=0 */
68 /* prologue end (size=0) */
69 .LM5:
70 0044 88E9 ldi r24,lo8(-104)
71 0046 8AB9 out 42-0x20,r24
72 .LM6:
73 0048 87E0 ldi r24,lo8(7)
74 004a 89B9 out 41-0x20,r24
75 /* epilogue: frame size=0 */
76 004c 0895 ret
77 /* epilogue end (size=1) */
78 /* function RS232_init size 5 (4) */
79 .LFE5:
81 .global RS232_get
83 RS232_get:
84 .LFB6:
85 .LM7:
86 /* prologue: frame size=0 */
87 /* prologue end (size=0) */
88 .LM8:
89 004e 8AE0 ldi r24,lo8(10)
90 0050 8093 0000 sts rs232_timer,r24
91 .L4:
92 .LM9:
93 0054 9091 0000 lds r25,read_index
94 0058 8091 0000 lds r24,write_index
95 005c 9817 cp r25,r24
96 005e 21F4 brne .L5
97 0060 8091 0000 lds r24,rs232_timer
98 0064 8823 tst r24
99 0066 B1F7 brne .L4
100 .L5:
101 .LM10:
102 0068 8091 0000 lds r24,rs232_timer
103 006c 8823 tst r24
104 006e 81F0 breq .L7
105 .LM11:
106 0070 8091 0000 lds r24,read_index
107 0074 E82F mov r30,r24
108 0076 FF27 clr r31
109 0078 E050 subi r30,lo8(-(rs232_buffer))
110 007a F040 sbci r31,hi8(-(rs232_buffer))
111 007c 8F5F subi r24,lo8(-(1))
112 007e 8093 0000 sts read_index,r24
113 0082 E081 ld r30,Z
114 .LM12:
115 0084 8091 0000 lds r24,read_index
116 0088 8F70 andi r24,lo8(15)
117 008a 8093 0000 sts read_index,r24
118 008e 01C0 rjmp .L8
119 .L7:
120 .LM13:
121 0090 E82F mov r30,r24
122 .L8:
123 .LM14:
124 0092 8E2F mov r24,r30
125 0094 9927 clr r25
126 /* epilogue: frame size=0 */
127 0096 0895 ret
128 /* epilogue end (size=1) */
129 /* function RS232_get size 37 (36) */
130 .LFE6:
132 .global RS232_send
134 RS232_send:
135 .LFB7:
136 .LM15:
137 /* prologue: frame size=0 */
138 /* prologue end (size=0) */
139 .L10:
140 .LM16:
141 0098 5D9B sbis 43-0x20,5
142 009a FECF rjmp .L10
143 .LM17:
144 009c 8CB9 out 44-0x20,r24
145 /* epilogue: frame size=0 */
146 009e 0895 ret
147 /* epilogue end (size=1) */
148 /* function RS232_send size 4 (3) */
149 .LFE7:
151 .global RS232_text
153 RS232_text:
154 .LFB8:
155 .LM18:
156 /* prologue: frame size=0 */
157 00a0 CF93 push r28
158 00a2 DF93 push r29
159 /* prologue end (size=2) */
160 00a4 EC01 movw r28,r24
161 .LM19:
162 00a6 8881 ld r24,Y
163 00a8 8823 tst r24
164 00aa 31F0 breq .L18
165 .L16:
166 .LM20:
167 00ac 8991 ld r24,Y+
168 00ae 0E94 0000 call RS232_send
169 .LM21:
170 00b2 8881 ld r24,Y
171 00b4 8823 tst r24
172 00b6 D1F7 brne .L16
173 .L18:
174 /* epilogue: frame size=0 */
175 00b8 DF91 pop r29
176 00ba CF91 pop r28
177 00bc 0895 ret
178 /* epilogue end (size=3) */
179 /* function RS232_text size 15 (10) */
180 .LFE8:
182 .comm read_index,1,1
183 .comm write_index,1,1
184 .comm rs232_buffer,16,1
185 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 rs232.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:20 .text:00000000 __vector_13
*COM*:00000001 write_index
*COM*:00000010 rs232_buffer
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:64 .text:00000044 RS232_init
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:83 .text:0000004e RS232_get
*COM*:00000001 read_index
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:134 .text:00000098 RS232_send
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccm4aaaa.s:153 .text:000000a0 RS232_text
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
rs232_timer
/Transportables_Koptertool/trunk/settings.c
0,0 → 1,70
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
 
#include "main.h"
#include "menu.h"
#include "lcd.h"
#include "settings.h"
 
 
void toggle_display(void)
{
cli();
 
if (LCD_ORIENTATION == 0)
LCD_ORIENTATION = 4;
else LCD_ORIENTATION = 0;
 
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], LCD_ORIENTATION);
 
lcd_init();
 
sei();
}
 
void LCD_settings(void)
{
 
// uint8_t parameter;
 
char loop = 1;
 
while(loop)
{
lcd_cls();
lcd_printp(PSTR("Einstellungen:\r\n"),0);
lcd_printp(PSTR("\r\n"),0);
lcd_printp(PSTR("Orientierung\r\n"),0);
lcd_printp(PSTR("Linie\r\n"),0);
lcd_printp(PSTR("Rechteck\r\n"),0);
// lcd_printp(PSTR("\r\n"),0);
lcd_printp(PSTR("Exit\r\n"),0);
// parameter = menu_choose(1,5,0);
 
switch(menu_choose(2,5,15))
{
case 2:
toggle_display(); // LCD-Modus
break;
case 3:
lcd_cls();
lcd_line(10,20,100,50, 1);
while ((key != key_enter) && (key != key_esc));
break;
case 4:
lcd_cls();
lcd_rect (10,20,100,40, 1);
while ((key != key_enter) && (key != key_esc));
break;
case 5:
loop = 0;
break;
default:
loop = 0;
break;
}
}
}
/Transportables_Koptertool/trunk/settings.h
0,0 → 1,9
void LCD_settings(void);
 
#if defined (__AVR_ATmega32__)
#endif
 
#if defined (__AVR_ATmega644__)
 
#endif
/Transportables_Koptertool/trunk/timer.c
0,0 → 1,37
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include "main.h"
#include "timer.h"
 
volatile uint8_t timer;
volatile uint8_t counter, counter2;
volatile uint8_t key;
volatile uint8_t rs232_timer;
 
 
ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz)
{
if (counter > 0)
counter --;
else
{
counter = 10;
key = (~PINA >> 4) & 0x0F;
counter2 ++;
}
if (timer > 0)
timer --;
if (rs232_timer > 0)
rs232_timer --;
}
 
void timer_init (void)
{
TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024
OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz
TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR
}
/Transportables_Koptertool/trunk/timer.d
0,0 → 1,0
timer.o timer.d : timer.c main.h
/Transportables_Koptertool/trunk/timer.h
0,0 → 1,26
#ifndef timer_h
#define timer_h
 
volatile uint8_t timer;
volatile uint8_t counter, counter2;
volatile uint8_t key;
volatile uint8_t rs232_timer;
 
void timer_init (void);
 
#endif
 
#if defined (__AVR_ATmega32__)
#endif
 
#if defined (__AVR_ATmega644__)
#define TCCR0 TCCR0A
#define OCR0 OCR0A
#define TIMSK TIMSK0
#define OCIE0 OCIE0A
 
#define INT_VEC_TX SIG_USART_TRANS
 
#define SIG_OUTPUT_COMPARE0 SIG_OUTPUT_COMPARE0A
#endif
/Transportables_Koptertool/trunk/timer.lst
0,0 → 1,128
1 .file "timer.c"
2 .arch atmega32
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
17 .Ltext0:
18 .global __vector_10
20 __vector_10:
21 .LFB2:
22 .LM1:
23 /* prologue: frame size=0 */
24 0000 1F92 push __zero_reg__
25 0002 0F92 push __tmp_reg__
26 0004 0FB6 in __tmp_reg__,__SREG__
27 0006 0F92 push __tmp_reg__
28 0008 1124 clr __zero_reg__
29 000a 8F93 push r24
30 000c 9F93 push r25
31 /* prologue end (size=7) */
32 .LM2:
33 000e 8091 0000 lds r24,counter
34 0012 8823 tst r24
35 0014 31F0 breq .L2
36 .LM3:
37 0016 8091 0000 lds r24,counter
38 001a 8150 subi r24,lo8(-(-1))
39 001c 8093 0000 sts counter,r24
40 0020 15C0 rjmp .L3
41 .L2:
42 .LM4:
43 0022 8AE0 ldi r24,lo8(10)
44 0024 8093 0000 sts counter,r24
45 .LM5:
46 0028 89B3 in r24,57-0x20
47 002a 9927 clr r25
48 002c 8095 com r24
49 002e 9095 com r25
50 0030 6894 set
51 0032 13F8 bld __zero_reg__,4-1
52 0034 9595 1: asr r25
53 0036 8795 ror r24
54 0038 1694 lsr __zero_reg__
55 003a E1F7 brne 1b
56 003c 8F70 andi r24,lo8(15)
57 003e 8093 0000 sts key,r24
58 .LM6:
59 0042 8091 0000 lds r24,counter2
60 0046 8F5F subi r24,lo8(-(1))
61 0048 8093 0000 sts counter2,r24
62 .L3:
63 .LM7:
64 004c 8091 0000 lds r24,timer
65 0050 8823 tst r24
66 0052 29F0 breq .L4
67 .LM8:
68 0054 8091 0000 lds r24,timer
69 0058 8150 subi r24,lo8(-(-1))
70 005a 8093 0000 sts timer,r24
71 .L4:
72 .LM9:
73 005e 8091 0000 lds r24,rs232_timer
74 0062 8823 tst r24
75 0064 29F0 breq .L1
76 .LM10:
77 0066 8091 0000 lds r24,rs232_timer
78 006a 8150 subi r24,lo8(-(-1))
79 006c 8093 0000 sts rs232_timer,r24
80 .L1:
81 /* epilogue: frame size=0 */
82 0070 9F91 pop r25
83 0072 8F91 pop r24
84 0074 0F90 pop __tmp_reg__
85 0076 0FBE out __SREG__,__tmp_reg__
86 0078 0F90 pop __tmp_reg__
87 007a 1F90 pop __zero_reg__
88 007c 1895 reti
89 /* epilogue end (size=7) */
90 /* function __vector_10 size 63 (49) */
91 .LFE2:
93 .global timer_init
95 timer_init:
96 .LFB3:
97 .LM11:
98 /* prologue: frame size=0 */
99 /* prologue end (size=0) */
100 .LM12:
101 007e 8DE0 ldi r24,lo8(13)
102 0080 83BF out 83-0x20,r24
103 .LM13:
104 0082 88E4 ldi r24,lo8(72)
105 0084 8CBF out 92-0x20,r24
106 .LM14:
107 0086 89B7 in r24,89-0x20
108 0088 8260 ori r24,lo8(2)
109 008a 89BF out 89-0x20,r24
110 /* epilogue: frame size=0 */
111 008c 0895 ret
112 /* epilogue end (size=1) */
113 /* function timer_init size 8 (7) */
114 .LFE3:
116 .comm key,1,1
117 .comm timer,1,1
118 .comm rs232_timer,1,1
119 .comm counter,1,1
120 .comm counter2,1,1
121 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 timer.c
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:20 .text:00000000 __vector_10
*COM*:00000001 counter
*COM*:00000001 key
*COM*:00000001 counter2
*COM*:00000001 timer
*COM*:00000001 rs232_timer
C:\DOKUME~1\thomas\LOKALE~1\Temp/ccWeaaaa.s:95 .text:0000007e timer_init
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss