Witam.
Zaznaczam, że nie znam asm, piszę w C.
Mam funkcję do wysyłania danych do LCD, argument jest zmienną 16 bitową, wystawiam jej starszą część na jeden port, młodszą na drugi.
uC- Xmega128
Chciałbym, jeśli można, przyspieszyć działanie tej funkcji.
Jakoś mi przyszło do głowy, że jeśli zrobię to w asm to będzie szybciej.
I męczę się i szukam, i czytam, i nie mogę nic znaleźć co by mi się skompilowało.
Jeśli zrobię tak:
To wystawia mi na PORTE i PORTF 0xff.
Ale jak zrobić, żeby wysłać młodszą i starszą część zmiennej data?
Nie bardzo wiem jak wpisać ją do rejestru, żeby potem wystawić rejestr na port.
Zaznaczam, że nie znam asm, piszę w C.
Mam funkcję do wysyłania danych do LCD, argument jest zmienną 16 bitową, wystawiam jej starszą część na jeden port, młodszą na drugi.
uC- Xmega128
void write_data(uint16_t data)
{
PORTC.OUT&=~(1<<wr);
PORTE.OUT=data>>8;
PORTF.OUT=data;
PORTC.OUT|=(1<<wr);
}
Chciałbym, jeśli można, przyspieszyć działanie tej funkcji.
Jakoś mi przyszło do głowy, że jeśli zrobię to w asm to będzie szybciej.
I męczę się i szukam, i czytam, i nie mogę nic znaleźć co by mi się skompilowało.
Jeśli zrobię tak:
asm( "ldi R16, 0xff \n"
"sts 1668, R16 \n"
"sts 1700, R16 \n"
);
To wystawia mi na PORTE i PORTF 0xff.
Ale jak zrobić, żeby wysłać młodszą i starszą część zmiennej data?
Nie bardzo wiem jak wpisać ją do rejestru, żeby potem wystawić rejestr na port.
