 |

|
|
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 25, 05:30. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » atMega8 ir max232
|
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 2 iš 2 Pereiti prie Atgal 1, 2 |
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 28, 20:00 |
|
|
|
|
if (PINB&1)
Galit paaiskint lietuvisaki ka tai reiskia? angliskai nepagaunu.
jei parasyta sitaip tada nuo pb0 migtuko junginejas ledai, o kaip padaryt kad junginetus nuo pb3 pvz? |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 28, 20:30 |
|
|
|
|
| tasjus rašo: |
if (PINB&1)
Galit paaiskint lietuvisaki ka tai reiskia? angliskai nepagaunu.
jei parasyta sitaip tada nuo pb0 migtuko junginejas ledai, o kaip padaryt kad junginetus nuo pb3 pvz? |
if (PINB & (1<<PB3)) // jei PB3 = 1 ...
....;
dazniausiai mygtukai jungiami i minusa, tad teisingiau butu:
if (!(PINB & (1<<PB3)))
...; |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 30, 19:22 |
|
|
|
|
#include <avr/io.h>
#include <util/delay.h>
int main( void )
{
DDRD |=1 <<PIND0;
DDRB &= ~(1<<PINB0);
PORTB|=1<<PINB0;
while (1){
if(bit_is_clear(PINB,0))
{
PORTD|=1<<PIND0;
}
}}
parasius tokia programa ledas paspaudus migtuka uzsidega ir dega, ar neturetu atleidus uzgest? |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 00:51 |
|
|
|
|
o tu papildyk:
else PORTD &= ~(1<<PIND0); |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 12:08 |
|
|
|
|
dekui veikia.
Noriu Padaryt panasiai kaip viktorinose buna tie mygtukai , kuris pirmas paspaudzia to lempa uzsidega, o kitu nebe.bet kiek vargstu niekaip negaunu to ko noriu, galit esme pasakyt kaip tokai programa turetu atrodyt?
padarau kad paspaudus viena migtuka kitos led paspaudus nebeuzidega, bet paspaudus tuos kitu migtukus uzgesta ir pirmoji.. |
|
|
|
|
|
 |
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 14:58 |
|
|
|
|
| tasjus rašo: |
dekui veikia.
Noriu Padaryt panasiai kaip viktorinose buna tie mygtukai , kuris pirmas paspaudzia to lempa uzsidega, o kitu nebe.bet kiek vargstu niekaip negaunu to ko noriu, galit esme pasakyt kaip tokai programa turetu atrodyt?
padarau kad paspaudus viena migtuka kitos led paspaudus nebeuzidega, bet paspaudus tuos kitu migtukus uzgesta ir pirmoji.. |
| Kodas: |
#define btnPLAY (1<<PB0)
#define btnPLAYER1 (1<<PB1)
#define btnPLAYER2 (1<<PB2)
#define btnPLAYER3 (1<<PB3)
#define ledPLAY (1<<PD0)
#define ledPLAYER1 (1<<PD1)
#define ledPLAYER2 (1<<PD2)
#define ledPLAYER3 (1<<PD3)
#define btnPL123 (btnPLAYER1 | btnPLAYER2 | btnPLAYER3)
int main() {
char b;
// init ports
DDRD |= (ledPLAY | ledPLAYER1 | ledPLAYER2 | ledPLAYER3); // isejimai LED'ams
DDRB &= ~(btnPLAY | btnPL123); // iejimai klavisams
PORTB |= (btnPLAY | btnPL123); // ijungiam pull-up's
while (1){
PORTD &= ~(ledPLAY | ledPLAYER1 | ledPLAYER2 | ledPLAYER3);
while (PINB & btnPLAY); // laukiam PLAY paspaudimo
delay_ms(50); // del klavisu "traskesio"
while (!PINB & btnPLAY); // laukiam PLAY atleidimo
delay_ms(random(1000)); // random reikia pasitikrinti
PORTD |= ledPLAY;
while ((b=PINB & (btnPLAY | btnPL123))==(btnPLAY | btnPL123)); // laukiam bet kurio klaviso
if (!b & btnPLAY) { // klaida
while (!PINB & btnPLAY);
delay_ms(1000);
continue;
}
PORTD &= ~ledPLAY;
if (!b & btnPLAYER1) PORTD |= ledPLAYER1;
if (!b & btnPLAYER2) PORTD |= ledPLAYER2;
if (!b & btnPLAYER3) PORTD |= ledPLAYER3;
delay_ms(1000);
while (!PINB & btnPL123); laukiam kol visi paleis mygtukus
}//while(1)
}
|
nera realizuota logika, patikrinanti ar nepaspaude klavisu vienu metu keli zaidejai. |
|
Paskutinį kartą redagavo AlgisL, 2012 10 31, 16:28. Redaguota 2 kartus(ų) |
|
|
|
 |
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 15:19 |
|
|
|
|
dekui, bet patvarkius ir irasius jokiu veiksmu spaudinejant migtukus.tik PD0 ciut sviecia.
as naudoju winavr, gal megint su kita programa rasyt ar kompiliuot? |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 16:34 |
|
|
|
|
while (!PINB & btnPL123); laukiam kol visi paleis mygtukus
}//while(1)
su tuo while viskas cia gerai? nes jis gaunasi kaip komentaras
kimba prie "random"
ain.c:24: warning: implicit declaration of function 'random'
ji istrynus paspaudus PB0 uzsidega PD0, ir tada paspaudus bet koki migtuka jis uzgesta, daugiau nieko |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 19:09 |
|
|
|
|
#include <stdlib.h>
delay_ms(1000+rand()/128); //arba kazkas panasaus
o kur pas tave kiti klavisai ir led'ai pajungti? |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 20:00 |
|
|
|
|
vis tiek tas pats.
ledai ant PD0.PD1,PD2,PD3
migtukai PB0,PB1,PB2,PB3 |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 20:26 |
|
|
|
|
manau kad cia kazkas negerai kazkur kitur, parasius
#include <avr/io.h>
#include <util/delay.h>
unsigned int a;
int main( void )
{
DDRD |=1 <<PIND0;
DDRB &= ~(1<<PINB0);
PORTB|=1<<PINB0;
a=0;
while (1){
if (a=1)
{if(bit_is_clear(PINB,0))
{PORTD|=1<<PIND0;}
}
}}
kadangi a=0 tai daugiau niekas turetu nevykti, bet paspaudus migtuka ledas uzsidega. arba as nesuprantu mikrovaldikliuprogramavimo, arba cia kazkur kitur kazkas negerai. |
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 10 31, 23:28 |
|
|
|
|
o cia kas tavo manymu?
| Citata: |
DDRD |= (ledPLAY | ledPLAYER1 | ledPLAYER2 | ledPLAYER3); // isejimai LED'ams
DDRB &= ~(btnPLAY | btnPL123); // iejimai klavisams
PORTB |= (btnPLAY | btnPL123); // ijungiam pull-up's
|
|
|
|
|
|
|
 |
