ich hab mir grad mal einen code "zusammengeschustert" für ein Lauflicht, klappt auch alles, ist aber eher un schön gemacht. irgendwelche Tipps für die Funktion move_text um diese effizienter zu machen???
1 | #include <avr/io.h> |
2 | #include <stdlib.h> |
3 | #include <util/delay.h> |
4 | #include <string.h> |
5 | |
6 | #include <lcd.h> |
7 | |
8 | #define length 30
|
9 | char sLauftext[length+1]; |
10 | |
11 | char* move_text(char* test) |
12 | {
|
13 | char sTmp[2]; |
14 | char sLauftextTmp[length+1]; |
15 | uint8_t i; |
16 | |
17 | strcpy(sLauftext,test); |
18 | strcpy(sLauftextTmp,sLauftext); |
19 | |
20 | sTmp[0]=sLauftext[0]; |
21 | sTmp[1]='\0'; |
22 | for (i=1;i<length+1;i++) |
23 | {
|
24 | sLauftextTmp[i-1]=sLauftext[i]; |
25 | }
|
26 | strcat(sLauftextTmp,sTmp); |
27 | strcpy(sLauftext,sLauftextTmp); |
28 | |
29 | return sLauftext; |
30 | }
|
31 | |
32 | |
33 | void wait (uint16_t zeit) //zeit: wartezeit in ms (0 bis 65536) |
34 | {
|
35 | uint16_t i; |
36 | for(i=0;i<zeit;i++) _delay_ms(1); //da für _delay_ms max Takt-abhängige Werte erlaubt |
37 | }
|
38 | |
39 | int main (void) |
40 | {
|
41 | char sLauftext[length+1]; |
42 | |
43 | lcd_init(LCD_DISP_ON); |
44 | lcd_clrscr(); |
45 | strcpy(sLauftext,"Dies ist der Lauftext Test "); |
46 | lcd_puts(sLauftext); |
47 | wait(1000); |
48 | |
49 | while(1) |
50 | {
|
51 | lcd_clrscr(); |
52 | strcpy(sLauftext,move_text(sLauftext)); |
53 | lcd_puts(sLauftext); |
54 | wait(200); |
55 | }
|
56 | |
57 | return 0; |
58 | }
|