;***************************************************** ; ; SPI - Prijimaci strana ; ; ;***************************************************** ; vstupni signaly IO_DIN BIT P1.0 ;data ctu IO_CE BIT P3.2 ;CE - INT1 (nebo INT0) IO_CLK BIT P3.7 ;hodiny ; vystupn¡ signaly IO_DOUT BIT P1.2 ;data vysilam ; pametove promenne PA_DOUT DATA 030H ;vysilajici data PA_DIN DATA 031H ;prijimana data ;===================================================== ; INTERUPT adresa pro IRQ extern¡ interupt IEX1 ;***************************************************** ORG ADR+0013H JMP IO_SPIP ; ;RETI je tam ...... a nekde v programu IRQ povolit a umstit tam rutinu pro obsluhu IRQ ;##################################################### ; SPI vysilaci cast - volano pres IRQ ! ;##################################################### ; IO_SPIP: CLR EA ;zakaz IRQ PUSH ACC ;uklid registru PUSH B MOV B,#8 ;8 bitu MOV A,PA_DOUT ;data pro vyslani RLC A ;do CY IO_SPP1: MOV IO_DOUT,C ;data ven A: JB IO_CLK,$ ;skok pro "H" B: CPL P1.6 ;pro testy = ICLK MOV C,IO_DIN ;nactem data RLC A ;posunem do A DJNZ B,IO_SPP1 ;opakujeme 8x IO_RET: MOV PA_DIN,A ;ulozime POP B ;navrat registru POP ACC SETB EA ;povolime IRQ RETI ;*****************************************************