Hallo zusammen,

ich arbeite gerade an einem Projekt, 8bit Zahlen seriell über den PortA ausgeben muss.
Ich arbeite mit einem PIC18F452 mit einem 10MHz Oszi und habe die PLL aktiviert, das heisst also mit 40MHz (10MHz effektiv).

Mit meinem Code komme ich gerade auf lächerliche 200kHz und interessant wäre da schon um die 1MHz.
1MHz wäre nähmlich die max. Übertragungsgeschwindigkeit zu dem Endgeräte. (500ns Datenvorbereitung und 500ns Clockimpuls)
Deshalb auch die NOPs im code

Ich hoffe ihr könnt mir da mal Tips geben wie ich mein Prog schneller machen kann.

Vielen Dank schon im voraus

Hier noch mein Quellcode

bitmask --> muss zuerst den msb ausgeben darum '10000000'
writeBlock --> ist die 8bit zahl welche ich ausgeben muss
setData ist deklariert als bit
PIC_OUTPUT_RF_DATA ist fix gegeben durch PORTA RA2
PIC_OUTPUT_RF_CLK1 ist fix gegeben durch PORTA RA1

int i;
UINT8 bitmask = 0x80;
for(i = 0 ; i < 8 ; i++ )
{
if((writeBlock & bitmask) == bitmask)
{
setData = 1;
}
else
{
setData = 0;
}

PIC_OUTPUT_RF_DATA = setData;
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
PIC_OUTPUT_RF_CLK1 = 1;
writeBlock <<= 1;
PIC_OUTPUT_RF_CLK1 = 0;
}