Elektronika.lt
 2025 m. spalio 11 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 10 11, 22:38. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Padekit su C
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Padekit su C
PranešimasParašytas: 2010 04 17, 08:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Noriu pasirasyti programele su atmega8 kad tarkim paspaudus migtuka1 dijodai usidektu nuo PORTD-0 iki PORTD-7, mygtukai pajunkti PORTB-0 ir PORTB-1 per GND.

Stai mano kodas;
#define F_CPU 100000
#include <avr/io.h>
#include <util/delay.h>

/*LED PORTB7*/

#define B0 0x01
#define B1 0x02
#define B2 0x04
#define B3 0x08
#define B4 0x10
#define B5 0x20
#define B6 0x40
#define B7 0x80
#define D 800 /* ms */

int main (void)
{
DDRD =255; /* Nustatome PORTB kaip isejima */
PORTB=1; /* Ijungiame PB vidinius poll-up rezistorius*/
unsigned char a=0;

while (1) {
if (!(PINB&1))/* Tikriname ar paspaustas mygtukas. zenkliukas &
reiskia lygine IR operacija, o ! reiskia logine inversija*/
{
if (a==0)a=1;
else a=0; /* Tikriname, ar pries tai buvo paspaustas
mygtukas ir ijungti diodai, jei taip, tai juos isjungsime*/

while(!(PINB&)){} /* Cia paprasta priemone nuo trumpu impulsu,
atsirandanciu paspaudus mygtuka*/

}
PORTD = 0;
_delay_ms(D);
PORTD = B0;
_delay_ms(D);
PORTD = B0 | B1;
_delay_ms(D);
PORTD = B0 | B1 | B2;
_delay_ms(D);
PORTD = B0 | B1 | B2 | B3;
_delay_ms(D);
PORTD = B0 | B1 | B2 | B3 | B4;
_delay_ms(D);
PORTD = B0 | B1 | B2 | B3 | B4 | B5;
_delay_ms(D);
PORTD = B0 | B1 | B2 | B3 | B4 | B5 | B6;
_delay_ms(D);
PORTD = B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7;
_delay_ms(D);

if (a==1)
PORTD=255;
else PORTD=0;

}
return 0;
}
Dabar nuolatos laksto diodai nuo 0 iki 7 porto ir nuspaudus mygtuka PB0 sustoja ciklas.
Padekit kas galit, aciu is anksto.[/code]
 Padekit su C
PranešimasParašytas: 2010 04 17, 12:35 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Tiksliau parasyk ka turi vykdyti mygtukai? Ta prasme is pradziu nemirgsi o paspaudus migtuka ijungiamas mirgsejimas?

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 Padekit su C
PranešimasParašytas: 2010 04 17, 12:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Tarkim paspaudus mygtuka PB0 diodai ijungiami paeiliu visi tarkim nui PD0 iki PD7 poto uzlaikymas pora minuciu ir usgesta paeiliui nuo PD0 iki PD7, o paspaudus mygtuka PB1 ijungiami diodai nuo PD7 iki PD0 uzlaikymas pora minuciu ir uzgesta analogiskai. Cia ideja laiptu apsvietimas kiekvienai pakopai su ledais tik vietoi migtuku butu kokie irda davikliai ar panasiai.
 Padekit su C
PranešimasParašytas: 2010 04 17, 13:23 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Dovydas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
PeetTong rašo:
Tarkim paspaudus mygtuka PB0 diodai ijungiami paeiliu visi tarkim nui PD0 iki PD7 poto uzlaikymas pora minuciu ir usgesta paeiliui nuo PD0 iki PD7, o paspaudus mygtuka PB1 ijungiami diodai nuo PD7 iki PD0 uzlaikymas pora minuciu ir uzgesta analogiskai. Cia ideja laiptu apsvietimas kiekvienai pakopai su ledais tik vietoi migtuku butu kokie irda davikliai ar panasiai.


Programa visiškai neatitnka norų. Dabar visą laiką junginėjami diodai, nesvarbu kokioj busenoj a.

Junginejimas turetu vykti tik tada, kai a==1.

Kodas turėtų būti panašus į mano paraštą:

Kodas:
while(1)
{
 if (a==1)
 {
 //jungineja i viena puse
 }

 if (b==1)
 {
 //jungineja i kita puse
 }
}

_________________
---
 Padekit su C
PranešimasParašytas: 2010 04 17, 13:24 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
LAbai jau primityviai viskas parasyta, net sunku suprast...
Kas cia while(!(PINB&)){} ?
Ir cia if (a==1)
PORTD=255;
else PORTD=0;
 Padekit su C
PranešimasParašytas: 2010 04 17, 15:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Sutinku kad primityviai, nemoksiskai ir visaip kaip kitaip parasyta.
Tiesiog mokausi programuoti ir tai viena is pirmu mano programu.

Kas cia while(!(PINB&)){} ?
Ir cia if (a==1)
Tikrai nezinau, manau koks dvigubas patikrinimas ar tikrai nuspaustas mygtukas, si fragmentapaimiau is elektronikos puslapio.

