Этот код под серией LPC22хх работает отлично, но когда меняешь в KEil, микроконтроллер на серию 23хх, меняешь инструкции и все регистры начинает выдавать ошибку Prefetch Abort: ARM Instruction at 0000000CH. Подскажите где в коде моя ошибка...
#include <stdio.h>
#include <LPC23xx.H>
#define CR 0x0D
#include <string.h>
#define VREF 3


int putchar (int ch) {
if (ch == '\n') {
while (!(U1LSR & 0x20));
U1THR = ch;
while (!(U1LSR & 0x20));
return (U1THR = ch);
}


int getchar (void) {

while (!(U1LSR & 0x01));

return (U1RBR);
}


int main (void) {

unsigned int v ;

VPBDIV= 0x02; - вот эту строчку надо изменить, PCLKSEL0=... дальше не знаю...Это первый вопрос.
IODIR1= 0x00ff0000;
AD0CR = 0x00200601;


PINSEL0 = 0x00050000;
U1LCR = 0x83;
U1DLL = 97;
U1LCR = 0x03;


while(1){
AD0CR |= 0x01000000;
while((AD0GDR & 0x80000000)==0);
v = ((AD0GDR>>6)& 0x03ff);

printf ("Digital Value %4u = %01u.%04u Volts\r",
(unsigned) v,
(unsigned) (v * VREF) >> 10,
(unsigned) ((v * VREF * 10000UL) >> 10UL) % 10000);


AD0CR= 0x00000000;;
}

return(0);

}
P.S. Странно но у меня не работает функция printf()на 23 серии, хотя настройка UART прописаны.Может так применяется уже немного другой синтаксис.Подскажите. Конкретно программирую для контроллера LPC2378.