To zamiast: [syntax=basic4gl]Print &H7E; [/syntax] wyślij: [syntax=basic4gl]Print "{126}"; [/syntax]
Daj zamiast [syntax=basic4gl]Config Int0 = Low Level [/syntax] tak [syntax=basic4gl]Config Int0 = Falling [/syntax] i pozmieniaj parametr Wait 2000 na inny.
Tutaj masz źle [syntax=basic4gl]'odczyt 1wreset 1wwrite &H55 1wwrite &HBE Lsb = 1wread(): Msb = 1wread():[/syntax] Zamiast [syntax=basic4gl]1wwrite &H55 [/syntax] - match ROM powinno być [syntax=basic4gl]1wwrite &HCC [/syntax]- skip ROM oczywiście pod warunkiem że masz tylko jeden układ na magistrali Czas na konwersję - wystarczy 200ms, DS1820 ma tylko...
Z tego co porównuję z listingiem źródłowym z książki to masz kilka błędów: sprawdź: [syntax=basic4gl]Config Lcd = 16 * 2[/syntax] oraz umiejscowienie [syntax=basic4gl]Cls[/syntax] w pętli a u ciebie jest poza pętlą oraz wyrzuć konfigurację [syntax=basic4gl]Config Timer2 = Timer , Async = On , Prescale = 128[/syntax] sprawdź także ustawienia Fuse CKSEL3..0...
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Spróbuj: [syntax=basic4gl]Home upper Lcd Impulsy Lowerline Lcd K [/syntax] A najlpeiej używaj poleceń [syntax=basic4gl]LOCATE y , x [/syntax]
Ehh.. Nie znam bascoma ale jak po prostu trzeba zamienić miejsca to Zamiast [syntax=basic4gl]A=Wart And &B00001111 Shift Wart , Right , 4 B = Wart[/syntax] Zrób [syntax=basic4gl]B=Wart And &B00001111 Shift Wart , Right , 4 A = Wart[/syntax]
No masz moją wersje rozwiązania tego problemu. W symulatorze działa. Na uP nie testowałem. [syntax=basic4gl][/syntax] $regfile = "attiny13.dat" $crystal = 1000000 Dim Fp1 As Bit Dim Fp2 As Bit Config Pinb.3 = Input Config Pinb.4 = Input Config Pinb.1 = Output Config Pinb.2 = Output Set Portb.3 'podciagniecie do +5V Set Portb.4 Do If Pinb.3 = 0 And Fp1...
Eh, a napisz coś takiego: [syntax=basic4gl] dim pwm_var as byte [/syntax] Tam gdzie deklarujesz resztę zmiennych, następnie przy wyświetlaniu: [syntax=basic4gl] pwm_var=cool1 lcd "Obroty"; str(pwm_var)[/syntax]
... bo dobrze znam ten wyświetlacz. Ale z Bascomem już gorzej :D Co to jest za twór :?: [syntax=basic4gl] Data "Poniedzia" ; &h9D ; "ek" ; [/syntax] Do umieszczenia w zmiennej tekstowej dowolnego kodu ASCII, służą nawiasy klamrowe :idea: [syntax=basic4gl]Data "Poniedzia{157}ek" [/syntax]
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
brakuje Ci jeszcze jednej malutkiej instrukcji [syntax=basic4gl]Set Portc.5[/syntax] u mnie zawsze to działa
Czyli ustawiam stan niski zaraz po konfiguracji. Błąd, nie ustawiasz :). zamień: [syntax=basic4gl]Reset Pind.4 'oc1b niebieskie Reset Pind.5 'oc1a biale Reset Pind.7 'oc2 czerwone[/syntax] na: [syntax=basic4gl]Reset Port.4 'oc1b niebieskie Reset Port.5 'oc1a biale Reset Port.7 'oc2 czerwone [/syntax]
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
Tak jeszcze przed END IF: [syntax=basic4gl]Rc5send Togbit , Address , Command[/syntax]
Podciągnij wejście do plusa wewnętrznym rezystorem. Wejście T1 to PD5. [syntax=basic4gl]PORTD.5 = 1[/syntax]
atom1477, przecież o ile jakieś przerwanie w międzyczasie nie zmienia Portd.5 to kod Nie chodzi o to żeby ustawił w końcu, tylko w momencie kiedy piszesz Pind.5 = 1: No ale Portd.5 zamiast Pind.5 byłoby przejrzyściej. W ogóle przejrzyściej było by stosować ten zapis jeszcze zamiast Set Portd.5. Tysiące razy było. Do rejestru port zapisujemy a z rejestru...
[syntax=basic4gl]Portb = 11111111[/syntax] Jedenaście milionów sto jedenaście tysięcy... nie zmieści się w 8-mio bitowym rejestrze. Stałe binarne poprzedzone są odpowiednim prefiksem. Google mówi, że poprawny zapis to np. "&B11111111".
Teraz problem jak "wcisnąć" CLS. Gdy np. "dojadę" do 10, a następnie cofam ostatnia cyfra zostaje. Wystarczy dodać spacje :) [syntax=basic4gl]Lcd A ; " "[/syntax]
Zmień może na początek swoją litanię w ten sposób... Zamiast litanii, wystarczy tylko "amen" :-P [syntax=basic4gl]Print Bin(PORTB) [/syntax]
Masz trzy procedury Praca, Zakonczenie i Ustawienie, na początku programu musisz je zdeklarować: [syntax=basic4gl]Declare Sub Ustawienie Declare Sub Praca Declare Sub Zakonczenie [/syntax] Drugi błąd zmienne niemnogą mieć takiej samej nazwy jak procedury, zmień nazwy zmiennych: [syntax=basic4gl]Dim Ustawienie As Word Dim Praca As Word[/syntax]
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
Można trochę bajtów zaoszczędzić :) Dodaj bibliotekę obsługującą hardwarowe TWI: [syntax=basic4gl]$lib "I2C_TWI.LBX" ...... I2cinit Config Twi = 100000[/syntax] Odczyt danych z EEPROMU, zamiast: [syntax=basic4gl] Dim Mz1 As Byte Dim Gz1 As Byte Dim Mz2 As Byte Dim Gz2 As Byte Dim Mz3 As Byte Dim Gz3 As Byte Dim Mw1 As Byte Dim Gw1 As Byte Dim Mw2 As...
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
Nie znam dobrze Bascom'a ale moim zdaniem to zapewne kwestia Timerów. Masz w kodzie [syntax=basic4gl]Period = Capture1[/syntax] jest różnica w przypisaniu dla ATMega 8 - ICP1 to pin 14 (PB0) dla ATMega 32 ICP1 to pin 20 (PD6) - zobacz czy ( i ew. co tam masz podłączone ) w załączeniu pinouty:
Witam ! Usuń nawiasy kwadratowe z: [syntax=basic4gl] Deflcdchar [2] , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar [0] , 32 , 7 , 5 , 7 , 32 , 32 , 32 , 32 Deflcdchar [1] , 32 , 4 , 4 , 14 , 14 , 14 , 32 , 32 [/syntax] Tak: [syntax=basic4gl] Deflcdchar 2 , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar 0 , 32 , 7 , 5 , 7 , 32 ,...
A odnośnie pull-up coś jeszcze muszę dopisywać w kodzie? Myślę, że nie, jak masz woltomierz, to powinno być trochę niższe napięcie od zasilania przy niewciśniętym przycisku. BTW. Używaj tagu syntax. ] Tu kodzio /syntax]
Diody migają po dwa razy, kolejne dwa razy zawsze po naciśnięciu przycisku, tak w kółko. Jak nie naciskam to nic się nie dzieje. Zdaje się że taki zamiar był tego programu... Niemniej jednak spróbuj ten code: [syntax=basic4gl][/syntax ... $regfile = "attiny13.dat" $crystal = 9600000 Config Portb = &B011000 Portb = &B000010 $hwstack...
:D [syntax=basic4gl] Tabela: ' 0 1 2 3 4 5 6 7 8 9 Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144, 192 ' <-spróbuj dopisać [/syntax] , ale pomyśl też o takim warunku :P [syntax=basic4gl]Decr Sekjed If Sekjed = 255 Then Sekj = 9 Decr .. End If[/syntax]
gdzie jest błąd Nie znam BASCOM'a więc mogę się mylić... ale wydaje wydaje mi się, że tu:[syntax=basic4gl]If = S1 = 0 Then[/syntax] ;]
[syntax=basic4gl] Dim Wynik as byte , L1 as byte , l2 as byte Wynik = 47 Wart = Makebcd(wart) L1 = Wart And &B00001111 Shift Wart , Right , 4 L2 = Wart [/syntax] Druga możliwość: [syntax=basic4gl] Dim Temp As Long Dim A1 As Long Dim L1 As Byte , L2 As Byte A1 = 47 Temp = A1 \ 10000 L1 = Temp Temp = A1 Mod 10000 Temp = Temp \ 1000 L2 = Temp [/syntax]
....przeniosłem się na atmega32.... .... Hmmm, przesiadłeś się na ATmega32 a kompilujesz pod ATmega328p :?: To są dwa "troszkę" różne procesory. A programator jak podłączasz :?:
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
Pierwsze co bym zrobił, to dopisał na początku programu np.: [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
chciałbym go dowolnie zmienić w jednym miejscu zamiast 50 razy w kodzie Niestety Waitms jest już w tym dziwacznym Bascomie, wiec klapa. Można ten problem rozwiazać na przykład w ten sposób. [syntax=basic4gl]do portC.1=0 GoSub Czekaj_500_ms PortC.1=1 GoSub Czekaj_850_ms portC.1=0 GoSub Czekaj_1000_ms loop End Czekaj_500_ms: Waitms 500 Return Czekaj_850_ms:...
Jeśli masz sam rok musisz dodać miesiąc i dzień w formacie daty, żeby funkcja zrozumiała format daty, np.: [syntax=basic4gl] CDate(CStr([Rok]) & "-01-01") [/syntax]
Nowy mikrokontroler dopóki tego nie zmienisz pracuje z prędkością 1000000 Hz (1MHz) Wpisz na samej górze w kodzie [syntax=basic4gl]$crystal = 1000000 '1MHz crystal[/syntax] To poinformuje kompilator o prędkości i będzie już liczył poprawnie.
I popraw program : [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 Config Portd.3 = Output 'buzzer Portd.3 = 0 Do Wait 1 Portd.3 = 1 Wait 1 Portd.3 = 0 Wait1 Portd.3 = 1 Wait 1 Portd.3 = 0 Loop End [/syntax] albo lepiej tak: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Config Portd.3 = Output 'buzzer Do Wait 1 Toggle Portd.3...
Myślę że tak :): [syntax=basic4gl] S = "gdziestam{010}" J = Tcpwritestr(ix , S , 0)[/syntax]
Powinno być: [syntax=basic4gl]Print #2 , Godziny ; ":" ; Minuty ; " PIEC-" ; Ts ; " BOJLER-" ; Tb[/syntax]
Dla taktowania 8MHz, ale możliwe że trzeba zmodyfikować nazwy Pwm i Compare [syntax=basic4gl]Config Pinb.0 = Output Pwm0a = 70 Config Timer0 = Timer , Prescale = 1 , Compare0A = Toggle , Clear Timer = 1 Do Loop End[/syntax] a na rejestrach timera [syntax=basic4gl]DDRB = 0B00000001 'DDRB.0 = 1 (wyjście) OCR0A = 70 TCCR0A = 0B01000010 'COM0A1 COM0A0 =...
Dla obydwu mikrokontrolerów powinno być: [syntax=basic4gl][_Init_LCD] .EQU LCDDDR=$01 .EQU LCDPORT=$02 [/syntax]
To przekazuj zmienną w taki sposób: [syntax=basic4gl]Dim Y As Integer ' ' Servo(1) = Low(y)[/syntax]
Set Portd.5 - będzie stan wysoki albo: Pind.5= 1 Toggle zmienia stan Pinu, u ciebie nie był ustawiony żaden stan.
Dir jest instrukcją w Bascom'e, zmienna nie może mieć takiej nazwy. Zmień w całym programie nazwę zmiennej Dir np. na Dir2 . Dodaj deklaracje procedury Ddelay . [syntax=basic4gl]Declare Sub Ddelay[/syntax]
O konstruktywne ciężko bo to jest bez sensu :D Mieszasz różne instrukcje blokowe. Boki muszą być jeden w drugim. Nie mogą się przeplatać. Np. [syntax=basic4gl]IF ..Tu inny blok END IF[/syntax] A Ty masz tak: [syntax=basic4gl]IF DO END IF LOOP[/syntax] Tak nie może być. Albo: [syntax=basic4gl]IF DO LOOP END IF[/syntax] albo [syntax=basic4gl]DO IF END...
Na początek do rysowania schematów są odpowiednie programy a nie Paint , kody programu umieszcza się korzystając z polecenia Syntax a nie wkleja zrzut . Schemat : brak jakichkolwiek kondensatorów do filtracji zasilania , brak GND dla uC , brak oporników ograniczających prąd diod jeden wspólny to żadna oszczędność max prąd portu to 20mA , czerwone LED...
Przerwanie miałbyś z częstotliwością 32000Hz(8000000/250), gdybyś tylko przeładowywał Timer w przerwaniu. [syntax=basic4gl] Prztimer1: Load Timer1, 250 '<----- w tym miejscu na przyklad Incr Licznik If Licznik > 100 Then Licznik = 0 End If[/syntax]
Cóż, podpowiem jeszcze raz: 1. Sprawdź w necie jak odczytać stan przycisku ---- EDIT: w necie też piszą różnorakie bzdury o tym zatem może napiszę jak być powinno: Zwykle przyciski podłączamy tak, aby zwierały pin do masy. Aby odczytać stan danego pinu musimy: 1. skonfigurować go jako wejście instrukcją (np. - istnieje wiele odmian konfiguracji, ale...
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
syntax basic4gl syntax basic4gl syntax syntax basic4gl bascom dioda syntax zobacz
mitsubishi outlander radio fracarro antena pilot keytis
sterowanie buforem ciepła sterowanie buforem ciepła
Strzelanie w gaźniku Kawasaki KLF 300 - przyczyny i rozwiązania Chrysler Sebring nie kręci rozrusznikiem - przyczyny