;***************************************************** ; ; SPI - Vysilaci strana ; ; ;***************************************************** ; vystupni signaly IO_DOUT BIT P1.0 ;data vysilam IO_CE BIT P1.1 ;CE IO_CLK BIT P3.7 ;hodiny ; vstupn¡ signaly IO_DIN BIT P1.2 ;data ctu ; pametove promenne PA_DOUT DATA 030H ;vysilajici data PA_DIN DATA 031H ;prijimana data ;##################################################### ; SPI vysilaci cast ;##################################################### IO_SPIV: CLR IO_CE ;vyber obvodu PUSH ACC ;uklid registru PUSH B MOV B,#6 ;musime pockat IO_SPV2: NOP ;pro stranu prijmu DJNZ B,IO_SPV2 MOV B,#8 ;8 bitu MOV A,PA_DOUT ;data pro vysilani RLC A ;do CY IO_SPV1: MOV IO_DOUT,C ;jeden bit ven CLR IO_CLK ;data plati po sestupne hrane NOP ;casovani NOP NOP NOP SETB IO_CLK ;cteme data po nastupni hrane MOV C,IO_DIN ;cteme bit RLC A ;rotujeme DJNZ B,IO_SPV1 ;opakujeme 8x MOV PA_DIN,A ;ulozime nactena data POP B ;vratime registry POP ACC SETB IO_CE ;konec prenosu RET ;#####################################################