4860|0

1万

帖子

16

TA的资源

版主

楼主
 

【新版CH554评测】三、形成程序 [复制链接]

本帖最后由 ddllxxrr 于 2018-4-6 17:16 编辑

按照评测计划,这次评测应形成程序了。
我的想法是把USB HID复合设备那个程序,与TOUCHKEY的那个程序合并

当然以复合设备为模板好,只是把TOUCHKEY.c和.h考贝过来。

然后加入到工程:



在主函数中加入触摸按键的声明

  1. TK_Init( BIT4+BIT5+BIT6+BIT7,  1, 1 );                /* Choose TIN2, TIN3, TIN4, TIN5 for touchkey input. enable interrupt. */
  2.           TK_SelectChannel(0);                                                                                        /* NOTICE: ch is not compatible with the IO actually. */
复制代码


然后在HID处理函数加上触摸按键的判断:
  1. void HIDValueHandle()
  2. {
  3.     UINT8 i;
  4. //        if(MISO == 0)
  5. //        {
  6. //                                   //printf( "%c", 1 );
  7. //           //HIDMouse[2] = 1;
  8. //           //Enp2IntIn();
  9. //                                         i = 1;
  10. //                                }
  11. //               else if(SCK == 0)
  12. //                                {
  13. //                                         //HIDMouse[2] = -1;
  14. //           //Enp2IntIn();
  15. //                                        i = 2;
  16. //                                       
  17. //                                }
  18. //        else
  19. //          i = 'A';                                       
  20.         
  21.                if( Touch_IN != 0 )
  22.                 {
  23.                         printf("come here 1...\n");
  24.                         if( Touch_IN & CH2 )
  25.                         {
  26.                                 i = 'a';
  27.                                 
  28.                         }
  29.                         if( Touch_IN & CH3 )
  30.                         {
  31.                                 i = 'w';
  32.                         
  33.                         }
  34.                         if( Touch_IN & CH4 )
  35.                         {
  36.                                 i = 'd';
  37.                                 
  38.                         }
  39.                         if( Touch_IN & CH5 )
  40.                         {
  41.                                 i = 's';
  42.                                 
  43.                         }
  44.                         Touch_IN = 0;
  45.                         
  46.                 }
  47.                 else
  48.                         i=0;
  49.         
  50.         
  51.         
  52.         
  53.         
  54.         
  55.                switch(i)
  56.         {
  57. //êó±êêy¾YéÏ′«ê¾ày
  58.         case 1:                                                        //×ó¼ü
  59.             HIDMouse[2] = -1;
  60.             Enp2IntIn();
  61.                                     i=0;
  62.             //HIDMouse[0] = 0;
  63.             break;
  64.         case 2:                                                        //óò¼ü
  65.             HIDMouse[2] = 1;
  66.             Enp2IntIn();
  67.                                     i=0;
  68.             //HIDMouse[0] = 0;
  69.             break;
  70. //¼üÅìêy¾YéÏ′«ê¾ày
  71.         case 'a':                                                         //A¼ü
  72.             FLAG = 0;
  73.             HIDKey[2] = 0x04;                                             //°′¼ü¿aê¼
  74.             Enp1IntIn();
  75.             HIDKey[2] = 0;                                                //°′¼ü½áêø
  76.             while(FLAG == 0)
  77.             {
  78.                 ;    /*μè′yéÏò»°ü′«êäíê3é*/
  79.             }
  80.             Enp1IntIn();
  81.                                                 i=0;
  82.             break;
  83.         case 'w':                                                         //P¼ü
  84.             FLAG = 0;
  85.             HIDKey[2] = 0x1a;
  86.             Enp1IntIn();
  87.             HIDKey[2] = 0;                                                //°′¼ü½áêø
  88.             while(FLAG == 0)
  89.             {
  90.                 ;    /*μè′yéÏò»°ü′«êäíê3é*/
  91.             }
  92.             Enp1IntIn();
  93.                                                 i=0;
  94.             break;
  95.                                 case 's':                                                         //P¼ü
  96.             FLAG = 0;
  97.             HIDKey[2] = 0x16;
  98.             Enp1IntIn();
  99.             HIDKey[2] = 0;                                                //°′¼ü½áêø
  100.             while(FLAG == 0)
  101.             {
  102.                 ;    /*μè′yéÏò»°ü′«êäíê3é*/
  103.             }
  104.             Enp1IntIn();
  105.                                                 i=0;
  106.             break;               
  107.         case 'd':                                                         //Num Lock¼ü
  108.             FLAG = 0;
  109.             HIDKey[2] = 0x07;
  110.             Enp1IntIn();
  111.             HIDKey[2] = 0;                                                //°′¼ü½áêø
  112.             while(FLAG == 0)
  113.             {
  114.                 ;    /*μè′yéÏò»°ü′«êäíê3é*/
  115.             }
  116.             Enp1IntIn();
  117.                                                 i=0;
  118.             break;
  119.         default:      
  120.             i=0;                                        //ÆäËû
  121.             UEP1_CTRL = UEP1_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK;     //ĬèÏó|′eNAK
  122.             UEP2_CTRL = UEP2_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK;     //ĬèÏó|′eNAK
  123.             break;
  124.         }
  125. }
