#include #define JINX 0x100000 #define PAUSE 0xfffFFF #define size 1 .section/pm isr; // if IRQ0 come do receive nop; nop; jump receive; rti; .section/dm dm_data; .section /pm pm_code; start: IMASK = 0x0; LIRPTL = 0x0; IRPTL = 0x00000000; // clear pending interrupts bit set mode2 IRQ0E ; // irqx edge sensitive bit set mode1 IRPTEN ; // enable global interrupts, nesting bit set imask IRQ0I; // set mask on IRQ0 r3=0xff00; // set initialization data for transmit r0=0x00000000; // initially clear SPI control register dm(SPICTL)=r0; //get ready bits in ustat1 for start SPI bit set ustat1 SPIEN | MS | DF | WL32 | BAUDR5 | SGN | GM | FLS0 | PSSE; r0=0xff03; // set first data to send dm(SPITX)=r0; // rite to TX buffer r0=0xff04; // set second data to send dm(SPITX)=r0; // write to TX buffer dm(SPICTL) = ustat1; // enable SPI, send data transmit: dm(SPITX)=r3; // send data from r3 test: ustat1=dm(SPISTAT); // get ststus SPI bit tst USTAT1 RXS0; // put mask in ustat1 on RXS0 bit if Not TF jump test; // test - if SPIRX not full jump to test r0=dm(SPIRX); // read data from SPIRX buffer DM(IOFLAG) = r0; // send data from SPIRX to output pin's IOFLAG jump transmit; // return to transmit next data dd: jump dd; // if program not jump to transmit wait start.end: // end program ///IRQ////////////////////////////////////////////////////// receive: r3=r3+1; // if IRQ0 come increase r3 r0=0xff3f; comp(r0,r3); // compare r3 with ff3f bit tst ASTAT 0x00000001; if not TF jump qwer; // if r3 = 0xff3f set r3 = ff00 r3=0xff00; // set r3 = ff00 qwer: rti; // end IRQ