I used the wiring above for pins D.1, D.2 and D.3 on a 16F877 and it didn't work as expected.
I get 3 LEDs blinking faintly instead of a single one. It seems as if the current loops over to the unused pin and comes back.
I'll have to check out your thread. I must be missing something.
Code:
' Blink 6 LEDs connected to Port D.1, D.2 and D.3 in charlie-plex manner
' PIC 16F877 ext osc 20MHz
' PBP v2.60c
' MPASM v5.49
' MCS+ v2.1.0.7
' U2 programmer v4.32
asm
__config _HS_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF
endasm
DEFINE OSC 20
ADCON1 = 7 ' Set Ports to digital
TRISA = %00000000 ' Set all Ports to output
TRISB = %00000000
TRISC = %00000000
TRISD = %00000000
TRISE = %00000000
PORTA = %00000000 ' Set ports OFF
PORTB = %00000000
PORTC = %00000000
PORTD = %00000000
PORTE = %00000000
pause 100
mainloop:
TRISD = %11111001 ' Enable pins D.1 and 2
PORTD = %00000100 ' Turn ON pin D.2 --> D.1
pause 500
PORTD = %00000010 ' Turn ON pin D.1 --> D.2
pause 500
; TRISD = %11110101 ' Enable pins D.1 and 3
; PORTD = %00001000 ' Turn ON pin D.3 --> D.1
; pause 500
; PORTD = %00000010 ' Turn ON pin D.1 --> D.3
; pause 500
; TRISD = %11110011 ' Enable pins D.2 and 3
; PORTD = %00000100 ' Turn ON pin D.2 --> D.3
; pause 500
; PORTD = %00001000 ' Turn ON pin D.3 --> D.2
; pause 500
TRISD = %11111111 ' All pins disabled
pause 500
goto mainloop
End
Robert
Bookmarks