Onehdá jsem se tady ptal, jak se správně zapisuje ASM rutina v tomto vývojovém "AmiDevCPP" prostředí. A protože žádná odpověď nepřišla, tak jsem dávám ukázku, která mě funguje. Možná to někomu někdy pomůže
Code:
/* * - output byte for SDI write - D0=byte out */ UBYTE SPI_byte_out_xDCS_asm2 (UBYTE byte_out) { asm volatile ( "lea 0xbfe101,%%a2\n" "moveq #0x0F,%%d3\n" "moveq #0x0E,%%d4\n" "moveq #0x0D,%%d5\n" "moveq #0x0C,%%d6\n" "move.b %[byte],%%d0\n" "moveq #0x07,%%d1\n" //prenos 8mi bitu ".ByteOut2: btst %%d1,%%d0\n" //jaky je bit na D1 v bajtu D0 "bne.b .ByteOut3\n" //je to 1 "move.b %%d5,(%%a2)\n" //MOSI=0 "move.b %%d6,(%%a2)\n" "bra.b .ByteOut4\n" ".ByteOut3: move.b %%d3,(%%a2)\n" //MOSI=1 "move.b %%d4,(%%a2)\n" ".ByteOut4: subq #0x01,%%d1\n" //snizime pocitadlo bitu "bcc.b .ByteOut2\n" //a jedem dalsi : : [byte] "d"(byte_out) : "d0" , "d1" ); }