Dekui Dovydas uz uzvedima ant takelio, taip ir iki kelio po truputuka prieisiu Very Happy
 Padekit su C
PranešimasParašytas: 2010 04 17, 15:13 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Beja kaip teisingai priskirti prie PORTB0 kintamaji a?
 Padekit su C
PranešimasParašytas: 2010 04 17, 15:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
while(!(PINB&)){}

sio atvej upadaryta tam kad kol mygtuko neatleisi tolimesnes programos nevukdytu

sita funkcija reikia deti pries mygtuko paspaudima o ne po. aeba kitaip sakant prie ta funkcija turi buti siok toks uzdelsima per kuri spetu mygtuko padetis nusustoveti
 Padekit su C
PranešimasParašytas: 2010 04 17, 15:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kodas:
 if (!(PINB & (1<<PB0)))
a=1;


 if (!(PINB & (1<<PB1)))
a=0

 Padekit su C
PranešimasParašytas: 2010 04 17, 17:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
sneikaz rašo:
Kodas:
 if (!(PINB & (1<<PB0)))
a=1;


 if (!(PINB & (1<<PB1)))
a=0


Sneikai kaip suprasti sitas eilutes? Cia PB0=1 o PB=0 tai gaunasi vienas mygtukas ijungia kitas isjungia? Prasyciau issamiau. Aciu. Embarassed Embarassed
 Padekit su C
PranešimasParašytas: 2010 04 17, 18:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Zmogau ziuriu neskiri porto nuo pino...
Jei nuspausta knopke, prijungta prie pinb0 a=1, jei prie pinb1 a=0.
 Padekit su C
PranešimasParašytas: 2010 04 17, 19:17 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Tai cia nereikia kad nuolatos mirgsetu, tiesiog paspaudus pirma knopke diodai uzsidegtu nuo 0 iki 7, biski padegtu ir uzgestu nuo 0 iki 7? O su antra knopke atvirksciai?

Kodas:


DDRB=0b00000000;
PORTB=0b00000011;
DDRD=0b11111111;
PORTD=0b00000000;
while(1){

 if(!(PINB&1))////////jei pirma knopke paspausta pradeda jungineti diodus
 {while(!(PINB&1)){}
   PORTD=0b00000001;
   _delay_ms(D);
   PORTD=0b00000011;
   _delay_ms(D);
   PORTD=0b00000111;
   _delay_ms(D);
   PORTD=0b00001111;
   _delay_ms(D);
   PORTD=0b00011111;
   _delay_ms(D);
   PORTD=0b00111111;
   _delay_ms(D);
   PORTD=0b01111111;
   _delay_ms(D);
   PORTD=0b11111111;
   _delay_ms(D); //visi diodai uzsidege
   PORTD=0b00000000; //visi diodai isjungiami
   }

  }//while pabaiga




su antra knopke reiktu i koda irasyti kito mygtuko tikrinima

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 Padekit su C
PranešimasParašytas: 2010 04 18, 07:53 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
didshirshis rašo:
Tai cia nereikia kad nuolatos mirgsetu, tiesiog paspaudus pirma knopke diodai uzsidegtu nuo 0 iki 7, biski padegtu ir uzgestu nuo 0 iki 7? O su antra knopke atvirksciai?

Kodas:


DDRB=0b00000000;
PORTB=0b00000011;
DDRD=0b11111111;
PORTD=0b00000000;
while(1){

 if(!(PINB&1))////////jei pirma knopke paspausta pradeda jungineti diodus
 {while(!(PINB&1)){}
   PORTD=0b00000001;
   _delay_ms(D);
   PORTD=0b00000011;
   _delay_ms(D);
   PORTD=0b00000111;
   _delay_ms(D);
   PORTD=0b00001111;
   _delay_ms(D);
   PORTD=0b00011111;
   _delay_ms(D);
   PORTD=0b00111111;
   _delay_ms(D);
   PORTD=0b01111111;
   _delay_ms(D);
   PORTD=0b11111111;
   _delay_ms(D); //visi diodai uzsidege
   PORTD=0b00000000; //visi diodai isjungiami
   }

  }//while pabaiga




su antra knopke reiktu i koda irasyti kito mygtuko tikrinima


Labai didelis dekui. Iskarto supratau kas kaip, ir butent tai ko man reikia.
Noriu paklausti koks maksimalus laikas gali buti su delay(ms) funkija?
Realiai gaunasi maksimum apie sekunde man reiktu apie 10s padaryti. Gal galima daryti _delay_s(10) ar panasiai.
 Padekit su C
PranešimasParašytas: 2010 04 18, 10:21 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Niekada nenaudojau delay funkciju nes nesamones gaudavosi kazkodel.. Diodu mirgsinimo temoje yra funkcijos "velinam" aprasymas va ta ir naudodavau kai reikedavo uzlaikymo Confused

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 Padekit su C
PranešimasParašytas: 2010 04 18, 11:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
PeetTong
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Bet man su ta funkcija "velinam" gavosi irgi permazai laiko uslaikyme. Gal galima kaskaip padidinti kintamojo i reiksme;
for(i=0; i<65535; i++)
pav.; for(i=0; i<65535; i++10)
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama