How do i select an 8mhz crystal?

Basically, this thing from china runs on an 8mhz clock, i copied the .hex even uploaded it to the chip, but it's spasaming out but it seems to be working (hard to say for sure but it activates the LCD screen, a fresh chip does not, so i think it's a success) ..

So basically, I have a breadboard and 328p and a 16mhz crystal, I want to change the bootloader to 8mhz to work with the onboard crystal and circuitry... obviously once it's been flashed the 16mhz ceases to work, no problem i can re flash it with an 8mhz crystal if i have to...

Do i need a special bootloader?

When you download or install the Arduino IDE, the newest bootloaders are included with it.

The bootloader for 8MHz is not the same as the bootloader for 16MHz.
Perhaps your breadboard Arduino is compatible with one of the supported Arduino board, so you can use that bootloader.

When you have a breadboard with a 16MHz crystal, why do you want to change it to 8MHz ?

cjdelphi:
So basically, I have a breadboard and 328p and a 16mhz crystal, I want to change the bootloader to 8mhz to work with the onboard crystal and circuitry... obviously once it's been flashed the 16mhz ceases to work, no problem i can re flash it with an 8mhz crystal if i have to...

Do i need a special bootloader?

Well, bootloader is not neccesary if you upload with external ISP programmer.
It is important to change fuses if you want to use internal 8mhz osc.
If you want external 8mhz osc, just change the boards.txt file, change your clock setup to 8000000L. (This is also necessary if using internal 8mhz osc).

Ahh ok fuses as well... thanks

http://www.engbedded.com/fusecalc/

I think the Low Fuse byte needs to change to 0xF2 for the internal 8MHz.

Try this: create a new board type by copying this into boards.txt, restart the IDE, and burn the bootloader so the fuses are updated:

##############################################################

int8MHz328.name=Arduino DIP (3.3V, 8 MHz) w/ ATmega328

int8MHz328.upload.protocol=arduino
int8MHz328.upload.maximum_size=30720
int8MHz328.upload.speed=57600

int8MHz328.bootloader.low_fuses=0xF2
int8MHz328.bootloader.high_fuses=0xDA
int8MHz328.bootloader.extended_fuses=0x05
int8MHz328.bootloader.path=atmega
int8MHz328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
int8MHz328.bootloader.unlock_bits=0x3F
int8MHz328.bootloader.lock_bits=0x0F

int8MHz328.build.mcu=atmega328p
int8MHz328.build.f_cpu=8000000L
int8MHz328.build.core=arduino
int8MHz328.build.variant=standard

##############################################################

As mentioned in my other thread that I awkwardly started overlooking this one, I think it 0xE2. The SUT bits differ from the external clock. 11 is reserved, while 10 gives the highest waiting period of 65ms for the clock to settle. together with disables clock output and clock divider, this gives E, not F.

Note that this only matches the fuse settings of the lilypad in the board.txt.