Hey, folgendes Problem
aus:
1  | unsigned char charset(unsigned char val)
  | 
2  | {
 | 
3  | 
  | 
4  |     switch (val)
  | 
5  |     {
 | 
6  |         case 0:
  | 
7  |             return (~((1<<5)|(1<<7)|(1<<3)|(1<<1)|(1<<2)|(1<<6)));
  | 
8  |         case 1:
  | 
9  |             return (~((1<<7)|(1<<3)));
  | 
10  |         case 2:
  | 
11  |             return (~((1<<5)|(1<<7)|(1<<4)|(1<<2)|(1<<1)));
  | 
12  |         case 3:
  | 
13  |             return (~((1<<5)|(1<<7)|(1<<4)|(1<<3)|(1<<1)));           
  | 
14  | 
  | 
15  |         case 4:
  | 
16  |             return (~((1<<6)|(1<<4)|(1<<7)|(1<<3)));            
  | 
17  |         case 5:
  | 
18  |             return (~((1<<5)|(1<<6)|(1<<4)|(1<<3)|(1<<1)));           
  | 
19  | 
  | 
20  |         case 6:
  | 
21  |             return (~((1<<5)|(1<<6)|(1<<4)|(1<<3)|(1<<1)|(1<<2)));     
  | 
22  |       
  | 
23  |         case 7:
  | 
24  |             return (~((1<<5)|(1<<7)|(1<<3)));            
  | 
25  |         case 8:
  | 
26  |             return
  | 
27  | (~((1<<5)|(1<<7)|(1<<4)|(1<<3)|(1<<1)|(1<<2)|(1<<6)));            
  | 
28  |         case 9:
  | 
29  |             return (~((1<<5)|(1<<7)|(1<<4)|(1<<3)|(1<<1)|(1<<6)));
  | 
30  | 
  | 
31  |     }
  | 
32  |     
  | 
33  |     return 0;
  | 
34  | }
  | 
wird in der list datei (GEKÜRZT!):
1  |  119 0040 9927          clr r25
  | 
2  |  120 0042 8430          cpi r24,4
  | 
3  |  121 0044 9105          cpc r25,__zero_reg__
  | 
4  |  122 0046 81F1          breq .L16
  | 
5  |  
  | 
6  |  //SCHNITT (hier wären die ganzen andern switch cases..
  | 
7  | 
  | 
8  |  183                 .L16:
  | 
9  |  184                 .LM19:
  | 
10  |  185 00a8 87E2          ldi r24,lo8(39)
  | 
11  |  186 00aa 90E0          ldi r25,hi8(39)
  | 
12  |  187 00ac 0895          ret
  | 
Warum macht er aus dem Rückgabewert aufeinmal 16Bit? Der höchste
zurückgegebene Wert ist übrigens 133.