Mam problem z chyba prostym programem w LabWindows5.0

Jeśli masz problem z LabWindows napisz, postaramy się pomóc.
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Mam problem z chyba prostym programem w LabWindows5.0

Post autor: Gość »

Mam problem z chyba prostym programem w LabWindows5.0 a dokładnie chodzi mi czy ma ktos albo napisal by mi programik ktory gra jakas melodie na glosniku komputera mam tu przyklad i jest to pojedynczy dzwiek a mi chodzi o cos dluzszego .Dziekuje z gory za pomoc pozdrawiam :)))

#include <utility.h>

int main (void)
{
int dzielnik;
int fw = 1193180;
int f = 1193;
unsigned char LSB, MSB,rej;
dzielnik = fw/f;
LSB =dzielnik&0x0f ;
MSB =dzielnik>>8 ;
outp (0x43, 0x86);
outp (0x42, LSB);
outp (0x42, MSB);
rej = inp(0x61);
outp (0x61, rej |0x03);
Delay (1);
outp (0x61,rej &0xFC) ;
}
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: jogurt_owocowy »

To chyba nie wygląda na trudne. A przynajmniej nie na tyle, żeby szukać gotowca-szybciej ruszyć głową samemu. Nigdy nie miałem styczności z LabWindows, ale... fw wygląda na wielkość definiującą częstotliwość odgrywanego dźwięku.
Więc żeby odgrywać nie pojedynczy dźwięk a "coś dłuższego" robimy tak, żeby fw zamiast pojedynczej zmiennej, było tablicą wysokości kolejnych dźwięków(nie jestem pewien składni, bo dawno w C nie pisałem): int fw[]={1193180,596590,1193180};-tu trzy kolejne dĹşwięki, taki jak w przykłądzie,inny(niższy?), taki jak w przykładzie. W kod programu wmontowujemy pętlę for w taki sposób (...) unsigned char LSB, MSB,rej; int i;
for(i=0;i<3;i++) {
dzielnik = fw/f;
LSB =dzielnik&0x0f ; (...)
Delay (1); outp (0x61,rej &0xFC) ; } // koniec pętli for (...)

I już powinno hulać.(...) oznaczają oczywiście resztę programu w niezmienionej postaci.
Jeśli "coś dłuższego" ma być jakąś melodyjką to wypadałoby się zaopatrzyć w tabelkę definiującą jakiej wartości fw odpowiada jaka wysokość dĹşwięku (C-D-E-F-G-A-H-C... czyli do-re-mi-fa-sol-la-si-do...). Najpewniej trzeba to będzie zrobić pośrednio fw->hz, potem hz->wysokość dĹşwięku i w końcu fw->wysokość dĹşwięku. Teraz naszą melodyjkę piszemy w postaci tablicy wysokości kolejnych nutek, czyli dla "wlazł kotka..." nutki[]={4,2,2,3,1,1,0,2,4}; gdzie 0-do, 1-re,2-mi itd. Zanim wejdziemy do pętli for tablicę nutki konwertujemy na tablicę fw wg uprzednio sporządzonej tabelki fw-nutka i gotowe-musi działać.
Pozdrawiam
Ostatnio zmieniony 13 mar 2006 23:13 przez jogurt_owocowy, łącznie zmieniany 1 raz.
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: Gość »

Dzieki za pomoc bardzo sie przydała :)))

Pozdrawiam
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: Gość »

Ale program nie smiga:(((((((((
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: jogurt_owocowy »

A co takiego nie działa?
for(int i...)? length(fw)? ?
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: Gość »

wpisalem tak :
#include <utility.h>

int main (void)
{
int dzielnik;
int fw[]={1193180,596590,1193180};
int f = 1193;
unsigned char LSB, MSB,rej;

for(int i=0;i<length(fw);i++) ;
{
dzielnik = fw/f;
LSB =dzielnik&0x0f ;
MSB =dzielnik>>8 ;
outp (0x43, 0x86);
outp (0x42, LSB);
outp (0x42, MSB);
rej = inp(0x61);
outp (0x61, rej |0x03);
Delay (1);
outp (0x61,rej &0xFC) ;
}
i wyswietla mi bledy przy for(int i...) ...nie wiem co jest nie tak ,moze zle wpisalem ?nie wiem jestem zielony z tego:(
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: jogurt_owocowy »

No to na gotowca nie licz.
Wszystko co trzeba zrobić do poklikać w błędy które wypisuje, poczytać co o nich ma do powiedzenia i poprawić. Swojego posta pisałem "intuicyjnie" bo z LabWindows do czynienia nigdy nie miałem. Akurat szczęściem zainstalowałem parę dni temu i poprawienie tych błędów zajmuje(dosłownie!) pół minuty. Czego dowód w poprawionym poście powyżej.
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Mam problem z chyba prostym programem w LabWindows5.0

Post autor: Gość »

Spoko juz wiem , bo jeśli zamiast length(fw) wstawie 3 to działa
Dzieki za pomoc:)
Pozdrawiam
ODPOWIEDZ