Hello,
I have a strange thing going on here...
I try to decode serial information (shift register) to 2 seven-segment displays.
This is the code:
Code:
DEFINE OSC 8
CMCON = 7
TRISA = %11111100 ' PORTA.0 and PORTA.1 = Outputs (Anodes Displays)
TRISB = %00000000 ' PORTB = Outputs (Cathodes Displays)
W Var Word ' Variable for ShiftIn
PORTB = 255 ' All Cathodes High, display off
PORTA.0 = 0 ' Anode Low, display off
PORTA.1 = 0 ' Anode Low, display off
' PORTA.2 = Clock in
' PORTA.3 = Data in
' PORTA.4 = Latch in
MainLoop:
ShiftIn PORTA.3, PORTA.2, 0, [W\16]
WaitLoop: ' Wait for the Latch to go High
If PORTA.4 = 0 then Waitloop
PORTB = (W & 255) XOR 255 ' PORTB = Lowest 8 Bits
PORTA.0 = (W >> 8) & 1 ' PORTA.0 = Anode display
PORTA.1 = (W >> 8) & 2 ' PORTA.1 = Anode display
Goto MainLoop
The strange thing is that PORTA.2, although configured as input, is changed to an output!
If a comment the 'ShiftIn' out, PORTA.2 stays an input.
I am sure I am overlooking something, but what????
Bookmarks