In SX Microcontrollers, SX/B Compiler and SX-Key Tool, Zoot wrote: It's probably the translation, but the datasheet seems a bit unclear. *My* reading, correct me if I'm wrong here, is that ABCD choose which rows are illuminated and this is scanned as a bitmap (i.e. only one bit enabled at a time). The shifted data is the "led on/off" data. The datasheet specifies a min. scan rate for ABCD. What I'm not clear on is do the rows need to be scanned to save current and because that's how the board is? Seems like you can't/are not supposed to enable all 16 rows at once. So, I *think* the INTERRUPT needs to handle enabled each row in turn: [code] rowEnabled VAR Word INTERRUPT 1000 IF rowEnabled = 0 THEN rowEnabled = %0000_0000_0000_0001 ELSE rowEnabled = rowEnabled << 1 ' shift left ENDIF RETURNINT [/code] Then you should be able shift out what you want independent of the scan enables on the rows, except you might want to dump ALL your bits and latch it all at once. All the registers share the same latch/enable, is that right? [code] SUB OUT FOR temp1 = 7 to 0 step -1 SHIFTOUT R1_Dpin, S_Cpin, MSBFIRST, ~pattern1(temp1)' send the bits SHIFTOUT R2_Dpin, S_Cpin, MSBFIRST, ~pattern2(temp1)' send the bits SHIFTOUT R3_Dpin, S_Cpin, MSBFIRST, ~pattern3(temp1)' send the bits SHIFTOUT R4_Dpin, S_Cpin, MSBFIRST, ~pattern4(temp1)' send the bits NEXT PULSOUT L_Latch, 1 ' transfer to outputs ENDSUB [/code] I think that would also help minimize ghosting. Not sure this helps.... ---------- End of Message ---------- You can view the post on-line at: http://forums.parallax.com/forums/default.aspx?f=7&p=1&m=273480#m273582 Need assistance? Send an email to the Forum Administrator at forumadmin@parallax.com The Parallax Forums are powered by dotNetBB Forums, copyright 2002-2008 (http://www.dotNetBB.com)