#declear the variables PROJECT=MOMANI3 SOURCES=$(PROJECT).c MMCU=attiny44 F_CPU = 20000000 CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU) #create set of parameters for the compiler (clock, MCU) of the variable FLAG so in this case we dont have to add the parameters in each system command. $(PROJECT).hex: $(PROJECT).out avr-objcopy -O ihex $(PROJECT).out $(PROJECT).c.hex;\ #In the all system commands we have to consider the tap space, every command has a tap space, this command to copy and translate object files avr-size --mcu=$(MMCU) --format=avr $(PROJECT).out #size utility lists the section sizes $(PROJECT).out: $(SOURCES) avr-gcc $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES) # we used the gcc compiler to compile the source file which written in C program-usbtiny: $(PROJECT).hex avrdude -p t44 -P usb -c usbtiny -U flash:w:$(PROJECT).c.hex #to upload the executable file program-usbtiny-fuses: $(PROJECT).hex avrdude -p t44 -P usb -c usbtiny -U lfuse:w:0x1F:m #to upload the settings of the fuses