打印
[应用相关]

匠人的寒假作业——改进后的鼠标程序

[复制链接]
2716|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序匠人|  楼主 | 2009-2-1 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
se, IO, gp, pi, GPIO
//--------------------------------------------------------
// 项目:鼠标程序
// 模块:主程序
// 说明:
// 设计:程序匠人(版权所有,引用者请保留原作者姓名)
//--------------------------------------------------------
/*
版本说明:

V01        2009-2-1 22:11:47    
    在原DEMO程序上改进如下:
    1.4个方向键,原来是单击有效,每次击键,鼠标移动一次.现在改为连击有效,当方向键连续按下时,鼠标持续移动
    2.鼠标每次移动的步长,原来固定30点.现在改为由电位器调节,步长范围=ADC采样结果的高4位+1(1~16)
    3.原来只支持"上下左右"4个方向,现在支持"正上正下正左正右左上右上左下右下"8个方向
    4.KEY2改为鼠标左键
    5.KEY3改为鼠标右键
    6.KEY4(方向键中间键)改为鼠标中键
    7.LCD显示内容改为:"CXJR"
    8.按键原来是用中断检测,改为在主程序中查询.
*/
//--------------------------------------------------------

//略。。。。。


//--------------------------------------------------------
//主函数
//--------------------------------------------------------
int main(void)
{

//略。。。。。
 
  while(1)
  {
    write_string("CXJR");  
      Mouse_Send();
 }
}

//--------------------------------------------------------
//鼠标报告描述符发送
//--------------------------------------------------------
void Mouse_Send(void)
{
  u8 Mouse_Buffer[4] = {0, 0, 0, 0};
  s8 X = 0, Y = 0;

  
  //========方向键处理(步长=ADC采样结果的高4位+1(1~16))
  if (!GPIO_ReadInputDataBit(GPIOD, JOY_RIGHT))
  {
      X += (ADC_ConvertedValue/256+1);        
  }
  if (!GPIO_ReadInputDataBit(GPIOD, JOY_LEFT))
  {
      X -= (ADC_ConvertedValue/256+1);        
  }
  if (!GPIO_ReadInputDataBit(GPIOD, JOY_UP))
  {
      Y -= (ADC_ConvertedValue/256+1);        
    }
  if (!GPIO_ReadInputDataBit(GPIOD, JOY_DOWN))
    {
      Y += (ADC_ConvertedValue/256+1);        
    }
  Mouse_Buffer[1] = X;                                                                                  // prepare buffer to send 
  Mouse_Buffer[2] = Y;

    //========按键处理
  if (!GPIO_ReadInputDataBit(GPIOD, MOUSE_LEFT))
     {
          Mouse_Buffer[0] = 0X01;
     }
  if (!GPIO_ReadInputDataBit(GPIOD, MOUSE_RIGHT))
     {
           Mouse_Buffer[0] = 0X02;
     }
  if (!GPIO_ReadInputDataBit(GPIOD, JOY_SEL))
     {
           Mouse_Buffer[0] = 0X04;
     }

    //========
  UserToPMABufferCopy(Mouse_Buffer, GetEPTxAddr(ENDP1), 4);          //copy mouse position info in ENDP1 Tx Packet Memory Area
  SetEPTxValid(ENDP1);                                                                                     // enable endpoint for transmission 
}
//略。。。。。


沙发
LPcfANS| | 2009-2-2 09:19 | 只看该作者

...

使用特权

评论回复
板凳
香水城| | 2009-2-2 18:31 | 只看该作者

哈哈,果然匠人的雨伞变成降落伞了

使用特权

评论回复
地板
程序匠人|  楼主 | 2009-2-2 22:01 | 只看该作者

下联来了

香斑的“牛人牛年出牛招 ”匠人还不敢当啊,分析如下:

1、在STM32应用“牛人”面前,匠人牛不起来,每次出没都要打伞,偷偷摸摸鬼鬼祟祟,形同“鼠辈”;

2、这个程序是在过年前改写的,那时候还不是“牛年”,而是“鼠年”;

3、不过是一个小小的“鼠标”程序,哪里敢说是“牛招”啊。

哈哈,这个下联出来了:“鼠辈鼠年做鼠标”,对你的“牛人牛年出牛招”,正好啊,呵呵~~~~

使用特权

评论回复
5
香水城| | 2009-2-3 10:35 | 只看该作者

哈哈,新春对联

 匠 人 酱 语
鼠         牛
辈         人
鼠         牛
年         年
做         出
鼠         牛
标         招

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

734

主题

11156

帖子

675

粉丝