Antwort schreiben  Thema schreiben 
Verfasser Nachricht
avast132
Experte
****


Beiträge: 590
Gruppe: User
Registriert seit: Nov 2011

Status: Offline
Danke erhalten: 80
Beitrag: #1
xGames  [S] jemand der sich mit C auskennt

Hallo Leute,

ich muss für die schule was programmieren.
Ist bestimmt was ganz simples, bin aber zu dumm dafür.

Als Programm nutze ich Keil uVsion5.


Meine Aufgabe ist, das Theme von Knightrider zu schreiben und im ein Lautsprecher ausgeben.

Ich muss es so machen.
Wenn ich auf den Taster mit dem Port P3^3 klicke, soll das lied bei dem Lautsprecher, mit dem Port 2^1 abgespielt werden.

ich bin aber zu dumm, überhaupt ein Ton auszugeben.
Als Vorlage habe ich das bekommen.
http://www.songsterr.com/a/wsa/misc-soundtrack-knight-rider-theme-tab-s44292t0

ich habe das mal was versucht mit Kumpel, klappt aber garnet, gibt einfach ein Ton aus, ohne Taster zu drücke.

Benutze den MC AT89c51rc2 wenn das relevant ist.


Im schlimmsten Fall in Assembler.


#include
sbit Ton=P2^1;


void warten(unsigned char j){
unsigned char i,k;
for(j;j>0;j--){
for (i=255;i>0;i--){k++;
}
}}


void main(void){
unsigned char j=2;
while (P3^3 == 1)
{
j =5;
Ton = 1;
warten(j);
Ton = 0;
warten(j); }
}

Wäre richtig nice, wenn mir jemand helfen könnte Wink




Verifizierter User


Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2015 19:43 von avast132.

09.05.2015 19:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
fkrone
*meow*
**


Beiträge: 3.421
Gruppe: Super Moderator
Registriert seit: Dec 2009

Status: Offline
Danke erhalten: 5342
Beitrag: #2
RE: [S] jemand der sich mit C auskennt

Außer, dass der Code an sich schrecklich aussieht (nimm es bitte nicht persönlich Wink ) und ich C an sich einen Overkill finde für die Schule hier mal ein paar Anmerkungen:

Der Programmablauf sieht so aus: Starte, frage direkt ab, ob das was in P3^3 steht (keine Ahnung, ob er hier auf die Referenz oder Wert geht, C ist 2 1/2 Jahre her und hasse Zeiger). gleich 1 ist. Wenn ja, gehe in die Schleife, wenn nicht ist das Programm direkt zu Ende. So weit ich das interpretiere bedeutet das, dass wenn beim Start der Taster nicht direkt gedrückt wird ist das Programm zu Ende.
Deine Warten-Funktion ist auch komisch, weiß nicht direkt, ob C so was kennt wie ne Pause, gehe aber davon aus. Die Schleifen sollten auch recht schnell durchlaufen sein.

An sich sind auch die Ports im Programm anders als in deiner Beschreibung Wink

09.05.2015 19:32
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
avast132
Experte
****


Beiträge: 590
Gruppe: User
Registriert seit: Nov 2011

Status: Offline
Danke erhalten: 80
Beitrag: #3
xGames  RE: [S] jemand der sich mit C auskennt

fkrone :
Außer, dass der Code an sich schrecklich aussieht (nimm es bitte nicht persönlich Wink ) und ich C an sich einen Overkill finde für die Schule hier mal ein paar Anmerkungen:

Der Programmablauf sieht so aus: Starte, frage direkt ab, ob das was in P3^3 steht (keine Ahnung, ob er hier auf die Referenz oder Wert geht, C ist 2 1/2 Jahre her und hasse Zeiger). gleich 1 ist. Wenn ja, gehe in die Schleife, wenn nicht ist das Programm direkt zu Ende. So weit ich das interpretiere bedeutet das, dass wenn beim Start der Taster nicht direkt gedrückt wird ist das Programm zu Ende.
Deine Warten-Funktion ist auch komisch, weiß nicht direkt, ob C so was kennt wie ne Pause, gehe aber davon aus. Die Schleifen sollten auch recht schnell durchlaufen sein.

An sich sind auch die Ports im Programm anders als in deiner Beschreibung Wink


Habe mich vertippt. Ja das war auch nur rumcoden nach ca8h. jetzt komme ich net weiter. Und ich bin ein 4er schüler in Prog, was ich einigermaßen gut kann ist Pascal mit Delphi, mein Lehrer meint C ist wie Delphi. was ich net so finde.

Wenn sich jemand auskennt, kann mein Code in die Tonne schmeißen und ein neuen schreiben.
Ich wäre schon zufrieden, wenn ich einfach ein COde kriege, wo ein einziger Ton kommt, aber wo ich die Höhe bzw die Tiefe regulieren kann, anhand von zahlen und die länge des Tons. Damit könnte ich leben und weiter selbst ausprobieren.




Verifizierter User


09.05.2015 19:40
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
laughingMan
News-Writer
**


Beiträge: 5.220
Gruppe: User
Registriert seit: Oct 2011

Status: Offline
Danke erhalten: 2363
Beitrag: #4
xGames  RE: [S] jemand der sich mit C auskennt

Statt einer Funktion namens warten solltest du es mal mit delay_ms() versuchen, eine 1000 in der Klammer bedeutet eine Verzögerung von einer ganzen Sekunde(1000ms).

Für den Ton: Der Mensch hört den Frequenzbereich zwischen 20 und 20.000Hz, da drin sollte die Ausgabe liegen. Wenn du z.B. 500Hz ausgeben willst, musst du zwischen den Ein- und Ausschaltvorgängen am Lautsprecher eine Verzögerung von 2ms einstellen(1000ms/500Hz=2). Bei Frequenzen über 1kHz braucht man natürlich eine Delay-Funktion die im Mikro-Bereich arbeitet. Ich habe mit den Atmega-Chips nicht gearbeitet, aber bei microchip gab es da noch die Funktion delay_us().

Zum Taster: Wenn der über einen Pull-up-Widerstand betrieben wird, ist der ständig auf HIGH(oder 1? lange her), aber bei einem Pull-down ist das genaue Gegenteil der Fall und deine Taster-Überprüfung wäre damit für den Eimer.

09.05.2015 19:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xGames Spielt jemand von euch Lotto? timoo 5 3.557 20.08.2018 03:38
Letzter Beitrag: Batika
xGames Kennt jemand den Song-Titel? :D MatzeO 3 2.156 03.07.2015 08:05
Letzter Beitrag: ps4_fan
xGames [S] jemanden der sich mit Elektonik auskennt Microcontroller usw avast132 16 4.197 11.04.2015 08:35
Letzter Beitrag: psp_neuling_90
xGames CS:GO - Hat jemand Lust zu handeln ? Junkstarr 0 1.468 23.01.2015 23:34
Letzter Beitrag: Junkstarr
xGames schenkt oder leiht mir jemand sein uploaded account? whyme1 2 2.061 13.01.2015 11:24
Letzter Beitrag: tom1tom

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang