I haven't looked closely at the specific data sheet., but the general pattern for 3-wire devices is this: Pull CS slow. This tells the device to start expecting the data bits. Clock in the data bits, however many there are. Bring CS high. This tells the device that all the data has been entered and it can act on it. So... to answer your questions: > Bob > Ive been trying to figure out how to do this with the maz7219. Do I need > to keep cs low at all times or does it toggle back and forth every 16 bits. Toggle it back and forth > also what i need know is i have set up two registier to do a 16 bit rrf to > stuff info in and pull it out for display. This chip expects the hi bits first, so you have to use RLF instead of RRF. See below >Do i set the cs low right after i > initialize porta and b ? as described above, no. Code, slightly modified, as per Bob Blick (warning untested!) ; DATA on PORTB,7 ; CLOCK on PORTB,6 ; CS on PORTB,5 ; data to send in srlo,srhi ; uses temporary register "count" ; does not trash srlo or srhi bcf PORTB,5 ; activate CS movlw .17 ; 1 per bit, plus one extra movwf count goto ROTATE LOOP: bsf PORTB,6 ; toggle clock nop bcf PORTB,6 ROTATE: rlf srlo,F ; rotate 16-bit value, hi bit to carry rlf srhi,F skpnc ; copy carry to data pin bsf PORTB,7 skpc bcf PORTB,7 decfsz count goto LOOP bsf PORTB,5 ; deactivate CS return Bob Ammerman RAm Systems -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.