Fórum témák

» Több friss téma
Cikkek » Jelzőlámpa AVR-el
Jelzőlámpa AVR-el
Szerző: KDavid753, idő: Aug 24, 2014, Olvasva: 15284, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   4 / 6

A kódba nem írtam magyarázatokat, azt megtette más.

  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. #define RED_ON() PORTB |= (1<<PB4)
  5. #define RED_OFF() PORTB &= ~(1<<PB4)
  6.  
  7. #define YEL_ON() PORTB |= (1<<PB3)
  8. #define YEL_OFF() PORTB &= ~(1<<PB3)
  9.  
  10. #define GRN_ON() PORTB |= (1<<PB5)
  11. #define GRN_OFF() PORTB &= ~(1<<PB5)
  12. #define G_RED_ON() PORTB |= (1<<PB1)
  13. #define G_RED_OFF() PORTB &= ~(1<<PB1)
  14. #define G_GRN_ON() PORTB |= (1<<PB2)
  15. #define G_GRN_OFF() PORTB &= ~(1<<PB2)
  16.  
  17. void m_delay_10ms(unsigned long val) {
  18.    while(val--) _delay_ms(10);
  19. }
  20. void m_delay_fl(unsigned long val2) {
  21.    while(val2--){
  22.       G_GRN_OFF();
  23.       m_delay_10ms(5);
  24.        G_GRN_ON();
  25.        m_delay_10ms(5);
  26.     }
  27. }
  28.  
  29. int main(void) {
  30. uint8_t state;
  31.  
  32.  DDRB = (1<<PINB1)|(1<<PINB2)|(1<<PINB3)|(1<<PINB4)|(1<<PINB5);
  33.  DDRB &= ~(1 << PB0);
  34.  PORTB |= (1 << PB0);
  35.  
  36.  state = 0;
  37.  while(1) {
  38.     switch(state) {
  39.        case 0: RED_OFF();
  40.                    YEL_OFF();
  41.                   GRN_ON();
  42.                   G_RED_ON();
  43.                   G_GRN_OFF();
  44.                   while(PINB & (1 << PB0)){}
  45.                   m_delay_10ms(200);
  46.                   state++;
  47.                   break;
  48.  
  49.        case 1: YEL_ON();
  50.                    GRN_OFF();
  51.                    m_delay_10ms(25);
  52.                    state++;
  53.                    break;
  54.  
  55.       case 2: YEL_OFF();
  56.                    RED_ON();
  57.  
  58.       case 3: G_GRN_ON();
  59.                    G_RED_OFF();
  60.                    m_delay_10ms(110);
  61.                    m_delay_fl(4);
  62.                    state++;
  63.                    break;
  64.  
  65.       case 4: YEL_ON();
  66.                    G_RED_ON();
  67.                    G_GRN_OFF();
  68.                    m_delay_10ms(25);
  69.                    state++;
  70.                    break;
  71.  
  72.        default: state = 0;
  73.                    }
  74.       }
  75.       return 0;
  76. }


A cikk még nem ért véget, lapozz!
Következő: »»   4 / 6
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem