From: SourceForge.net <no...@so...> - 2011-01-18 00:46:35
|
Bugs item #3160401, was opened at 2011-01-18 00:46 Message generated for change (Tracker Item Submitted) made by hpoetzl You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3160401&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: pic16 target Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Herbert Pötzl (hpoetzl) Assigned to: Nobody/Anonymous (nobody) Summary: (val + 2) & 0x1 always even? Initial Comment: basically loop for (val=0; val<16; val++) and output to pin (led) like this: LED_PIN = val & 0x1; results in blinking led while LED_PIN = (val + 2) & 0x1; results in dark led code generated looks complicated and strange ... compiled with --use-non-free -mpic16 -p18f26j50 --- bug01_good.asm 2011-01-18 01:41:44.000000000 +0100 +++ bug01_bad.asm 2011-01-18 01:41:32.000000000 +0100 @@ -466,10 +466,16 @@ _00112_DS_: MOVLW 0x10 SUBWF r0x00, W BC _00116_DS_ -; .line 35; bug01.c LED_PIN = val & 0x1; +; .line 37; bug01.c LED_PIN = (val + 2) & 0x1; + MOVFF r0x00, r0x01 + CLRF r0x02 + MOVLW 0x02 + ADDWF r0x01, F + BTFSC STATUS, 0 + INCF r0x02, F MOVLW 0x01 - ANDWF r0x00, W - MOVWF r0x01 + ANDWF r0x01, F + CLRF r0x02 MOVF r0x01, W ANDLW 0x01 MOVWF PRODH ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3160401&group_id=599 |