yup.. hence why i never trust sim...
yup.. hence why i never trust sim...
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Nice work DT.
Here's one at 13 words.
Code:list p=16F628A #include "P16F628A.inc" errorlevel -302 __CONFIG _CP_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_ON & _PWRTE_ON & _LVP_OFF & _INTOSC_OSC_NOCLKOUT clrf PORTB ; clear port bsf STATUS,RP0 ; Bank 1 bcf TRISB,0 ; RB0 = output bcf OPTION_REG,0 ; 1:64 prescaler to WDT Left sleep ; go to sleep for 64 * 18mS ~1 second rlf TRISB,F ; rotate bit across portb from lsb to msb btfsc TRISB,7 goto Left Right sleep ; go to sleep for 64 * 18mS ~1 second rrf TRISB,F ; rotate bit across Portb from msb to lsb btfsc TRISB,0 goto Right goto Left ; now rotate back to the left. End
Last edited by Bruce; - 19th December 2007 at 19:17.
Oh Yeah! Very nice Bruce.
Now that's going to be hard to beat.
If you don't hear from me for a month.
You'll know what happened.![]()
DT
I just checked on my '628A on my breadboard...about a ba-zillion times...
I set up code/hardware to do nothing but RESET, and put Port B onto a bank of LEDs, Vdd on the other side of the LED.
EACH time, Port B came up ZERO...no LEDs lit up, until I set a TRIS bit for output.
So, my submission...
Coming in at 12 bytes...
Code:list p=16F628A #include "P16F628A.inc" errorlevel -302 __CONFIG _CP_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_ON & _PWRTE_ON & _LVP_OFF & _INTOSC_OSC_NOCLKOUT ; clrf PORTB ; clear port - not required on my breadboard, might be different on others bsf STATUS,RP0 ; Bank 1 bcf TRISB,0 ; RB0 = output bcf OPTION_REG,0 ; 1:64 prescaler to WDT Left sleep ; go to sleep for 64 * 18mS ~1 second rlf TRISB,F ; rotate bit across portb from lsb to msb btfsc TRISB,7 goto Left Right sleep ; go to sleep for 64 * 18mS ~1 second rrf TRISB,F ; rotate bit across Portb from msb to lsb btfsc TRISB,0 goto Right goto Left ; now rotate back to the left. End
Somebody else check this out and see what happens.
As I stated, maybe it's my breadboard, maybe it's my 628A (I've only got 1 left), maybe it's the rise time on my PSU.
EDIT: Datasheet says that the port registers come up in an unknown state. Apparently, in this case, I now know my state...
Last edited by skimask; - 19th December 2007 at 21:23.
It might work on one series, but I wouldn't count on it as being reliable across the board.
I have seen various PICs come up with totally random values in port latches at POR, so
you really do need to clear portb latches first if it's to be reliable.
i'm thinking of something using interrupt.. not sure if it could reduce things to 8-10 words... mmm..
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
I had considered that approach too, but more than half of your code space (or more) would
be eaten up with interrupt configuration setup.
Making it "reliable" with less than 13 words is going to be a real task.
Bookmarks