-- This library is made to help Arduino Language programmers to migrate -- to JAL language and Jallib library include 18f2550 -- target PICmicro -- even though the external crystal is 20 MHz, the configuration is such that -- the CPU clock is derived from the 96 Mhz PLL clock (div2), therefore set -- target frequency to 48 MHz pragma target clock 48000000 -- oscillator frequency -- Now we tell to compiler that the application use bootloader and must start at 0x0800 pragma bootloader loader18 -- And that this application does not use fuses (which are defined already in bootloader) pragma fuses no -- Analog inputs alias A0 is pin_A0 alias A1 is pin_A1 alias A2 is pin_A2 alias A3 is pin_A3 alias A4 is pin_A5 -- alias A8 is pin_B2 alias A9 is pin_B3 alias A10 is pin_B1 alias A11 is pin_B4 alias A12 is pin_B0 alias A0_direction is pin_A0_direction alias A1_direction is pin_A1_direction alias A2_direction is pin_A2_direction alias A3_direction is pin_A3_direction alias A4_direction is pin_A5_direction -- A5, A6 and A7 are for 18F4550 chip alias A8_direction is pin_B2_direction alias A9_direction is pin_B3_direction alias A10_direction is pin_B1_direction alias A11_direction is pin_B4_direction alias A12_direction is pin_B0_direction -- Digital inputs/outputs alias D0 is pin_C7 alias D1 is pin_C6 alias D2 is pin_A4 alias D3 is pin_B0 alias D4 is pin_B1 alias D5 is pin_B2 alias D6 is pin_B3 alias D7 is pin_B4 alias D8 is pin_B5 alias D9 is pin_B6 alias D10 is pin_B7 alias D11 is pin_C0 alias D12 is pin_C1 alias D13 is pin_C2 -- alias D14 is pin_A0 alias D15 is pin_A1 alias D16 is pin_A2 alias D17 is pin_A3 alias D18 is pin_A5 alias D0_direction is pin_C7_direction alias D1_direction is pin_C6_direction alias D2_direction is pin_A4_direction alias D3_direction is pin_B0_direction alias D4_direction is pin_B1_direction alias D5_direction is pin_B2_direction alias D6_direction is pin_B3_direction alias D7_direction is pin_B4_direction alias D8_direction is pin_B5_direction alias D9_direction is pin_B6_direction alias D10_direction is pin_B7_direction alias D11_direction is pin_C0_direction alias D12_direction is pin_C1_direction alias D13_direction is pin_C2_direction -- alias D14_direction is pin_A0_direction alias D15_direction is pin_A1_direction alias D16_direction is pin_A2_direction alias D17_direction is pin_A3_direction alias D18_direction is pin_A5_direction -- Digital I/O procedures procedure pinMode(bit in out x, bit in y) is x = y end procedure procedure digitalWrite(bit in out x, bit in y) is x = y end procedure function digitalRead(bit in x) return bit is var byte i i = x return i end function -- Analog Input functions -- This function is compatible with Arduino Language -- Anyway, you have a better alternative with original jallib libraries function analogRead(byte in channel) return word is var word result = 0 var byte i i = 0 if (channel == 5) then channel = 8 elsif (channel == 6) then channel = 9 elsif (channel == 7) then channel = 10 end if ADCON0 = channel << 2 ADCON1 = 14 - channel ADCON2 = 0xBD ADCON0_ADON = 1 for result<10 loop assembler NOP end assembler end loop ADCON0_GO = 1 while (ADCON0_GO) loop end loop result = ADRES ADCON0_ADON = 0 return result end function -- Time -- See "delay.jal" file -- Math functions function min(dword in x, dword in y) return dword is if x < y then return x else return y end if end function function max(dword in x, dword in y) return dword is if x > y then return x else return y end if end function function constrain(dword in z, dword in x, dword in y) return dword is if z < x then return x elsif z > y then return y else return z end if end function -- insert "include math.jal" line in your code -- to have acess to "sqrt16" and "sqrt32" functions -- Random Numbers -- jallib have "random.jal" file where you find three functions: -- function random_byte returns an 8-bit random number -- function random_word returns a 16-bit random number -- function dice returns a number from 1 to 6 -- so, you just insert following line in your code: -- include random.jal -- Communication -- You can find anything about serial and USB comm. in jallib libraries.