|
鼠标c语言格式例程 终于把鼠标搞定了 c语言格式 :::::::: 翼 发表于 2005-8-27 13:03:10 例程如下
为准确期间 未使用 循环
可以改进
void SEND_BYTE(uint8 word)
{ int i,j; uint32 parity=0; for (j=0;j<8;j++) { if ((word>>j)&0x1 == 1) parity=~(parity); } parity=~parity; IO0DIR = CLK|DATA; IO0SET = CLK|DATA; IO0CLR = CLK;
for(i=0;i<1500;i++) ; //IO0DIR=CLK|DATA; for(i=0;i<300;i++); IO0CLR=DATA; for(i=0;i<75;i++); IO0DIR=DATA; //for(i=0;i<500;i++); //while (( IO0PIN & CLK )!=0); //while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>0)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>1)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>2)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>3)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>4)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>5)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>6)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( (word>>7)&0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); if ( parity &0x1 ) IO0SET=0x1; else IO0CLR=0x1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); IO0SET=0x1; while( ( IO0PIN & CLK )==0); for(i=0;i<200;i++); IO0DIR=0; for(j=0;j<1500;j++); }
接受数据
void RECEIVE_BYTE(void) { int i,j; uint32 parity=0; at=0; /*for (j=0;j<8;j++) { if ((word>>j)&0x1 == 1) parity=~(parity); } parity=~parity;*/ while (( IO0PIN & CLK )!=0); for(i=0;i<500;i++); while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<0; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<1; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<2; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<3; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<4; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<5; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<6; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<7; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<8; while( ( IO0PIN & CLK )==0); while (( IO0PIN & CLK )!=0); for(i=0;i<200;i++); at|=(IO0PIN&0x1)<<9; while( ( IO0PIN & CLK )==0); for(i=0;i<1000;i++);
}
平台 arm lpc2132
|