Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download
#include "main.h"#include "ps2mouse.h"void send(byte command){int n;int parity=0;//Request-to-sendinput(DATA);output_low(CLK);delay_us(100);// start bitoutput_low(DATA);delay_us(20);while(!input(CLK));// 8 bitufor(n=0; n<8; n++){while(input(CLK));output_bit(DATA, command & 1);parity += command & 1;command>>=1;while(!input(CLK));};// paritawhile(input(CLK));output_bit(DATA, ~parity & 1);while(!input(CLK));// stop bitwhile(input(CLK));output_bit(DATA, 1);while(!input(CLK));output_float(DATA);}int8 read_byte(int8 const poradi){int8 bajt;int8 i;// cekani na komunikacni klidfor (i=0; i<poradi; i++){if (!input(CLK) || !input(DATA)) i=0;};// cekani na startbitwhile(input(CLK) || input(DATA));while(!input(CLK));bajt = 0;for(i=0; i<8; i++){while(input(CLK)); // ceka na nulu hodinbajt >>= 1;bajt |= input(DATA) << 7;while(!input(CLK)); // ceka na jednicku hodin};return (bajt);}/*void read_all_byte(int8*st,*nd,*rd) // precte 3 bajty{int8 i;// *st=read_byte(1st);// cekani na startbitwhile(input(CLK) || input(DATA));while(!input(CLK));*nd = 0;for(i=0; i<8; i++){while(input(CLK)); // ceka na nulu hodin*nd |= input(DATA) << 7;*nd >>= 1;while(!input(CLK)); // ceka na jednicku hodin};// cekani na startbitwhile(input(CLK) || input(DATA));while(!input(CLK));*rd = 0;for(i=0; i<8; i++){while(input(CLK)); // ceka na nulu hodin*rd |= input(DATA) << 7;*rd >>= 1;while(!input(CLK)); // ceka na jednicku hodin};}*/