Program dekodujący kod BCD.
Ustaw port A jako wejściowy, port B jako wyjściowy. W pętli zmieniaj wartość dwucyfrowej liczby
zapisanej w kodzie BCD na porcie A. Dekoduj liczbę na kod binarny. Wynik wystawiaj na port B
co 1 sekundę.
Zrobiłem coś takiego
Jeśli macie pomysł na jakieś poprawki to chętnie skorzystam z pomocy.
Proszę umieszczać kod w znacznikach [code]!
Przeniosłem z Programowanie Poczatkujący.
[Dr.Vee]
Ustaw port A jako wejściowy, port B jako wyjściowy. W pętli zmieniaj wartość dwucyfrowej liczby
zapisanej w kodzie BCD na porcie A. Dekoduj liczbę na kod binarny. Wynik wystawiaj na port B
co 1 sekundę.
Zrobiłem coś takiego
#define F_CPU 1000000UL // 1 MHz
#include<avr/io.h>
#include <util/delay.h>
licz_od_0_do_9() //początek pętli zliczającej od 0 do 9;
{
unsigned char x; //definicja typu zmiennej x
for (x=0;x < 9;x++) //początek pętli for
{
PORTA += 1; //zwiększamy wartość PORTA o 1
bcd2bin(); //wywołujemy konwersję bcd2bin
}
}
bcd2bin()
{
unsigned char s,t; //definicja typu zmiennych s,t
t = PORTA << 4; //przypisanie do zmiennej t wartości PORTA po przesunięciu o 4 bity w lewo
s = PORTA >> 4; //przypisanie do zmiennej s wartości PORTA po przesunięciu o 4 bity w prawo
_delay_ms(100); //opóźnienie programu o 100ms
PORTB = (s*10) + (t >> 4); //przypisanie do PORTB skonwertowanej wartości na bin
}
int main(void)
{
//ustaw PORTA jako wejściowy
DDRA = 0xff;
//ustaw PORTB jako wyjściowy
DDRB = 0x00;
unsigned char y,z; //definicja typu zmiennych y,z
for (z=0;z<10; z++) //początek pętli zliczającej od 0 do 10;
{
licz_od_0_do_9(); //wywołujemy zliczanie od 0 do 9
y = (PORTA >> 4) + 1; //przesunięcie bitowe na PORTA ze zwiększeniem wartości o 1 - wynik przypisany do zmiennej y
y =y << 4; //przesunięcie bitowe o 4 w lewo i przypisanie wyniku do zmiennej y
if (y<0x99) PORTA = y; //sprawdzenie czy zliczanie się zakończyło, jeśli tak to wyjście z programu i koniec wystawiania wyniku na PORTA
}
PORTA , PORTB = 0x00; //zerowanie PORTA i PORTB
return 0;
}Jeśli macie pomysł na jakieś poprawki to chętnie skorzystam z pomocy.
Proszę umieszczać kod w znacznikach [code]!
Przeniosłem z Programowanie Poczatkujący.
[Dr.Vee]