复制代码


所以在上边加判断,因为主函数时正常情况下就是在上边的函数里循环:
  1. main()
  2. {
  3.     CfgFsys( );                                                           //CH559ê±ÖóÑ¡ÔñÅäÖÃ
  4.     mDelaymS(25);                                                          //DT¸ÄÖ÷Æμμè′yÄú2¿¾§ÕñÎ趨,±Ø¼ó        
  5.     mInitSTDIO( );                                                        //′®¿ú03õê¼»ˉ
  6. #ifdef DE_PRINTF
  7.     printf("start ...\n");
  8. #endif        
  9.    
  10.           printf("start ddllxxrr ...\n");
  11.           USBDeviceInit();                                                      //USBé豸Ä£ê½3õê¼»ˉ
  12.           TK_Init( BIT4+BIT5+BIT6+BIT7,  1, 1 );                /* Choose TIN2, TIN3, TIN4, TIN5 for touchkey input. enable interrupt. */
  13.           TK_SelectChannel(0);                                                                                        /* NOTICE: ch is not compatible with the IO actually. */
  14.           printf("come here ...\n");
  15.           EA = 1;                                                               //ÔêDíμ¥Ƭ»úÖD¶Ï
  16.     UEP1_T_LEN = 0;                                                       //Ô¤ê1ó÷¢Ëí3¤¶èò»¶¨òaÇå¿Õ
  17.     UEP2_T_LEN = 0;                                                       //Ô¤ê1ó÷¢Ëí3¤¶èò»¶¨òaÇå¿Õ
  18.     FLAG = 0;
  19.     Ready = 0;
  20.           //Port1Cfg(1,6);
  21.           //Port1Cfg(1,7);
  22.     while(1)
  23.     {
  24.         if(Ready)
  25.         {
  26.           while(1)
  27.                              {                        
  28.                                         HIDValueHandle();
  29.                                         }        
  30.         }
  31.         if(Ready&&(Ep2InKey == 0)){                                       
  32. #ifdef DE_PRINTF                                                          //¶áè¡D¾Æ¬IDoÅ
  33.           printf("ID0 = %02x %02x \n",(UINT16)*(PUINT8C)(0x3FFA),(UINT16)*(PUINT8C)(0x3FFB));
  34.           printf("ID1 = %02x %02x \n",(UINT16)*(PUINT8C)(0x3FFC),(UINT16)*(PUINT8C)(0x3FFD));
  35.           printf("ID2 = %02x %02x \n",(UINT16)*(PUINT8C)(0x3FFE),(UINT16)*(PUINT8C)(0x3FFF));
  36. #endif                                                                  
  37.           CH554USBDevWakeup();                                           //        
  38.           mDelaymS( 10 );                                         
  39.           Enp1IntIn();                                
  40.         }
  41.         mDelaymS( 100 );                                                   //Ä£Äaμ¥Ƭ»ú×öÆäËüêÂ
  42.     }
  43. }
复制代码






上边的键值是在度娘上查到的:



然后,把开发板接USB插到电脑上,出现了两个键盘,打开记事本看了一下:




唯一不满意的是停不下来,要想停得先按别的按键一下




此内容由EEWORLD论坛网友ddllxxrr原创,如需转载或用于商业用途需征得作者同意并注明出处




此帖出自单片机论坛
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表