C'den BASIC'e

Başlatan ei, 12 Haziran 2012, 01:29:21

ei

Merhaba,
C bölümüne BASIC sorusu sormak hele de ATMEL için yazılmış bir kodla alâkalı uygun görünmese de, en uygun buraya yazabileceğimi düşündüm.
CANON DSLR makina için yapılmış bir uzaktan kumanda devresinde ATTINY25 kullanılmış ve kodlar da C ile yazılmış.
Aşağıdaki kod ne anlama geliyor tam bilebilirsem, proton ile yeniden oluşturabilrim diye düşünüyorum.

Teşekkürler.
-----------------------------------
#define F_CPU 7900000 // clock frequency, set according to clock used!

#include <inttypes.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define HPERIOD 0.01524
#define RATIO 0.4
#define NPULSES 16

#define LEDOFF 0b00000001
#define LEDON  0b00010111


int main(void)
{
   uint8_t i;

   DDRB  = 0b00010110; // pin PB0 is input, pins PB1-PB4 are output
   PORTB = 0b00000001; // pull-up for input pin PB0
   asm volatile ("nop");
   asm volatile ("nop");

   if ( PINB & (1<<PINB0) )
   {

       for(i=0;i<NPULSES;i++)
      {
         PORTB = LEDON;
         _delay_ms(HPERIOD);
         PORTB = LEDOFF;
         _delay_ms(HPERIOD);
      }

      _delay_ms(7.33); // instant

      for(i=0;i<NPULSES;i++)
      {
         PORTB = LEDON;
         _delay_ms(HPERIOD);
         PORTB = LEDOFF;
         _delay_ms(HPERIOD);
      }   
   }
   else
   {
       for(i=0;i<NPULSES;i++)
      {
         PORTB = LEDON;
         _delay_ms(HPERIOD);
         PORTB = LEDOFF;
         _delay_ms(HPERIOD);
      }

      _delay_ms(5.36); // delayed

      for(i=0;i<NPULSES;i++)
      {
         PORTB = LEDON;
         _delay_ms(HPERIOD);
         PORTB = LEDOFF;
         _delay_ms(HPERIOD);
      }

   }

   set_sleep_mode(SLEEP_MODE_PWR_DOWN);
   sleep_mode();

}
--------------------------------------