atMega8 ir max232 |
Parašytas: 2012 11 02, 16:29 |
|
|
|
|
| AlgisL rašo: |
o cia kas tavo manymu?
| Citata: |
DDRD |= (ledPLAY | ledPLAYER1 | ledPLAYER2 | ledPLAYER3); // isejimai LED'ams
DDRB &= ~(btnPLAY | btnPL123); // iejimai klavisams
PORTB |= (btnPLAY | btnPL123); // ijungiam pull-up's
|
|
atleisk bet tikrai nesuprantu ka tu tuo norejai pasakyti.
tavo sisuta koda irasyt meginau bet kas vyksta rasiau anksciau.
todel pagalvojau kad kazkas negerai kitur(kompiliavime, optimizavime ar dar kur) todel parasiau ta programa kuri turetu neleist uzsidekti ledui nes a=0 bet jis vistiek uzsidega. |
|
|
|
|
|
 |
 |
atMega8 ir max232 |
Parašytas: 2012 11 02, 19:45 |
|
|
|
|
Dekui visiem , pasiekiau ko norejau.
jei kam idomu: #include <avr/io.h>
unsigned int a;
int main( void ){
DDRD |=(1 <<PIND0|1 <<PIND1|1 <<PIND2|1 <<PIND3);
DDRB &= ~(1<<PINB0|1<<PINB1|1<<PINB2|1<<PINB3);
PORTB|=(1<<PINB0|1<<PINB1|1<<PINB2|1<<PINB3);
while (1){
if(bit_is_clear(PINB,0)&&a==0)
{PORTD|=1<<PIND0;
a=1;}
if(bit_is_clear(PINB,1)&&a==0)
{PORTD|=1<<PIND1;
a=1;}
if(bit_is_clear(PINB,2)&&a==0)
{PORTD|=1<<PIND2;
a=1;}
if(bit_is_clear(PINB,3)&&a==0)
{PORTD|=1<<PIND3;
a=1;}}}
Paprasta bet veikia |
|
|
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
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 |
|

|
 |