这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 哪位知道国产89位单片机STC8H触摸按键的原理和用法?

共1条 1/1 1 跳转至

哪位知道国产89位单片机STC8H触摸按键的原理和用法?

工程师
2021-03-04 09:53:41     打赏

按例程,我写了一个调试的程序,但TSSTA2 返会的数值一值是  0x47,TSDOV 一直为溢出状态。
想请教下:怎么调整参数?
按键的扫描数跟 TSCFG1的 开关电容工作频率有什么关系?

还有放电时间的关系?参考电压的关系?

先谢过了!


我的电路和代码分别如下:


  1. #include "touch_key.h"


  2. void intTouch_key()

  3. {

  4.         P_SW2|=0x80;

  5.         TSRT = 0x00;//ûÓзÖʱLED

  6.         TSCHEN1=0x0f; //ͨµÀΪ TK0---TK3

  7.         TSCFG1  = (0<<7) + 3;        // ƵÂÊF_key=fosc/(2*(TSCFG1[6:4]+1)),·Åµçʱ¼ä 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) ×îС3

  8.         TSCFG2  = 2;                        //        //ÅäÖô¥Ãþ°´¼ü¿ØÖÆÆ÷µÄÄÚ²¿²Î¿¼µçѹ(AVCCµÄ·Öѹ±È), 0(1/4)  1(1/2)  2(5/8)  3(3/4)

  9.   TSCTRL = (1<<7)+ 0<<6+0;                        //¿ªÊ¼×Ô¶¯É¨Ãè, ÎÞÆ½¾ù, B7: TSGO,  B6: SINGLE,  B5: TSWAIT, B4: TSWUCS, B3: TSDCEN, B2: TSWUEN, B1 B0: TSSAMP


  10. }



  11. unsigned int  readkey()

  12. {


  13.         unsigned char keydat;

  14.         unsigned int keycnt;


  15.         keydat=TSSTA2;


  16.         if(keydat&0x40)//TSDOV ÖÃ1  ÓÐÒç³ö

  17.         {

  18.                 TSSTA2|=0x40;

  19.         }

  20.   

  21.         if(keydat&0x80)//¶ÁÈ¡Íê³É

  22.         {

  23.                 TSSTA2|=0x80;

  24.                

  25.                 switch (keydat&0x0f)

  26.                 {

  27.                         case 0:{keycnt=TSDATH<<8|TSDATL;

  28.                                      

  29.                                

  30.                                 }break;

  31.                         case 1:{}break;

  32.                         case 2:{}break;

  33.                         case 3:{}break;

  34.                         default:break;

  35.                 }

  36.                

  37.         }

  38.        

  39.         return keycnt;



  40. }





关键词: 国产MCU          STC8H     触摸按键    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]