Elektronika.lt
 2025 m. gruodžio 21 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 12 21, 05:39. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » 3x4 klaviatūra
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 23
Pereiti prie Atgal  1, 2, 3  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 3x4 klaviatūra
PranešimasParašytas: 2006 12 07, 17:41 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vipix
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Nu ponas Mindaugai, kaip Jum negeda mane su Gate`su lygint? fuuu Mad Very Happy Very Happy

_________________
Akis už akį, postas už postą!!
 3x4 klaviatūra
PranešimasParašytas: 2006 12 07, 17:52 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Rsx
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Gal koki pavyzduka ar linka, paskaityt apie pertraukimus, nes nerandu nieko, arba ieškoti nemoku Embarassed
 3x4 klaviatūra
PranešimasParašytas: 2006 12 07, 19:40 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ą
nelabai yra ka ten skaityti, tam yra procesoriaus datasheetas.

tiesiog funkcija kaip ir bet kuti kita C kalbos funkcija kuri ivygdoma kai ivyksta pertraukimas. tuo metu esanti procesoriaus busena issaugoma, o pabaigus pertraukimo funkcija, vel pratesiama tas kas buvo daroma.

viskas atrodo kaip windows multitaskingas.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 08, 18:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Rsx
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
hmm,neaiškūs tie pertraukimai man... Gal ta koda kokiu kitu būdu galima įrašyti i mcu?
 3x4 klaviatūra
PranešimasParašytas: 2006 12 08, 22:06 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ą
pertraukimai niekuo nesiskiria nuo kitu C funkciju, tik tiek kad ta funkcija iskvieciama ne programiskai.

juos naudoti nera butina, nes pradedanciajam butu pagrindine problema juos ijungti. bet su pertraukimais oprograma iseina paprastesne ir greitesne.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 20, 20:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Rsx
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Na štai pasirašęs turiu programėlę kuri skanuoja ir duoda ivest 3 skaičių kodą, jį ivedus užsidega led. Norėčiau padaryti, kad po maždaug 20-30s tas led išsijungtu. Kai naudojau duoble for funkcija programa gavosi 8KB Shocked Šis kodas su nuimta for funkcija
Kaip suktis?
Kodas:
#include <avr/io.h>
int main()
{
DDRB=0x0F;
DDRD=0xff;
while (1){
PORTB =0b00001000;   //Pirma eilute

if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;}    //Skaicius 1
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;}   //Skaicius 2
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;}    //Skaicius 3

PORTB =0b00000100;  //Antra eilute
if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;}   //Skaicius 4
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;}   //Skaicius 5
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;}   //Skaicius 6

PORTB =0b00000010;  //Trecia eilute
if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;}   //Skaicius 7
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;}   //Skaicius 8
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;}   //Skaicius 9

PORTB =0b00000001;  //Ketvirta eilute
if (bit_is_set(PINB, 6)) {goto kodas;} else {PORTD=8;};   //Skaicius *
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;};   //Skaicius 0
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;};   //Skaicius #
}

kodas:
while(1){
PORTB =0b00001000;   //Pirma eilute
if (bit_is_set(PINB, 6)) {goto antras;}    //Paspaustas sk 1
}

antras:
while(1){
PORTB =0b00001000;   //Pirma eilute
if (bit_is_set(PINB, 5)) {goto trecias;}    //Paspaustas sk 2
}

trecias:
while(1){
PORTB =0b00001000;   //Pirma eilute
if (bit_is_set(PINB, 4)) {PORTD=32;}       //Paspaustas sk 3    
}}
 3x4 klaviatūra
PranešimasParašytas: 2006 12 20, 22:23 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ą
ka turejo daryti ta nuimta for funkcija?

va cia ir prasideda problemos kai nor kelis darbus vienu metu daryti.

jei tau led uzsidege ir tiesiog nori palaukti 30 sek tai gali ideti kokia delay funkcija ir nebus problemu.

bet jei tuo laukimo metu reikia ka nors dar daryti, kad ir toliau skanuoti klaviatura ar dar kazka tai jau bus daug sunkiau be pertraukimu, bet galima.


todel jei nori rimtesnes pagalbos reikia apie visa programa mastyti, netinka sukurti gabala ir meginti ji sujungti su kazkuo kitu. nes gali prireikti visai kito principo.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 20, 23:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Rsx
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
for turėjo užlaikyma padaryti, naudojau double kintamaji.
Man daugiau nieko nereikia tik kad PORTD=32 po ~20-30s i6sijungtu ir programa nuo pradžių prasidetų
 3x4 klaviatūra
PranešimasParašytas: 2006 12 20, 23:24 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ą
tai cia visai menkniekis, uzlaikyma padaryti.

yra gatavu funkciju bibliotekoje turbut tik paieskoti reikia,
jei nera tai galima kelis ciklus viena i kita sudeti.
ir naudok int (arba char tipa jei nori dar mazesnes programos).

zinoma unsigned int maksimumas 65000 o unsigned char 255

siaip duoble kintamasis neturetu taip padidinti programos labai didina float tipas.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 21, 08:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
jedas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Manau gera mintis avr'am užlaikyma daryti su __delay_cycles(n);

_________________
-----
That's what she said.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 21, 14:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JAULER
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką MSN Messenger
hmm, manau, kažkur buvai suklydęs, kad net 8Kb užėmė, neturėtų tiek užimt. pabandyk dar kartą paprastai parašyt viską, nes man tai kelia abejonių Rolling Eyes

_________________
nepamirškit, klysti žmogiška Wink
privatas - privatiems klausimams
arch linux Wink Smile
 3x4 klaviatūra
PranešimasParašytas: 2006 12 27, 23:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Rsx
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Štai ir vėl aš Smile Mėginau su delay.h biblioteka padaryti uzlaikyma, mat mindaugasu saite užtikau kaip jis dar valdyma su su at90s2313: http://www.dreifas.net/elektronikos-projektai/uv-80.html
Bet man sukompiliavus gaunas 11kb hex'as Shocked nors uždedu tik vienoj vietoj delay... Confused (pačioj pabaigoj)
Kodas:
#include <avr/io.h>
#include <delay.h>
int main()
{
DDRB=0x0F;
DDRD=0xff;
/******************************************************************
/                  Klaviaturos skenavimas                     /
/******************************************************************/
while (1){
PORTB =0b00001000; //Pirma eilute
if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;}  //Skaicius 1
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;} //Skaicius 2
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;}  //Skaicius 3

PORTB =0b00000100;  //Antra eilute
if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;} //Skaicius 4
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;} //Skaicius 5
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;} //Skaicius 6

PORTB =0b00000010;  //Trecia eilute
if (bit_is_set(PINB, 6)) {PORTD=255;} else {PORTD=0;} //Skaicius 7
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;} //Skaicius 8
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;} //Skaicius 9

PORTB =0b00000001;  //Ketvirta eilute
if (bit_is_set(PINB, 6)) {goto kodas;} else {PORTD=8;}; //Skaicius *
if (bit_is_set(PINB, 5)) {PORTD=255;} else {PORTD=0;}; //Skaicius 0
if (bit_is_set(PINB, 4)) {PORTD=255;} else {PORTD=0;}; //Skaicius #
}

/******************************************************************
/                  Kodo vykdymas                              /
/******************************************************************/
kodas:
while(1)
{
PORTB =0b00001000; //Pirma eilute
if (bit_is_set(PINB, 6)) {goto antras;}  //Paspaustas 1
}

antras:
while(1)
{
PORTB =0b00001000; //Pirma eilute
if (bit_is_set(PINB, 5)) {goto trecias;}  //Paspaustas 2
}

trecias:
while(1)
{
PORTB =0b00001000; //Pirma eilute
if (bit_is_set(PINB, 4))
{PORTD=32;
__delay_cycles(200);
//Paspaustas 3
PORTD =0b00000000;
}}}
 



 3x4 klaviatūra
PranešimasParašytas: 2006 12 28, 00:41 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ą
tai nera kos tebetis hex failo dydziu ten tesktinis formataskuris bent 3 kartus didesnis us tai las yra is tikruju

kitas dalukas kad __delay_cycles(200); tai tik kazkur 200us velinimas
geraiu daryk taip:

unsigned char a,b,c,d;

for (a=velinimas; a!=0;c++)
for (b=1; b!=0;c++)
for (c=1; c!=0;c++)

sita programa tikrai pati turbut maziausia is imanomu
 3x4 klaviatūra
PranešimasParašytas: 2006 12 28, 10:32 Pranešti apie taisyklių pažeidimą Atsakyti su citata
jedas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
for (a=velinimas; a!=0;c++)
for (b=1; b!=0;c++)
for (c=1; c!=0;c++)

man rodos šičia inf. loop ?
mano nuomone turėtų būti taip:

for (a=velinimas; a!=0;a--)
for (b=1; b!=0;b--)
for (c=1; c!=0;c--)

_________________
-----
That's what she said.
 3x4 klaviatūra
PranešimasParašytas: 2006 12 28, 13:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
oni
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Žiūrint į parašytą kodą man raibsta akys Smile

Pirmoje kodo dalyje nustatoma, ar iš vis buvo paspaustas bet koks klavišas, ir jei taip - PORTD=255; jei ne - PORTD=0. Tiesa, viskas patalpinta while(1){..} cikle, iš kurio išėjimo taško aš nematau. Ir aplamai, nors aš ir nerašau su C/C++, bet šis kodas galėtų būti trumpesnis. PVZ:

byte ZeroKey=PINB; //kai niekas nepaspausta

byte IsKeyDown(){
byte temp=0;
PORTB =0b00001000;
if (PINB!=ZeroKey) inc(temp);
PORTB =0b00000100; //Antra eilute
if (PINB!=ZeroKey) inc(temp);
PORTB =0b00000010; //Trecia eilute
if (PINB!=ZeroKey) inc(temp);
if (temp) return(1); else return(0);
}

// Kažkur toliau programoje:

If (IsKeyDown) { čia nustatom kuris key paspaustas ar dar kažką.. };

Kaip sakiau, aš rašau asmu, o C kodą parašiau iš 'lempos'. Tuo labiau kad tokią programulką rašyti asmu žymiai patogiau.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2, 3  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
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
Must have farming mods
Farming simulator modhub, Best farming simulator mods
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