Dusentrieb Posted November 30, 2009 Report Share Posted November 30, 2009 Hi all, Does somebody knows if its possible to change the Blm driver to drive a 16*8 (16 rows and 8 columns) button/led matrix instead a 16*4 button/led matrix ?? I tried to change the blm.inc but my assambler skills are very less. I think I have to change some in this part of blm.inc to drive all 8 SR outputs as cathode (columns). _BLM_PrepareCol ; (for C) BLM_PrepareCol ;; increment column SET_BSR blm_selected_column incf blm_selected_column, F, BANKED bcf blm_selected_column, 2, BANKED ; wrap at 4 <--- when im change the 2 into 0, 1 or 3 the voltage on the cathode outputs changes. WHY? What does this line?? ;; select next DOUT/DIN column movf blm_selected_column, W, BANKED ; (* see note below) call MIOS_HLP_GetBitANDMask ; (inverted 1 of 8 code) andlw 0x0f <--- Is this the matrix lenght. In this case 16 ??? movwf MIOS_PARAMETER1 ;; duplicate the 4 selection lines for button matrix <----- I want to cycle 8 Outputs instead 4 duplicated outputs swapf WREG, W iorwf MIOS_PARAMETER1, W ;; finally apply inversion mask (required when sink drivers are connected to cathode lines) xorlw BLM_CATHODES_INV_MASK movwf MIOS_PARAMETER1 ;; output on CATHODES* registers #if BLM_DOUT_CATHODES1 movlw BLM_DOUT_CATHODES1 - 1 call MIOS_DOUT_SRSet #endif #if BLM_DOUT_CATHODES2 movlw BLM_DOUT_CATHODES2 - 1 call MIOS_DOUT_SRSet #endif ;; store row*2 offset in IRQ_TMP1 to simplify the addressing of blm_row_green and blm_row_red array <--- Could somebody explain?? SET_BSR blm_selected_column movf blm_selected_column, W, BANKED rlf WREG, W andlw 0x06 movwf IRQ_TMP1 Could somebody help me?? PS: sorry for my less english skills. I hope you can understand what im mean. DUsentrieb Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.