📄 host_to_mouse.txt
字号:
////////////////主机发一字节到鼠标//////////////
void host_to_mouse(unsigned char v)
{
unsigned char i,parity=0;
kbda_ddr|=kbda_high;
kbclk_ddr|=kbclk_high;
kbclk_out&=kbclk_low;
delay_us(100);
kbda_out&=kbda_low;
delay_us(15);
//kbclk_out|=kbclk_high;
kbclk_ddr&=kbclk_low;
while(kbclk_in&kbclk_high);//等待鼠标把时钟线拉低
for(i=0;i<8;i++)
{
if(v&0x01==0x01)
kbda_out|=kbda_high;//发送数据从第一位到第八位
else
kbda_out&=kbda_low;
parity+=(v&0x01);
while(!(kbclk_in&kbclk_high));//等待上升沿,鼠标把数据读走
v=v>>1;
while(kbclk_in&kbclk_high); //等待鼠标把时钟拉低
}
if((parity+1)%2==1)
kbda_out|=kbda_high;
else
kbda_out&=kbda_low; //发送奇偶校验位,采用奇校验
while(!(kbclk_in&kbclk_high));//鼠标读校验位
while(kbclk_in&kbclk_high);//等待校验位的时钟下降沿
delay_us(10);
kbda_out|=kbda_high; //发送停止位
while(!(kbclk_in&kbclk_high)); //等待时钟线高,读停止位
while(kbclk_in&kbclk_high);//等待时钟线低
kbda_ddr&=kbda_low;
while(kbda_in&kbda_high);//等待鼠标把数据线拉低
while(kbclk_in&kbclk_high); //等待鼠标把时钟线拉低
while(!(kbclk_in&kbclk_high));
while(!(kbda_in&kbda_high)); //等待释放数据线和时钟线
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -