I can see what you are trying to do. Basically, you have an integer that you want to put on 2 x 8 bit shift registers. The integer will change based on the pattern you want displayed. This is straightforward like you're doing it now. But, if you wish to light each LED one by one depending on the input word, this will do it
this line will let you light 1 led at a time (dot mode)Code:outputword var word ' this goes to the shift registers bitpos var word ' roll the bit you wish to mask out Main: serin portc.7,6,lowbyte 'sit and wait for an input serin portc.7,6,highbyte 'sit and wait for an input outdata.lowbyte = lowbyte outdata.highbyte = highbyte if outdata = 0 then ' pause time according to turning on or off Tptime = 0 else Tptime = ptime 'from eprom endif bitpos = 1 FOR LoopCount = 1 to 16 ' for each bit of the input OutputWord = bitmask & bitpos gosub SyncSend bitpos = bitpos << 1 ' move the bit 1 place to the left ' so that we can read the next bit pause TPtime ' wait for the pause time you want next GOTO Main ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ;----[Send synchronous data]------------------------------------------------ SyncSend: SHIFTOUT SDout, SClk, 1,[OutputWord\16] HIGH Strobe ; strobe the shift registers latches @ NOP ; hold Strobe for 1uS LOW Strobe ; Strobe idles LOW RETURN
bitpos = bitpos << 1 ' move the bit 1 place to the left so that we can read the next bit
But this will let you retain the ones that are already lit (bar mode)
bitpos = bitpos << 1 +1 ' move the bit 1 place to the left so that we can read the next bit and retain the one that was on previously




Bookmarks