The following code executes correctly on a PIC16F877A at 20 MHz but not on a PIC18F8722 at 10 or 40 MHz:
Code:
clear
DEFINE OSC 40 ' Run on PIC18F8722 using HSPPL
ADCON1 = $0F ' Set PortA to digital
TRISB=0 ' Make Port B outputs
PORTB=0 ' Clear the port
X var byte
Loop:
PORTB=$0
FOR X = 0 to 3
IF X<1 THEN PORTB=$F0
IF X>1 AND X<3 THEN PORTB=$3C
IF X>2 THEN PORTB=$0F
PAUSE 1000
NEXT X
GOTO Loop
Please note:
1. With two IF...THENs inside the loop - all is OK.
2. I know that it would be easier to use
IF X=1 THEN....
IF X=2 THEN...
Etc, but this is a simplification of my real code.
3. I've tried a lot of variations but anything with multiple (>2) IF....THENs inside the loop will not work.
4. LEDs on PORTB work OK with
FOR X=0 TO 255
PORTB=X
NEXT X
5. Going nuts on this. What am I missing?
Regards Bill Legge
Bookmarks