#include <Arduino.h>
void delay_1ms(){
//הפונ' עושה 250*21 קלוקים בשביל השהייה
asm volatile(
"ldi r20,21\n"
"outer_loop:\n"// לופ חיצוני
"ldi r19,250\n"
"inner_loop:\n"// לופ פנימי
"dec r19\n"// dec==מוריד את הערך ב1
"brne inner_loop\n"// תקפוץ אם לא 0
"dec r20\n"
"brne outer_loop\n"// תקפוץ אם לא שווה ל0
"nop\n"
);
};
// הפונ' קוראת לפונ' של הדיליי ואומרת לה כמה פעמים לעשות את זה
void delay_ms(uint16_t ms){
for(uint16_t i=0; i<ms+5;i++){
delay_1ms();
}
};
void setup() {
Serial.begin(9600);// מאתחל תקשורת סדרתית
DDRB= 0xFF;//מגדיר את פורט בי כיציאה
}
void loop() {
unsigned long t1 = millis();//נק זמן בעת תחילת ביצוע ההוראה
delay_ms(1000);
unsigned long t2 = millis();//נק זמן בעת סוף ביצוע ההוראה
Serial.print("TIME TAKEN BY THE TASK: ");
Serial.print(t2-t1);
Serial.println("milliseconds");
PORTB ^=0xFF;
delay_ms(1000);
}