Du kriegst von mir einen Preis für den unverständlichsten und am
schlechtesten auf Korrektheit prüfbaren Code.
Was ist so schwer daran, sich für eine Standard-Aufgabe eine
Standardfunktion zu schreiben. Da kann man dann auch gleich noch ein
paar Sonderfälle (Groß/Kleinbuchstaben) abfangen und zumindest
rudimentäres Fehlerchecking betreiben
1 | uint8_t toValue( char c )
|
2 | {
|
3 | if( isdigit( c ) )
|
4 | return c - '0';
|
5 |
|
6 | if( c >= 'a' && c <= 'f' )
|
7 | return c - 'a' + 10;
|
8 |
|
9 | if( c >= 'A' && c <= 'F' )
|
10 | return c - 'A' + 10;
|
11 |
|
12 | return 0;
|
13 | }
|
14 |
|
15 | char uart_getc()
|
16 | {
|
17 | while (!(IFG2 & URXIFG1))
|
18 | ;
|
19 | return RXBUF1;
|
20 | }
|
21 |
|
22 | void set_DAC(void)
|
23 | {
|
24 | unsigned int DAC_value = 0;
|
25 | int j=0;
|
26 |
|
27 | if (men == 1)
|
28 | SendUSART1( "\r\nEnter Value (e.g. fff)" );
|
29 |
|
30 | for (j = 0; j < 3; j++)
|
31 | {
|
32 | DAC_value = (DAC_value << 8) | toValue( uart_getc() );
|
33 | }
|
34 |
|
35 | { // Debughilfe
|
36 | char buffer[20];
|
37 | sprintf( buffer, "\r\nSetting DAC to 0x%04x", (int)DAC_value );
|
38 | SendUSART1( buffer );
|
39 | }
|
40 |
|
41 | WR_DAC( DAC_value, 0x000 );
|
42 |
|
43 | if (men==1)
|
44 | SendUSART1( "\r\nBeam me up, Scotty" );
|
45 | }
|
Wo liegt das Problem bei ein bischen Code-Arbeit? Zu lesbar? Nicht
kryptisch genug?