This has picked my curiosity, so here's a little benchmark test
Interesting eh!IF-THEN-ELSE: 432 WORDS, 1608 UsEC
FOR-TO-NEXT: 103 WORDS, 2241 UsEC
REPEAT - UNTIL: 99 WORDS, 2200 UsEC
WHILE - WEND: 101 WORDS, 2225 UsEC
and the code to evaluate it, Darrel may recognize some of his tricks
Is it me, or i see some interrogation mark over some head?Code:<font color="#000000"> @ __CONFIG _XT_OSC & _LVP_OFF <font color="#000080">DEFINE </font>HSER_RCSTA 90h <font color="#008000">' Enable serial port & continuous receive </font><font color="#000080">DEFINE </font>HSER_TXSTA 24h <font color="#008000">' Enable transmit, BRGH = 1 </font><font color="#000080">DEFINE </font>HSER_SPBRG 25 <font color="#008000">' 9600 Baud @ 4MHz, 0.16% </font>@TMR1=TMR1L TMR1 <font color="#000080">VAR WORD </font>EXT T1CON = 0 ML_Value <font color="#000080">VAR BYTE</font>[8] Summe_Alarm <font color="#000080">VAR BYTE </font>TEMP <font color="#000080">VAR BYTE </font>ADDR <font color="#000080">VAR WORD </font>TWOCHAR <font color="#000080">VAR WORD </font>CHAR <font color="#000080">VAR BYTE </font>size <font color="#000080">VAR WORD GOTO </font>START <font color="#000080">ASM SIZESTART macro MOVE?CT 0,T1CON,TMR1ON </font><font color="#008000">; Stop timer </font><font color="#000080">MOVE?CW 0,TMR1 </font><font color="#008000">; clear Timer value </font><font color="#000080">BLOCKSTART = $ </font><font color="#008000">; set CodeBlock Start address </font><font color="#000080">MOVE?CT 1,T1CON,TMR1ON </font><font color="#008000">; start Timer </font><font color="#000080">ENDM SIZEEND MACRO BLOCKNAME MOVE?CT 0, T1CON,TMR1ON </font><font color="#008000">; stop timer </font><font color="#000080">MOVE?CW ($ - BLOCKSTART - 2), _size </font><font color="#008000">; calculate code block size ; remove 2 word for timerstart/stop </font><font color="#000080">LOCAL STRING,JUMPSTRING GOTO JUMPSTRING STRING DA BLOCKNAME,0 </font><font color="#008000">; store codeblock name </font><font color="#000080">JUMPSTRING CHK?RP _ADDR MOVE?CW STRING,_ADDR </font><font color="#008000">; get string sddress </font><font color="#000080">L?CALL _DisplayResult </font><font color="#008000">; show results via serial comm </font><font color="#000080">endm ENDASM </font>START: <font color="#000080">@ SIZESTART IF </font>(ML_Value[0] <= $5A) <font color="#000080">OR </font>(ML_Value[0] => $82) <font color="#000080">THEN </font>Summe_Alarm.0 = 1 <font color="#000080">IF </font>(ML_Value[1] <= $5A) <font color="#000080">OR </font>(ML_Value[1] => $82) <font color="#000080">THEN </font>Summe_Alarm.1 = 1 <font color="#000080">IF </font>(ML_Value[2] <= $5A) <font color="#000080">OR </font>(ML_Value[2] => $82) <font color="#000080">THEN </font>Summe_Alarm.2 = 1 <font color="#000080">IF </font>(ML_Value[3] <= $5A) <font color="#000080">OR </font>(ML_Value[3] => $82) <font color="#000080">THEN </font>Summe_Alarm.3 = 1 <font color="#000080">IF </font>(ML_Value[4] <= $5A) <font color="#000080">OR </font>(ML_Value[4] => $82) <font color="#000080">THEN </font>Summe_Alarm.4 = 1 <font color="#000080">IF </font>(ML_Value[5] <= $5A) <font color="#000080">OR </font>(ML_Value[5] => $82) <font color="#000080">THEN </font>Summe_Alarm.5 = 1 <font color="#000080">IF </font>(ML_Value[6] <= $5A) <font color="#000080">OR </font>(ML_Value[6] => $82) <font color="#000080">THEN </font>Summe_Alarm.6 = 1 <font color="#000080">IF </font>(ML_Value[7] <= $5A) <font color="#000080">OR </font>(ML_Value[7] => $82) <font color="#000080">THEN </font>Summe_Alarm.7 = 1 <font color="#000080">IF </font>(ML_Value[0] > $5A) <font color="#000080">AND </font>(ML_Value[0] < $82) <font color="#000080">THEN </font>Summe_Alarm.0 = 0 <font color="#000080">IF </font>(ML_Value[1] > $5A) <font color="#000080">AND </font>(ML_Value[1] < $82) <font color="#000080">THEN </font>Summe_Alarm.1 = 0 <font color="#000080">IF </font>(ML_Value[2] > $5A) <font color="#000080">AND </font>(ML_Value[2] < $82) <font color="#000080">THEN </font>Summe_Alarm.2 = 0 <font color="#000080">IF </font>(ML_Value[3] > $5A) <font color="#000080">AND </font>(ML_Value[3] < $82) <font color="#000080">THEN </font>Summe_Alarm.3 = 0 <font color="#000080">IF </font>(ML_Value[4] > $5A) <font color="#000080">AND </font>(ML_Value[4] < $82) <font color="#000080">THEN </font>Summe_Alarm.4 = 0 <font color="#000080">IF </font>(ML_Value[5] > $5A) <font color="#000080">AND </font>(ML_Value[5] < $82) <font color="#000080">THEN </font>Summe_Alarm.5 = 0 <font color="#000080">IF </font>(ML_Value[6] > $5A) <font color="#000080">AND </font>(ML_Value[6] < $82) <font color="#000080">THEN </font>Summe_Alarm.6 = 0 <font color="#000080">IF </font>(ML_Value[7] > $5A) <font color="#000080">AND </font>(ML_Value[7] < $82) <font color="#000080">THEN </font>Summe_Alarm.7 = 0 <font color="#000080">@ SIZEEND "IF-THEN-ELSE" @ SIZESTART FOR </font>TEMP = 0 <font color="#000080">TO </font>7 <font color="#000080">IF </font>(ML_Value[TEMP] <= $5A) <font color="#000080">OR </font>(ML_Value[TEMP] => $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 1 <font color="#000080">IF </font>(ML_Value[TEMP] > $5A) <font color="#000080">AND </font>(ML_Value[TEMP] < $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 0 <font color="#000080">NEXT </font>TEMP <font color="#000080">@ SIZEEND "FOR-TO-NEXT" @ SIZESTART </font>TEMP = 0 <font color="#000080">REPEAT IF </font>(ML_Value[TEMP] <= $5A) <font color="#000080">OR </font>(ML_Value[TEMP] => $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 1 <font color="#000080">IF </font>(ML_Value[TEMP] > $5A) <font color="#000080">AND </font>(ML_Value[TEMP] < $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 0 TEMP=TEMP+1 <font color="#000080">UNTIL </font>TEMP = 8 <font color="#000080">@ SIZEEND "REPEAT - UNTIL" @ SIZESTART </font>TEMP = 0 <font color="#000080">WHILE </font>TEMP!=8 <font color="#000080">IF </font>(ML_Value[TEMP] <= $5A) <font color="#000080">OR </font>(ML_Value[TEMP] => $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 1 <font color="#000080">IF </font>(ML_Value[TEMP] > $5A) <font color="#000080">AND </font>(ML_Value[TEMP] < $82) <font color="#000080">THEN </font>Summe_Alarm.0[TEMP] = 0 TEMP=TEMP+1 <font color="#000080">WEND @ SIZEEND "WHILE - WEND" </font>here: <font color="#000080">GOTO </font>here DisplayResult: <font color="#000080">READCODE </font>ADDR, TWOCHAR CHAR = TWOCHAR >> 7 <font color="#000080">IF </font>CHAR =0 <font color="#000080">THEN </font>EndString <font color="#000080">HSEROUT</font>[CHAR] CHAR = TWOCHAR & $7F <font color="#000080">IF </font>CHAR = 0 <font color="#000080">THEN </font>EndString <font color="#000080">HSEROUT </font>[CHAR] ADDR=ADDR+1 <font color="#000080">GOTO </font>DisplayResult EndString: <font color="#000080">HSEROUT </font>[": ",<font color="#000080">DEC </font>size," WORDS, ",<font color="#000080">DEC </font>TMR1, " UsEC",13,10] <font color="#000080">RETURN </font>![]()





Bookmarks