 |

|
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 05 11, 21:20. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Programavimas » 2 mygtukai - Impulsu skaičiuotuvas (Atmega8)
|
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
|
|
|
 |
 |
 |
2 mygtukai - Impulsu skaičiuotuvas (Atmega8) |
Parašytas: 2017 03 23, 07:06 |
|
|
|
Sveiki,
Reikia skubios pagalbos, programuoju impulsų skaičiuotuvą. Kaip reiktų užbaigt kodą, kad kiekvieną kartą paspaudus pirmą mygtuką skaičius (sk) padidėtų vienu, o paspaudus antrą mygtuką padidėtų 10 (sk+10). Šiuo metu sugebėjau padaryt, kad veiktų tik pirmas mygtukas.
https://scontent.fbud2-1.fna.fbcdn.net/v/t1.0-9/17426394_1526161207428234_4110073502016504401_n.jpg?oh=413a2663d74676e5f9476660a22e2945&oe=595031FA
Kodas: |
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
unsigned char a[10]= {126,12,182,158,204,218,250,14,254,222}; //0,1,2,3,4,5,6,7,8,9,.
volatile unsigned char sk;
unsigned char s,x,i;
char vienetai(char x)
{
return x%10;
}
char desimtys(char x)
{
return x/10;
}
int main(void)
{
DDRD=254;
DDRC=48;
TIMSK |= (1 << TOIE0);
TCCR0 |= (1 << CS02);
sei();
sk=0;
while(1)
{
while ((PINB & (1<<PB0)) != 0);
while ((PINB & (1<<PB0)) == 0);
if (sk == 99) sk = 0;
sk++;
}
}
ISR(TIMER0_OVF_vect)
{
s++;
if (s == 1)
{
PORTC=0;
PORTD=a[desimtys(sk)];
PORTC=32;
}
else if (s == 2)
{
PORTC=0;
PORTD=a[vienetai(sk)];
PORTC=16;
s=0;
}
}
|
|
|
|
|
|
 |
 |
2 mygtukai - Impulsu skaičiuotuvas (Atmega8) |
Parašytas: 2017 03 23, 11:00 |
|
|
|
tranzistoriai bent jau su bias rezistorium, pvz pdtc114 ?
Kodas: |
#define PIN_MASK ( (1<<PB1) | (1<<PB0) )
volatile unsigned char vienetai=0, desimtys=0;
unsigned char buttons;
// PB0, PB1 with pull-up
DDRB &= ~PIN_MASK;
PORTB |= PIN_MASK;
//............
while ( PIN_MASK == ( buttons = PIN_MASK & PINB ) );
if ( !( (1<<PB0) & buttons ) ) {
if ( 99 > sk ) sk++;
else sk = 0;
}
if ( !( (1<<PB1) & buttons ) ) {
if ( 89 > sk ) sk += 10;
else sk = 0;
}
desimtys = a[sk / 10];
vienetai = a[sk % 10];
_delay_ms( 50 );
while ( PIN_MASK != ( PIN_MASK & PINB ) );
//.............
ISR(TIMER0_OVF_vect){
static unsigned char s=0;
if (0 != s) {
PORTC &= (1<<PC4);
PORTD = desimtys;
PORTC |= (1<<PC5);
s = 0;
} else {
PORTC &= (1<<PC5);
PORTD = vienetai;
PORTC |= (1<<PC4);
s = 1;
}
}
|
|
|
|
|
|
|
 |
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 |
 |
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 |
|

|
 |