Looking at compiled code to determine how many loops to execute to
make a 1 ms delay
Here is the delay function:
void delay(int num) { int i; while (num>0) /* Out loop delays num ms */ { i = 1333; /* Inner loop takes 6 cycles */ while (i > 0) /* 1333 times 6 = 1 ms */ { i = i-1; } num = num - 1; } }Here is the mahcine code:
; 27 void delay(int num) 0851 _delay: 0851 3b pshd 0852 3b pshd 00000002 OFST: set 2 0853 200d bra L55 0855 L35: 0855 cd0535 ldy #1333 0858 L16: 0858 03 dey <----- 1 0859 6d80 sty OFST-2,s | 2 085b 2efb bgt L16 ------ 3/1 085d ed82 ldy OFST+0,s 085f 03 dey 0860 6d82 sty OFST+0,s 0862 L55: 0862 ec82 ldd OFST+0,s 0864 2eef bgt L35 0866 1b84 leas 4,s 0868 3d rtsThe inner loop consists of the three instructions:
0858 L16: dey 0859 6d80 sty OFST-2,s 085b 2efb bgt L16This takes 6 cycles. 1 ms is 8000 cycles, so to wait for 1 ms, execute this loop 8000/6 = 1333 times.