Elektronika.lt
 2025 m. liepos 6 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 07 06, 17:30. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » problemos programavime (C kalba)
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ą 
 problemos programavime (C kalba)
PranešimasParašytas: 2008 10 02, 21:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
zap
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
na nezinau, niekaip nepavyksta kad led eilute begiotu pirmyn atgal, parasiau koda, tai eilute nubega ir parbega viena kart ir viskas nors ciklas begalinis, pataisykit jei matot kur klaida Smile

Kodas:
#include <avr/io.h>
void velinam();
int main( void )
{DDRD=255;
unsigned char a=128;

while(1){
PORTD=a;
velinam();
a=a/2;
if (a==0){
for(a=1; a<=128; a=a*2)
{
PORTD=a;
velinam();
}
a=128;
}
}}
void velinam()
{unsigned int i=0;
for(i=0; i<65535; i++){}}
 problemos programavime (C kalba)
PranešimasParašytas: 2008 10 02, 21:31 Pranešti apie taisyklių pažeidimą Atsakyti su citata
slotkevitch2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Visų pirma kas čia?
Kodas:
int main( void )

Gal geriau iškart rašyk
Kodas:
void main(){

Nes return sakinio tai nėra.
O klaida pas tave yra tame kad blogai suformuluotas ciklas. Naudok pvz bool b, b:=1 kai dalint a reikšme nori, b=0 kai daugint.

Kodas:

while(1){
PORTD=a;
velinam();
if (b==0)
a=a*2;
else a=a/2;

if (a==1 or a==128) b=not b;
}

Bandyk gal šitą, bet klaidas išsitaisyk nes c kalbos nelabai moku...
 problemos programavime (C kalba)
PranešimasParašytas: 2008 10 03, 16:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
kazkas panasaus
Kodas:

int main(){
unsigned char a,i;
while(1){
   a = 128;
   for(i=0; i<8; i++){
      PORTD = a;
      a = a/2;
      velinam();
   }
   a = 1;
   for(i=0; i<8; i++){
      PORTD = a;
      a = a * 2;
      velinam();
   }
}
}
 problemos programavime (C kalba)
PranešimasParašytas: 2008 10 05, 12:10 Pranešti apie taisyklių pažeidimą Atsakyti su citata
zap
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
dekui, veikia Smile
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 09, 00:53 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Super Bass
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Yahoo Messenger MSN Messenger
Problema panaši tad nekuriam naujų temų.
Tikiuosi ir man padėsit, nes su mikrokontroleriais ir C kalba žaidęs esu dar labai mažai.
Reikia nesudėtingo dalyko- bėgiojančios 16 ar daugiau LED'ų eilutės. Bėgti turi į vieną pusę iš eilės visi LED'ai.
Naudoju ATMEGA16, kvarcas 4MHz, kompiliuoju su „IAR Embedded Workbench for AVR“ ir įrašinėju PonyProg'u per LPT programatorių.

Reikalas tame kad kai ankščiau reikėjo vos kelių kojų, tai užtekdavo PD portų, o dabar reikia dar ir PC. Manau kad klaidų privėliau ir registrų aprašyme. Paskutinis variantas štai čia:

/* Data Direction Register, Port C */

#define DDC7 7
#define DDC6 6
#define DDC5 5
#define DDC4 4
#define DDC3 3
#define DDC2 2
#define DDC1 1
#define DDC0 0

/* Data Direction Register, Port D */
#define DDD7 7
#define DDD6 6
#define DDD5 5
#define DDD4 4
#define DDD3 3
#define DDD2 2
#define DDD1 1
#define DDD0 0

/* Data Register, Port C */
#define PORTC7 7
#define PORTC6 6
#define PORTC5 5
#define PORTC4 4
#define PORTC3 3
#define PORTC2 2
#define PORTC1 1
#define PORTC0 0

/* Data Register, Port D */
#define PORTD7 7
#define PORTD6 6
#define PORTD5 5
#define PORTD4 4
#define PORTD3 3
#define PORTD2 2
#define PORTD1 1
#define PORTD0 0

#include <iom16.h>
void velinam(); //
int main( void )
{DDRD=255; DDRC=255;
unsigned char a=128;
while(1){//
int i=0;
i++;
if (i <= Cool { PORTD=a; PORTC = 0; }
if ((i > Cool && (i <= 16)) ;{ PORTC = a; PORTD = 0;}
if (i == 16) { i = 0; }
velinam();
a=a/2;
if (a==0){a=128;}
}}
void velinam()
{unsigned int i=0;
for(i=0; i<10000; i++){}}

Labai laukiu pastabų ir patarimų, nes rezultatas bus naudojamas renginio dekoracijų kūrime, tad dar reikia kad būtų ir patikima. Very Happy Ačiū. Wink
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 09, 01:08 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ą
lengviausia spresti tokiu dalykus naudojanti C kalba o ne imituojant asambleri taip kaip tu darai

o tam reikia tiesiog daryti kaip pries tai rodytoje programoje tik kintamaji padaryti int o ne char ir ir paskui ji iskirstyti i 2 portus.

o tai padaroma gana lengvai

PORTC= a>>8;
PORTD=(a & 0xff)

visa kita kaip zap programoje
tik
unsigned char a=128;
keisk i
unsigned int a=0x8000;

ir attitinkamai visur kitur 128 keisk i 0x8000

nors jei tau tik i viena puse begancio tereikia tai visai paprasta


int a,x
while(1){
for (x=0;x<15;x++){
a=(1<<x)
PORTC= a>>8;
PORTD=(a & 0xff)
}

}
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 09, 23:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Super Bass
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Yahoo Messenger MSN Messenger
Neveikia nei vienu nei kitu atvėjų... Crying or Very sad
O kaip turi atrodyti registrai? Gal reikia numeracijos iki 16 ar kaip?
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 10, 01:36 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ą
o kas tau vyskta?
mano progremoje reikia dar uzdelsima ideti kur nors
o siaip turetu veikti ar bent jau kazkas turi vykti
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 10, 21: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
C porte kartu yra JTAG`as, kuris po default`u būna įjungtas, jis neduoda pilnai valdyti C porto, pabandyk jį išjungti.

_________________
nepamirškit, klysti žmogiška Wink
privatas - privatiems klausimams
arch linux Wink Smile
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 12, 21:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
bega i viena puse:
Kodas:

void main(void){
  unsigned short a;
  unsigned char i;
  DDRC = 255;
  DDRD = 255;
  a = 1;
  while(1){
    for(i=0; i<16; i++){
      PORTC = a;
      PORTD = a / 256;
      a = a * 2;
      velinam();
    }
    a = 1;
  }
}

ir dar, kaip rase, reikia JTAG isjungti, kad normaliai PORTC veiktu...
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 13, 22:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ingo
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Gal kas zino kaip pritaikyti funkcija shift_left( Buffer, 4, i); kuri naudojama CCS, mikroC kompiliatoriui,nes mikroC tokios funkcijos ner.Cia pas mane Buffer[9]; o i gali buti 1 arba 0. Bandziua rasyt
Buffer[4]<<i; bet kazkas ne taip gaunasi.
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 13, 23:37 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ą
jei nera kazkokios funkcijos ja reikia pasirasyti paciam.

ir pirma reikia zinoti ka ji isvis turi daryti
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 14, 11:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ingo
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Tai kad ir nezinau ka turi daryti funkcija shift_left( Buffer, 4, i); ,o man ja reikia parasyti paprastai,be bibliotekiniu funkciju,jei zinoc tai gal ir parasysiu,todel ir klausiu.
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 14, 12:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
slotkevitch2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kam tau jos reikia? Kąnors paprasčiau sugalvok, o jei nori į kairę perstumti bitus tai:
Kodas:
int i;
char bufer[9];
char ca;

void shift_left(){
   ca=bufer[0];
   for (i=0; i<8;i++)
      bufer[i]=bufer[i+1];
   bufer[8]=ca;
}
 problemos programavime (C kalba)
PranešimasParašytas: 2008 12 14, 12:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
slotkevitch2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Aš spėju, kad ta tavo funkcija perstumia per kelis vienetus į kairę (Tavo atveju 4), o i reiškia kokiais bitais bus užpildyti paskutinieji bitai (jų neatkels iš pradžios tikriausiai)
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

www.esaugumas.lt – apsaugok savo kompiuterį!

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
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps 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
Football Training Kit
Football Training Equipment, Football Skills, Football Training
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
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama