CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

the bootloader looks ok but the code doesn't run
Goto page 1, 2  Next
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

the bootloader looks ok but the code doesn't run
PostPosted: Tue Sep 01, 2020 7:41 am     Reply with quote

hi i have a board with pic18f45k50 (led on C0 and C2, button on RE3 crystal 8MHz clock 32MHz USB ). The board is ok, the led blinks. Now i wish to use a bootloader by USB HID. I try MLA bootloader PIC18 Non-J C18 (the flasher is USB HID v2.90a). When i plug the board (without button pressed) the flasher recognizes the board, the led blinks. I use the flasher but my application doesn't run.
The bootloader is from 0x00 to 0xFFF.

I use CCS C compiler rev 5.015 on MPLAB X IDE.

In the firmware i insert:
Code:
#define LOADER_SIZE                 (0xFFF)
#define LOADER_START                (0)
#define LOADER_END                  (LOADER_SIZE)
#define APPLICATION_START           (LOADER_SIZE+1)
#define APPLICATION_END             (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR             (APPLICATION_START+8)

#ifndef _bootloader
 //in the application, this moves the reset and isr vector out of the bootload
 //space.  it then reserves the loader space from being used by the application.
 #BUILD(RESET=APPLICATION_START, INTERRUPT=APPLICATION_ISR)
 #org 0, LOADER_END {}
#endif


Where am i wrong?
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Tue Sep 01, 2020 10:12 am     Reply with quote

i think the problem should be in the fuses
in my firmware is:
Code:


#FUSES MCLR
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES ICSP1
#FUSES NOPROTECT                //Code not protected from reading
//#FUSES CPB
//#FUSES CPD
#FUSES BROWNOUT               //No brownout reset
#FUSES BORV22                   //Brownout reset at 2.0V
#FUSES CCP2C1                   //ccp pwm su c1
#FUSES PLLEN
#FUSES PLL4X
#FUSES NOCPUDIV
#FUSES HSH

#use delay(clock=32000000,crystal=8000000)


In the bootloader is:
Code:

 #pragma config PLLSEL   = PLL3X     // PLL Selection (3x clock multiplier)
    #pragma config CFGPLLEN = OFF       // PLL Enable Configuration bit (PLL Disabled (firmware controlled))
    #pragma config CPUDIV   = NOCLKDIV  // CPU System Clock Postscaler (CPU uses system clock (no divide))
    #pragma config LS48MHZ  = SYS48X8   // Low Speed USB mode with 48 MHz system clock (System clock at 48 MHz, USB clock divider is set to 8)
    #pragma config FOSC     = INTOSCIO  // Oscillator Selection (Internal oscillator)
    #pragma config PCLKEN   = OFF       // Primary Oscillator Shutdown (Primary oscillator shutdown firmware controlled)
    #pragma config FCMEN    = OFF       // Fail-Safe Clock Monitor (Fail-Safe Clock Monitor disabled)
    #pragma config IESO     = OFF       // Internal/External Oscillator Switchover (Oscillator Switchover mode disabled)
    #pragma config nPWRTEN  = OFF       // Power-up Timer Enable (Power up timer disabled)
    #pragma config BOREN    = SBORDIS   // Brown-out Reset Enable (BOR enabled in hardware (SBOREN is ignored))
    #pragma config BORV     = 190      // Brown-out Reset Voltage (BOR set to 1.9V nominal)
    #pragma config nLPBOR   = ON        // Low-Power Brown-out Reset (Low-Power Brown-out Reset enabled)
    #pragma config WDTEN    = SWON      // Watchdog Timer Enable bits (WDT controlled by firmware (SWDTEN enabled))
    #pragma config WDTPS    = 32768     // Watchdog Timer Postscaler (1:32768)
    #pragma config CCP2MX   = RC1       // CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
    #pragma config PBADEN   = OFF       // PORTB A/D Enable bit (PORTB<5:0> pins are configured as digital I/O on Reset)
    #pragma config T3CMX    = RC0       // Timer3 Clock Input MUX bit (T3CKI function is on RC0)
    #pragma config SDOMX    = RC7       // SDO Output MUX bit (SDO function is on RC7)
    #pragma config MCLRE    = ON        // Master Clear Reset Pin Enable (MCLR pin enabled; RE3 input disabled)
    #pragma config STVREN   = ON        // Stack Full/Underflow Reset (Stack full/underflow will cause Reset)
    #pragma config LVP      = OFF       // Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
    #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming Port Enable (ICPORT disabled)
    #pragma config XINST    = OFF       // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled)
    #pragma config CP0      = OFF       // Block 0 Code Protect (Block 0 is not code-protected)
    #pragma config CP1      = OFF       // Block 1 Code Protect (Block 1 is not code-protected)
    #pragma config CP2      = OFF       // Block 2 Code Protect (Block 2 is not code-protected)
    #pragma config CP3      = OFF       // Block 3 Code Protect (Block 3 is not code-protected)
    #pragma config CPB      = OFF       // Boot Block Code Protect (Boot block is not code-protected)
    #pragma config CPD      = OFF       // Data EEPROM Code Protect (Data EEPROM is not code-protected)
    #pragma config WRT0     = OFF       // Block 0 Write Protect (Block 0 (0800-1FFFh) is not write-protected)
    #pragma config WRT1     = OFF       // Block 1 Write Protect (Block 1 (2000-3FFFh) is not write-protected)
    #pragma config WRT2     = OFF       // Block 2 Write Protect (Block 2 (04000-5FFFh) is not write-protected)
    #pragma config WRT3     = OFF       // Block 3 Write Protect (Block 3 (06000-7FFFh) is not write-protected)
    #pragma config WRTC     = OFF       // Configuration Registers Write Protect (Configuration registers (300000-3000FFh) are not write-protected)
    #pragma config WRTB     = OFF       // Boot Block Write Protect (Boot block (0000-7FFh) is not write-protected)
    #pragma config WRTD     = OFF       // Data EEPROM Write Protect (Data EEPROM is not write-protected)
    #pragma config EBTR0    = OFF       // Block 0 Table Read Protect (Block 0 is not protected from table reads executed in other blocks)
    #pragma config EBTR1    = OFF       // Block 1 Table Read Protect (Block 1 is not protected from table reads executed in other blocks)
    #pragma config EBTR2    = OFF       // Block 2 Table Read Protect (Block 2 is not protected from table reads executed in other blocks)
    #pragma config EBTR3    = OFF       // Block 3 Table Read Protect (Block 3 is not protected from table reads executed in other blocks)
    #pragma config EBTRB    = OFF       // Boot Block Table Read Protect (Boot block is not protected from table reads executed in other blocks)
temtronic



Joined: 01 Jul 2010
Posts: 9221
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Tue Sep 01, 2020 10:50 am     Reply with quote

I don't use that PIC or bootloader but from past posts, the fuses for BOTH your program and bootloader should be the same..
hopefully someone using your PIC/bootloader will reply soon.....
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Tue Sep 01, 2020 11:19 am     Reply with quote

Yes. The correct setting for the application is always:

#FUSES NONE

The bootloader fuses have to be correct for the final application. The
bootloader cannot change the programmed fuses.
jeremiah



Joined: 20 Jul 2010
Posts: 1345

View user's profile Send private message

PostPosted: Tue Sep 01, 2020 8:41 pm     Reply with quote

In addition, you only want
Code:

#use delay(clock=32000000)


As adding the other parameter can generate fuses. So combination of:

Code:

#fuses NONE
#use delay(clock=32000000)


After that, if you still have problems, try using your programmer to read the hex off the chip after you program it and see if the hex matches what you expect.
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Wed Sep 02, 2020 7:28 am     Reply with quote

Thank you very much for your kind replies.
I did the tests you say.
I copied the fuses settings from the c18 bootloader to CCS and the led blinks (the configuration is ok). Then I used the bootloader settings but the program doesn't work.
This is my fw:
Code:
#include <18F45K50.h>


//how big is the bootloader?
//the bootloader will reside from address 0x0000 to this location.  the
//application will then sit at this location+1 to the end of program memory.
#define LOADER_SIZE                 (0xFFF)
#define LOADER_START                (0)
#define LOADER_END                  (LOADER_SIZE)
#define APPLICATION_START           (LOADER_SIZE+1)
#define APPLICATION_END             (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR             (APPLICATION_START+8)

#define _bootloader

#ifndef _bootloader
    //in the application, this moves the reset and isr vector out of the bootload
    //space.  it then reserves the loader space from being used by the application.
    #BUILD(RESET=APPLICATION_START, INTERRUPT=APPLICATION_ISR)
    #org 0, LOADER_END {}


   #fuses NONE
   #use delay(clock=32000000)

#else
   
     
    #FUSES NOPLLEN
    #FUSES PLL3X
    #FUSES NOCPUDIV
    #FUSES LS48MHZ
    #FUSES INTRC_IO//HSH
    #FUSES PRIMARY_SW
    #FUSES NOFCMEN
    #FUSES NOIESO
    #FUSES NOPUT
    #FUSES BROWNOUT               //No brownout reset
    #FUSES BORV25                   //Brownout reset at 1.9V
    #FUSES LPBOR
    #FUSES WDT_SW
    #FUSES WDT32768
    #FUSES CCP2C1                   //ccp pwm su c1
    #FUSES NOPBADEN
    #FUSES T3CKC0
    #FUSES SDOC7//cambiare con SDOB3
    #FUSES NOMCLR
    #FUSES STVREN
    #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES ICSP2
    #FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)   
    #FUSES NOPROTECT                //Code not protected from reading
    #FUSES NOCPB
    #FUSES NOCPD

    #use delay(clock=32000000)

#endif


 /* This is C18 Bootloader fuses
 * #pragma config PLLSEL   = PLL3X     // PLL Selection (3x clock multiplier)
    #pragma config CFGPLLEN = OFF       // PLL Enable Configuration bit (PLL Disabled (firmware controlled))
    #pragma config CPUDIV   = NOCLKDIV  // CPU System Clock Postscaler (CPU uses system clock (no divide))
    #pragma config LS48MHZ  = SYS48X8   // Low Speed USB mode with 48 MHz system clock (System clock at 48 MHz, USB clock divider is set to 8)
    #pragma config FOSC     = INTOSCIO  // Oscillator Selection (Internal oscillator)
    #pragma config PCLKEN   = OFF       // Primary Oscillator Shutdown (Primary oscillator shutdown firmware controlled)
    #pragma config FCMEN    = OFF       // Fail-Safe Clock Monitor (Fail-Safe Clock Monitor disabled)
    #pragma config IESO     = OFF       // Internal/External Oscillator Switchover (Oscillator Switchover mode disabled)
    #pragma config nPWRTEN  = OFF       // Power-up Timer Enable (Power up timer disabled)
    #pragma config BOREN    = SBORDIS   // Brown-out Reset Enable (BOR enabled in hardware (SBOREN is ignored))
    #pragma config BORV     = 190      // Brown-out Reset Voltage (BOR set to 1.9V nominal)
    #pragma config nLPBOR   = ON        // Low-Power Brown-out Reset (Low-Power Brown-out Reset enabled)
    #pragma config WDTEN    = SWON      // Watchdog Timer Enable bits (WDT controlled by firmware (SWDTEN enabled))
    #pragma config WDTPS    = 32768     // Watchdog Timer Postscaler (1:32768)
    #pragma config CCP2MX   = RC1       // CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
    #pragma config PBADEN   = OFF       // PORTB A/D Enable bit (PORTB<5:0> pins are configured as digital I/O on Reset)
    #pragma config T3CMX    = RC0       // Timer3 Clock Input MUX bit (T3CKI function is on RC0)
    #pragma config SDOMX    = RC7       // SDO Output MUX bit (SDO function is on RC7)
    #pragma config MCLRE    = OFF        // Master Clear Reset Pin Enable (MCLR pin enabled; RE3 input disabled)
    #pragma config STVREN   = ON        // Stack Full/Underflow Reset (Stack full/underflow will cause Reset)
    #pragma config LVP      = OFF       // Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
    #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming Port Enable (ICPORT disabled)
    #pragma config XINST    = OFF       // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled)
    #pragma config CP0      = OFF       // Block 0 Code Protect (Block 0 is not code-protected)
    #pragma config CP1      = OFF       // Block 1 Code Protect (Block 1 is not code-protected)
    #pragma config CP2      = OFF       // Block 2 Code Protect (Block 2 is not code-protected)
    #pragma config CP3      = OFF       // Block 3 Code Protect (Block 3 is not code-protected)
    #pragma config CPB      = OFF       // Boot Block Code Protect (Boot block is not code-protected)
    #pragma config CPD      = OFF       // Data EEPROM Code Protect (Data EEPROM is not code-protected)
    #pragma config WRT0     = OFF       // Block 0 Write Protect (Block 0 (0800-1FFFh) is not write-protected)
    #pragma config WRT1     = OFF       // Block 1 Write Protect (Block 1 (2000-3FFFh) is not write-protected)
    #pragma config WRT2     = OFF       // Block 2 Write Protect (Block 2 (04000-5FFFh) is not write-protected)
    #pragma config WRT3     = OFF       // Block 3 Write Protect (Block 3 (06000-7FFFh) is not write-protected)
    #pragma config WRTC     = OFF       // Configuration Registers Write Protect (Configuration registers (300000-3000FFh) are not write-protected)
    #pragma config WRTB     = OFF       // Boot Block Write Protect (Boot block (0000-7FFh) is not write-protected)
    #pragma config WRTD     = OFF       // Data EEPROM Write Protect (Data EEPROM is not write-protected)
    #pragma config EBTR0    = OFF       // Block 0 Table Read Protect (Block 0 is not protected from table reads executed in other blocks)
    #pragma config EBTR1    = OFF       // Block 1 Table Read Protect (Block 1 is not protected from table reads executed in other blocks)
    #pragma config EBTR2    = OFF       // Block 2 Table Read Protect (Block 2 is not protected from table reads executed in other blocks)
    #pragma config EBTR3    = OFF       // Block 3 Table Read Protect (Block 3 is not protected from table reads executed in other blocks)
    #pragma config EBTRB    = OFF       // Boot Block Table Read Protect (Boot block is not protected from table reads executed in other blocks)

*/

#include <stdio.h>
#include <stdlib.h>

#define sw1   PIN_E3
#define LED3   PIN_C0
#define LED4   PIN_C2

void main() {
     
    disable_interrupts (GLOBAL) ;
    OUTPUT_A(0);
    set_tris_a (0b00101011);
    OUTPUT_B(0);
    set_tris_b (0b01111100);
    OUTPUT_C(0);
    set_tris_c (0b10000000);
    OUTPUT_D(0);
    set_tris_d (0);
    OUTPUT_E(0);
    set_tris_e (0b1011);
 
     while (1) {
         output_toggle (LED4) ;
         delay_ms(500);
     }
}


The fuses settings is: 0X0821, 0X3E1F, 0X1100, 0X0081 then all to "1".
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Wed Sep 02, 2020 7:59 am     Reply with quote

The program actually 'running', is dependant of the bootloader code
correctly deciding you don't want to bootload, and jumping to
the actual application. In the examples. this is:
Code:

//This tells the loader where the application should be
#org LOADER_END+1,LOADER_END+3
void application(void) {
  while(TRUE);
}

void main(void) {

   if(!input(PUSH_BUTTON))
   {
      printf("\r\nBootloader Version 1.0\r\n");
   
      // Let the user know it is ready to accept a download
      printf("\r\nWaiting for download...");
      load_program();
   }
   application(); //This is what actually executes the application....
}


Your size is wrong. The USB bootloader for a PCH chip (PIC18), is
0x2000 long, not 0x1000........

Look at usb_bootloader.h
Quote:

#if defined(__PCM__)
#define LOADER_SIZE (0x1000)
#elif defined(__PCH__)
#define LOADER_SIZE (0x2000) //note this......
#elif defined(__PCD__)
#define LOADER_SIZE (0x2000)
#else
#error not supported
#endif
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Wed Sep 02, 2020 8:22 am     Reply with quote

Quote:

The program actually 'running', is dependant of the bootloader code

yes i now. I meant "the led don't blinks"

Quote:
Your size is wrong. The USB bootloader for a PCH chip (PIC18), is
0x2000 long, not 0x1000........


?? i don't understand. In bootloader source i read:

Code:

//Constants
#define REMAPPED_APPLICATION_RESET_VECTOR       0x1000
#define REMAPPED_APPLICATION_HIGH_ISR_VECTOR    0x1008
#define REMAPPED_APPLICATION_LOW_ISR_VECTOR     0x1018
#define BOOTLOADER_ABSOLUTE_ENTRY_ADDRESS       0x001C  //Execute a "_asm goto 0x001C _endasm" instruction, if you want to enter the bootloader mode from the application via software


and with Pickit2 i read the bootloader .hex and he is long 0xFFF
i tried
Code:
#define LOADER_SIZE                 (0x1FFF)

but the led don't blinks
jeremiah



Joined: 20 Jul 2010
Posts: 1345

View user's profile Send private message

PostPosted: Wed Sep 02, 2020 9:15 am     Reply with quote

In the example you posted, you still have #define _bootloader so your application will be in the same address space as your bootloader. Comment that out so that your application is in the correct memory location.

Long term side note: Your define
Code:

#define APPLICATION_END             (getenv("PROGRAM_MEMORY")-1)


is wrong. That will allow you to place code on the same memory PAGE as the FUSES/config bits, essentially erasing them. You'll need to stop on the previous memory PAGE. This is not a problem right now, but if you get a nearly full application, you'll run into problems later.
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Wed Sep 02, 2020 9:26 am     Reply with quote

thanks for reply

Quote:
In the example you posted, you still have #define _bootloader

yes I know I do a lot of tests. I comment this line to use the bootloader but I leave it to see if the program works[/quote]
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Wed Sep 02, 2020 9:37 am     Reply with quote

The point is that a USB bootloader is too larger to fit in a 0x1000 space
on a PIC18. The sizes need to be 0x2000, and the bootloader has to
be recompiled with this size, and then reloaded. Then the main code has
to be recompiled with this size, and loaded with the bootloader.
The 0x1000 size is probably for the PIC16 version, which does fit in this
space.
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Wed Sep 02, 2020 10:02 am     Reply with quote

sorry if I allow myself to insist but at the beginning of the main I read:

Code:
NOTE FOR BUILDING WITH C18 COMPILER:
-------------------------------------------------------------------
This project needs to be built with the full compiler optimizations
enabled, and using the Default storage class "Static" or the total
code size will be too large to fit within the program memory
range 0x000-0xFFF.
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Wed Sep 02, 2020 10:11 am     Reply with quote

So you are not using the CCS USB bootloader.
You need to actually verify how large the bootloader is building as (look at
.lst file). Problem is that this bootloader may have built in the past to
fit in the 0x1000 space, but with modern compilers may no longer do so.
It's quite common to find code changes in size with different compiler versions
and code that would fit with a V4 compiler no longer will with a V5 compiler....
This will then prevent it from working.

You may well only have to expand the memory a little. It'll need to be a
'page' larger, but I suspect your bootloader is not fitting.
jeremiah



Joined: 20 Jul 2010
Posts: 1345

View user's profile Send private message

PostPosted: Wed Sep 02, 2020 10:12 am     Reply with quote

can you post the individual hex files for both the bootloader and the application (compiled to be placed by the bootloader)? Post it using the code tags so it is formatted in a readable matter.
ciccioc74



Joined: 23 Mar 2010
Posts: 30

View user's profile Send private message Visit poster's website MSN Messenger

PostPosted: Wed Sep 02, 2020 10:38 am     Reply with quote

bootloader
Code:
:020000040000FA
:060000000DEF07F01200F5
:020006000000F8
:0600080004EF08F01200F5
:080018000CEF08F02EEF07F0D9
:020020001200CC
:0E002200010006000000F904000002000000CA
:100030000001E46BE869E969EA69E76B010EEB6FBF
:1000400012000001E4511EE1040108BF93D1000138
:10005000400EFD6F0001600EFB6F000EFC6F2FEC79
:1000600006F00001010EE46FEC6B400EEC5D01E365
:1000700081D1EC51EA6AA00FE96E040EEA22EF6A20
:10008000EC2BF3D700016051080A01E170D1040A9A
:1000900001E131D1050A01E12CD10E0A01E1F5D0CF
:1000A000010A01E1ECD0030A01E194D0010A4CE01D
:1000B000070A40E0010A01E05BD10401020EA06FD3
:1000C0003A0EA16F010EA26FA36FA46B100EA56F65
:1000D000A66BA76BA86B700EA96FAA6BAB6B030E18
:1000E000AC6FAD6BAE6B300EAF6FB06B0E0EB16F11
:1000F000B26BB36BB46B040EB56FB66BB76B200EFF
:10010000B86FB96B080EBA6FBB6BBC6BBD6B020EE0
:10011000BE6FBF6BC06BF00EC16FC26BC36B010EC5
:10012000C46FC56BC66BC769A50ED96F04010CBF40
:1001300021D1DCD00001010EEB6F0001615101E023
:1001400013D10001EB6B10D1400E0001E56FE66B9F
:10015000000EE55D020EE6591FE22FDAE5C000F061
:10016000E6C001F0026A060E1F0BE5C0F6FFE6C00E
:10017000F7FF02C0F8FF06E0D890F636F736F836FB
:10018000E806FAE1940EA66E24DA74EC06F000019B
:10019000E52B000EE623DCD7EC6BECC0A9FFA868CA
:1001A000040EA66E74EC06F014DA0001EC51EC2B90
:1001B000006E016A026AFF0E005C000E0158000E1C
:1001C0000258EBE3F66AF76A200EF86E940EA66EFC
:1001D00000DACAD0300E635D06E10001EB5101E0A8
:1001E000C3D092D9C1D0F00E635D02E1B3D9BCD0C7
:1001F000E8680001E8190CE1E868E91909E1E86834
:10020000EA1906E161C0E8F062C0E9F063C0EAF013
:10021000E80EE96E000EEA6EEE500001611901E091
:10022000A3D0EE50621901E09FD0EE50631901E0B7
:100230009BD001E099D00001EC6B000165510001F9
:10024000EC5D01E391D0BDD9660FE96E000EEA22A4
:10025000EF50E66EE751EA6AA10FE96E000EEA225E
:10026000E552E750EF6EE72BE82B000EE923EA2377
:10027000200EE75D01E1E4D80001EC2BDED7E0D8E9
:100280000001E869E969EA6970D00401070EA06F0E
:1002900061C0A1F462C0A2F463C0A3F464C0A4F47A
:1002A00065C0A5F461C0F6FF62C0F7FF63C0F8FF48
:1002B0000001EC6B000165510001EC5D14E2F00EF1
:1002C0000001635D0AE161510001EC25A96EA66A97
:1002D000A68084D9A8CFEFFF04D071D97FD9F5CFFC
:1002E000EFFFEC2BE7D704010CBF44D00001400E18
:1002F00033D041D839D004010C0EA06F010EA16F8C
:10030000A26F160EF66E100EF76E0900F5CFA3F46D
:100310000A00F5CFA4F4060EA56F100EA66FA76B0A
:10032000A86B0D0EA96F600EAA6F400EAB6FAC6B81
:10033000AD6BAE6BAF69B069B169B269B36BB469EB
:10034000B569B66BB769B869B969BA69BB69BC699F
:1003500004010CBF0FD00001F96F0001A00EF76F70
:10036000040EF86F09EC06F00001E46B120050D89F
:100370000001E46B1200F66A100EF76EF86A0001D5
:10038000ED6B400E0001ED5D0DE209000001ED5145
:10039000EA6AA10FE96E000EEA22F5CFEFFF000135
:1003A000ED2BEFD700010D0EA76F0001600EA86FB7
:1003B000F66A100EF76EF86A940EA66E0001B50E7E
:1003C000F36FE8D83F0EF66E100EF76EF86A000174
:1003D0003F0EED6F0001ED51EA6AA10FE96E000ECC
:1003E000EA22EF50F56E0C000001ED511F0B07E102
:1003F000E4D8A40EA66E0001B50EF36FCBD80A00A8
:100400000001ED5101E103D00001ED07E3D7120037
:1004100004D8FF000000000012000001FE69FF691F
:100420000001FEC000F0FFC001F0FE07000EFF5B00
:100430000050011004E06092606ABFD8F1D712004A
:100440000001EF6BE7C000F0016A026A0050000192
:10045000E85DF66E01500001E959F76E02500001A7
:10046000EA59F86E1F0EF6140001F06FE00EF61652
:100470000001EE6B200E0001EE5D1FE20001F05165
:1004800015E10001E7510FE00001EF51EA6AA10F09
:10049000E96E000EEA22EF50F56E0D000001EF2B21
:1004A0000001E70702D0F5680D0004D0F5680D00E3
:1004B0000001F0070001EE2BDDD70A00A40EA66EA6
:1004C0000001B50EF36F66D80001EE6B0001E75135
:1004D0000001EE5D18E20001EF510001EE25EA6A2D
:1004E000A10FE96E000EEA22EF50E66E0001EE5118
:1004F000EA6AA10FE96E000EEA22E552E750EF6EBC
:100500000001EE2BE3D7120061C0F6FF62C0F7FFD7
:1005100063C0F8FF0001F16B000165510001F15D5E
:1005200018E23A0E0001D88065550001F125EA6A0B
:10053000660FE96E000EEA22EF50F56E0C00C40E55
:10054000A66E0001B50EF36F25D809000001F12B4E
:10055000E3D712000001F26B000165510001F25D6A
:1005600018E2000161510001F225A96E3A0E000166
:10057000D88065550001F225EA6A660FE96E000E23
:10058000EA22EF50A86E040EA66E23D80001F22BCB
:10059000E3D71200F29EB50E0001F35D05E0030EF5
:1005A000D36E0300FED7FF00550EA76EAA0EA76EEE
:1005B000A682A6B2FED7A69412000400120009007B
:1005C00012003A0E0001D88065550001EC25EA6A58
:1005D00012000001B50EF36FCAEF02F0F2DFA60FB2
:0805E000E96E040EEA2212008C
:0805E800615033E16596040146
:1005F00000513C0BE842E8420D0829E1180E0219AF
:1006000024E1040E031921E1100E026F040E036FA2
:100610000401EA6BEA51006E016A080E005C000EEC
:10062000015813E2EA51EA6A180FE96E040EEA2251
:10063000EF50E66EEA51EA6A100FE96E040EEA2204
:10064000E552E750EF6EEA2BE5D70AD8010C3AD80D
:10065000010C040E615C03E165964BD8010C000CA3
:10066000040104BF046B0401E96BE16BE26BE76B0F
:10067000E86B50EC04F00401EB6BEB51006E016A87
:10068000010E005C000E01581BE2E25119E1EB5132
:10069000F66EF76AD890F636F736AC0EF6260F0EE1
:1006A000F7220900F5CF00F00800F5CF01F004D0E3
:1006B00001C0FAFF0050F96EFBDF0401EB2BDDD720
:1006C000F8EF03F0020E0401E15D0EE178D80401B9
:1006D000180E026F040E036F080E016F00BD02D0EA
:1006E000C80E05D0880E03D0BCD8CBD88C0E006FB6
:1006F0001200040E0401F55D09E112C463FF6350AA
:10070000000802E2050E01D0030EF56F0401E105B9
:1007100010E111D8020E0401E95D03E10401840E29
:1007200006D0040104BD02D0C80E01D0880E046FAB
:10073000120031EF04F00401080EE75D000EE859E5
:100740000DE2E7C4ECF4E8C4EDF4E95102E1010E76
:1007500003D0E90506E1020EE96F03D0080EEC6F45
:10076000ED6B0401049304910401ED5104010413A1
:10077000ECC405F40401EC51E75DE76FED51E85975
:10078000E86F180EE56F040EE66F0401F6A30ED0B5
:100790000401EC51ED1112E0E3C4F6FFE4C4F7FFED
:1007A0000800F55063D8EC07ED5BF2D70401EC517B
:1007B000ED1104E06ED8EC07ED5BF8D71200030EE4
:1007C000040100150401EF6F01C4EEF4E751EE25BA
:1007D000E76FE851EF21E86F180EE36F040EE46F46
:1007E000EE51EF1104E055D8EE07EF5BF9D7120098
:1007F00060980401E25105E144D8840E006F0401C1
:100800001DD0040110AF1CD00401E7510401165D96
:100810000401E8510401175904E216C4E7F417C4AF
:10082000E8F489DF0401010EE16F2BD8800E006F20
:100830000401180E066F040E076FC80E046F120035
:100840000401020EE16F0401056BC80E046F040180
:10085000080E016F180E026F040E036FC80E006FB2
:1008600012000401E16B0401046B1200E5C4E9FF0E
:10087000E6C4EAFFEF6EE52B000EE623E32BE4234C
:1008800012000401080E016F100E026F040E036FB8
:100890001200E3C4E9FFE4C4EAFFEF5036EF04F0CE
:1008A00004011051600BE842E842E842E842E842A5
:1008B000000901E012001151070A44E00B0A42E06E
:1008C000070A35E0010A23E00B0A1FE0020A1DE0D7
:1008D000030A19E0080A10E0010A0CE00F0A08E018
:1008E000030A01E0120013D90401040EF56F12008F
:1008F000A3EF04F0DAEF04F00AD90401F70EE36F76
:10090000040EE46F0ED0F9EF04F029EF05F0FFD8E4
:10091000040114510401E36FE46BF80EE327040EA5
:10092000E4230401F6930401010EE76F1200EFD8EF
:1009300004011451EA6AF80FE96E040EEA2212C4A7
:10094000EFFF12001200800E0401105D32E113511E
:10095000030A1FE0010A0AE0030A29E1D8D80401CA
:10096000EC0EE36F0E0EE46F120E1ED0B6D8A20E80
:10097000F6260F0EC4D8020E0401F76AE325F66EC0
:10098000E451F7220900F5CFE7F40A00F5CFE8F4C7
:100990000ED0A3D8A60EF6260F0EB1D8E3C4F6FFEC
:1009A000E4C4F7FF0800F5500401E76FE86B0401A9
:1009B000F6831200ACD86B6A6C6A6D6A6E6A6F6AF5
:1009C000706A716A0401F46F0401F80EF26F040E8C
:1009D000F36F01EC07F012C4F7F40401125104E1C3
:1009E0000401050EF56F12000401060EF56FF4EF19
:1009F00005F00401186B196B040110511F0B020A5A
:100A00000DE0030A09E0010A16E181D80401F6A10C
:100A100012D0040118830FD07AD80DD050D801E03D
:100A2000010E64D8E5C4E9FFEA6EEF50040B03E061
:100A30000401010E186F0401E2050AE10401180E19
:100A4000E36F040EE46F0401F6930401020EE76FF6
:100A50001200040112050EE110511F0B00090AE1FA
:100A600056D8030E0401115D03E10401F68102D0A2
:100A70000401F6910401125121E110511F0B0208EB
:100A80001DE114510F0B000919E019D801E0010E06
:100A90002DD8030E0401115D02E1840E03D014AFC2
:100AA00007D0400EE5C4E9FFE6C4EAFFEF6E12008E
:100AB000880EE5C4E9FFE6C4EAFFEF6E120027D80E
:100AC000040114510F0B080DF350016A000F006E62
:100AD000040E01221451800B120019D80401125186
:100AE000F66EF76AD890F636F7361200040DF3501A
:100AF00004010024E56F000E0120E66F1200F722CA
:100B00000900F5CFE3F40A00F5CFE4F41200040184
:060B1000010EE26F12006D
:0A0B1600040110511F0B010801E05B
:100B20001200145101E01200060E115D24E1135170
:100B3000230A1FE0010A0DE0030A1BE1BDD80401EE
:100B4000F70505E10401100EE36F0F0EE46F090EC7
:100B50000DD0B2D80401F70505E10401850EE36F5D
:100B60000F0EE46F0401F70504E11D0E0401E76FA9
:100B7000E86B0401F68304011051600BE842E8427F
:100B8000E842E842E842010801E0120011510B0A74
:100B900025E0080A17E0090A11E0080A09E00B0A33
:100BA00005E0080A01E01200F2EF05F0F3EF05F0AE
:100BB00083D80401F40EE36F000E09D07DD813C46E
:100BC000F4F0120079D80401F50EE36F000EE46F23
:100BD0000401F6930401010EE76F12006DD812C4F0
:100BE000F5F01200120012000001F66B1E0E6B6E83
:100BF0000401400E096F200E0A6F040E0B6F880E61
:100C0000086F0401600E0E6F040E0F6F400E0C6F24
:100C100012000001F951400802E2400EF96FFA6B30
:100C2000F951FA5D13E2FA51EA6AF725E96EF851D3
:100C3000EA22EF50E66EFA51EA6A600FE96E040E9E
:100C4000EA22E552E750EF6EFA2BEAD7F9C00DF42D
:100C5000400E04010C170C7D880E0C1312000001CD
:100C6000F66B040108BF25D009510001D880FD555D
:100C700002E209C4FDF0F66BFD51F65D13E2F65198
:100C8000EA6A200FE96E040EEA22EF50E66EF65192
:100C9000EA6AFB25E96EFC51EA22E552E750EF6E65
:100CA000F62BEAD70401400E096F0817087D880E5D
:100CB00008130001F65112000401020EE26F120047
:100CC00060B606D0606A646A60860401010EF56F42
:100CD0000401F50508E160BA06D0656A646A6480BB
:100CE0006488020EF56F12000401F55101E1120053
:100CF00065B446D860B2120065B059D865B817D847
:100D000065BA45D8030E0401F55D01E21200040145
:100D1000F06B040EF05D0AE265A608D0F4EC02F078
:100D2000000901E165960401F02BF3D7120064CFAE
:100D3000F1F4040E646E659860828B90A494A38491
:100D40000300A450040B05E1D050080B02E103009E
:100D5000F8D7A3940401F15164120001D50EFE6F7F
:100D6000020EFF6F0001FEC000F0FFC001F0FE07A1
:100D7000000EFF5B0050011002E00400F3D71200E8
:100D80006092649465A402D06594FCD712006AA0B6
:100D90000CD0800E0401005D07E1840E0401045DA7
:100DA00003E104018C0E006F6A90659A1200676A75
:100DB000656A9F0E666E7B0E646E636A6B6A6C6A10
:100DC0006D6A6E6A6F6A706A716A160E6A6E65A6DF
:100DD00004D06596DDEC02F0FAD7609831EC04F0AF
:100DE0000401080E016F100E026F040E036F8C0ECB
:100DF000006F0401F6910401F76B0401030EF56F17
:100E00001200F2C4E9FFF3C4EAFF0401F45104E064
:0A0E1000EE6A0401F407F9D712009E
:060E1A000F0EC16E93886B
:100E200081B804D00F015C8904D003D08B842EEFED
:100E300007F0060EF66E100EF76E0900F5CF00F003
:100E40000800F5CF01F00D0E001802E1600E011848
:100E500002E100EF08F02EEF07F01200F26A13EE45
:100E600000F023EE00F0F86AFC6A60A602D00DECF8
:100E700002F012D8040060EC06F074EC06F024D8FE
:100E800022D8060E0401F55D05E16050020B02E177
:100E900021EC00F0EFD71200800E9B6E700ED36E27
:100EA000100ED26ED2AEFED7900EB56E140E626EDC
:100EB0000401F56B0401F66B0401F76B18EC00F00C
:100EC0008B6A946A120012000401F907000EFA5BA3
:100ED000F951FA110AE1F96B4E0EFA6F060E040190
:0C0EE000F55D02E28B8012008B701200A6
:040EEC0012010002ED
:100EF00000000008D8043C000101010200010902C1
:100F00002900010100C032090400000203000000B2
:100F1000092111010001221D000705810340000184
:100F2000070501034000010403090434034D00696F
:100F300000630072006F00630068006900700020A9
:100F40000054006500630068006E006F006C006F65
:100F50000067007900200049006E0063002E002623
:100F6000034800490044002000550053004200207F
:100F70000042006F006F0074006C006F006100643D
:100F800000650072000600FF0901A1011901294056
:100F9000150026FF00750895408100190129409130
:0E0FA00000C0FE0EFE0E270F2B0F5F0F160B6C
:020FAE00000E33
:100FB000F36E00EE00F0080E01D81200EA6002D0D5
:0E0FC000EE6AFCD7F350E9601200EE6AFCD72F
:061000000EEF00F01200EB
:020000040030CA
:0100000021DE
:0100010008F6
:010002001FDE
:010003003EBE
:0100050011E9
:010006008178
:010008000FE8
:01000900C036
:01000A000FE6
:01000B00E014
:01000C000FE4
:01000D0040B2
:00000001FF

blinking RC2


Code:

:0410000018EF08F0ED
:08100800EA6A0B0EE96EEF50DD
:101010000DE00A0E016E006A002EFED7012EFBD7EE
:101020005F0E006E002EFED7EF2EF3D750EF08F0C4
:10103000F86AD09EC150F00BC16E000E0F015B6FBD
:101040005F6F5C6F5D6F5E6F0101886B9A6A996A72
:10105000986A046A056AF29CF29EF2BEFDD7926A13
:10106000896A2B0E926E936A8A6A7C0E936E946ADA
:101070008B6A800E946E956A8C6A000E956E9690BF
:101080009692969496968D6A968096829694968677
:1010900094948B74020E0A6EFA0E0B6E0001B4D794
:1010A0000A2E01D002D00101F7D70101F1D70300C8
:00000001FF
;PIC18F45K50
;CRC=16E6  CREATED="02-set-20 18:35"

Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group