Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Not if you are using LATC and LATA... These were introduced to stop the RMW ( ReadModifyWrite )..jerry said it's a RWM problem with the 18f25k22
Just changing a bit it happenswhich should set the pins to normal slew rate. If you leave SLRCON set to its default the port pins are really slow to transition and that makes it worse.
PORTA = PORTB // read PORTB and write LATA
PORTA = LATB // read LATB and write LATA
I guess you don't no Jerry too He's probably wrote half of swordfish.Swordfish will read from the PORT and do all the writes to the LAT register.
;-----------------------------------
;PIC DISASSEMBLER LISTING
;Label Instruction
;-----------------------------------
GOTO L1
NOP
NOP
CLRF 0x005,A
L11: MOVWF 0x004,A
L3: MOVLW 0xFF
ADDWF 0x004,F,A
BTFSS STATUS,C,A
ADDWF 0x005,F,A
NOP
BTFSS STATUS,C,A
RETURN
MOVLW 0x03
MOVWF 0x001,A
MOVLW 0xE7
RCALL L2
BRA L3
CLRF 0x001,A
L2: ADDLW 0xFE
MOVWF 0x000,A
L8: NOP
BRA L4
L4: BRA L5
L5: CLRF WREG,A
SUBWFB 0x001,F,A
BTFSS STATUS,C,A
RETURN
DECF 0x000,F,A
BRA L6
L6: BRA L7
L7: BRA L8
L1: BSF 0x018,6,A
BRA L9
L10: MOVLB 0x0F
CLRF 0x38,BANKED
CLRF 0x39,BANKED
CLRF 0x3A,BANKED
MOVLW 0x08
MOVWF CM1CON0,A
MOVLW 0x08
MOVWF CM2CON0,A
CLRF 0x41,BANKED
CLRF SLRCON,A
MOVLB 0x00
RETURN
L9: MOVLW 0x7C
MOVWF OSCCON,A
BSF OSCTUNE,PLLEN,A
RCALL L10
CLRF TRISC,A
CLRF TRISA,A
L12: MOVLW 0x01
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x02
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x04
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x08
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x10
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x20
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x40
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
MOVLW 0x80
MOVWF LATC,A
MOVLW 0xFE
MOVWF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
CLRF LATC,A
CLRF LATA,A
MOVLW 0x01
MOVWF 0x005,A
MOVLW 0xF4
RCALL L11
BRA L12
L13: SLEEP
BRA L13
?I000000_F000_000001_M000000 ; L#MK TOGGLE(PORTA.0)
BTG LATA,0
BCF TRISA,0,0
?I000001_F000_000002_M000000 ; L#MK HIGH(PORTA.0)
BSF LATA,0,0
BCF TRISA,0,0
?I000002_F000_000003_M000000 ; L#MK LOW(PORTA.0)
BCF LATA,0,0
BCF TRISA,0,0
Device = 18F25K22 'Automatically brings in device file 18F25K22.bas
Clock = 64 '64MHz
Include "IntOSC.bas"
Include "Utils.bas"
Dim col1 As PORTC.0
Dim col2 As PORTC.1
Dim col3 As PORTC.2
Dim col4 As PORTC.3
Dim col5 As PORTC.4
Dim col6 As PORTC.5
Dim col7 As PORTC.6
Dim col8 As PORTC.7
Dim row1 As PORTA.0
Dim row2 As PORTA.1
Dim row3 As PORTA.2
Dim row4 As PORTA.3
Dim row5 As PORTA.4
Dim row6 As PORTA.5
Dim row7 As PORTA.6
Dim row8 As PORTA.7
SetAllDigital
TRISC = %00000000
TRISA = %00000000
While true
LATC = %00000001
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %00000010
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %00000100
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %00001000
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %00010000
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %00100000
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %01000000
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
LATC = %10000000
LATA = %11111110
DelayMS (500)
LATC = %00000000
LATA = %00000000
DelayMS (500)
Wend
It will clear the TRIS bit every time you use a 'toggle()', 'high()' or 'low()' command.but it's doing it more then once don't see why because I toggle the bit it doing it over
output(PORTA.0) // clears TRIS bit
LATA.0 = 1
PORTA.0 = 0 // actually writes to LATA register
SetAllDigital() just sets the analog/digital mode of the ports. It doesn't make them outputs.I sim the chip with Oshonsoft and it's showing the pins as input and set to VDD. But if I do a port write it sets them right.
SetAllDigital() has nothing to do with the osc. The osc modes and settings change from chip to chip so it's likely whatever's in your 'IntOSC.bas' file isn't correct for the 25K22. Since that's your file it's hard to say. Post it so we can see it.never figure out how to set the osc has to be something left out of my setalldegital module
Which makes it difficult to say what the original problem was.I post code but I changed it when I went to to see what setting ports did
Arrgghh!!Whats even worst is the 8x8 led I got 2 of these to play with maybe I should of got more it's bad I tried the second one and it worked fine. Pin 4 has something backward on the 8 x 8