first of all i do not understand why one would make a pcb without first testing on breadboard or proto.
we have numerous good boards for this. and there exist numerous others as well.
but ok, you are not the first and this happens more people. (i was so dumb once to mirror a port).
to use a port like that is not a real good idea because an LCD need to be updated quick as possible.
but ok, here is how to:
- edit the lib
- look for : * Out _glcd_port , R24 ; Write
-replace by :
CBI portd,5
cbi portd,6
; do this for all 8 pins
; so last is
cbi portc,4
;now all pins are low
sbrc r24,0 ; skip if bit was 0
sbi portd,5 ; set bit
sbrc r24,1 ; skip if bit was 1
sbi portd,6
do this for all other 6 pins
then :
Out _glcd_port_ddr, R25 ; read direction
must be changed in code that clears all DDR bit
cbi ddrD,5
* Out _glcd_port , R25 ; read pull ups high
must be changed in code that set all pins high
sbi portd,6
and : * In r1, _glcd_port_in ; get byte
can be done like
clr r25
sbic pind,5
sbr r25, 1
sbic pind,6
sbr r25,2 ; power
sbic ...
sbr r25,4 ; 8,16,32,64,128
mov r1,r25
ser r25
that is one way to do it.
alternatively you can read the port, use AND and some shifts and then write it back.
maybe someone with more time can help you.
↧