Czy mógłby ktoś pomóc tak zmodyfikować program:(ma działać na ATmega 128, wykonuje 16 milionów operacji)
aby uzyskac:
- miganie diody LED z czestotliwoscia około 0,5 Hz (należy wykorzystać pustą
petle for… odpowiednia ilosc razy)
- wyswietlanie numeru wcisnietego klawisza na diodach LED w kodzie
binarnym, ma być 7 diod LED.
Próbuje go testować na AVR GCC + hapsim, ale jakoś nie wychodzi.
aby uzyskac:
- miganie diody LED z czestotliwoscia około 0,5 Hz (należy wykorzystać pustą
petle for… odpowiednia ilosc razy)
- wyswietlanie numeru wcisnietego klawisza na diodach LED w kodzie
binarnym, ma być 7 diod LED.
Próbuje go testować na AVR GCC + hapsim, ale jakoś nie wychodzi.
// Sterowanie dioda LED podłaczona do dowolnej linii mikrokontorlera
// za pomoca przycisku podłaczonego do dowolnej linii minie działakrokontrolera
#include <avr/io.h> // dostep do rejestrów
#define DDR(x) _SFR_IO8(_SFR_IO_ADDR(x)-1) // adr. rej. kier. PORTx
#define PIN(x) _SFR_IO8(_SFR_IO_ADDR(x)-2) // adr. rej. wej. PORTx
#define LED_PORT PORTD // port diody LED
#define LED_BIT 4 // bit diody LED
#define LED_PORT_O LED_PORT // rejestr wyjsciowy
#define LED_PORT_D DDR(LED_PORT) // rejestr kierunkowy
#define LED_PORT_I PIN(LED_PORT) // rejestr wejsciowy
#define KEY_PORT PORTD // port przycisku
#define KEY_BIT 3 // bit przycisku
#define KEY_PORT_O KEY_PORT // rejestr wyjsciowy
#define KEY_PORT_D DDR(KEY_PORT) // rejestr kierunkowy
#define KEY_PORT_I PIN(KEY_PORT) // rejestr wejsciowy
int main( void ) // program główny
{
sbi(LED_PORT_D,LED_BIT); // uyj linii jako wyjscia
sbi(KEY_PORT_O,KEY_BIT); //podciagnij linie do logicznej 1
while(1) // petla nieskonczona
{
cbi(LED_PORT_O,LED_BIT); // zapal diode LED
loop_until_bit_is_clear(KEY_PORT_I,KEY_BIT); //czekaj na nacisniecie przycisku
sbi(LED_PORT_O,LED_BIT); // zgas diode LED
loop_until_bit_is_clear(KEY_PORT_I,KEY_BIT); //czekaj na nacisniecie przycisku
}
}