标题: STC8H4K64TL单片机低功耗触摸唤醒阈值寄存器TSTH11无法设置 [打印本页]

作者: littlespider    时间: 2022-9-16 12:48
标题: STC8H4K64TL单片机低功耗触摸唤醒阈值寄存器TSTH11无法设置
单片机型号STC8H4K64TL
TSTH11这个寄存器无法写入任何值,试过一次赋值(TSTH11 = 0x1234),高低字节分别赋值(TSTH11H = 0x12;TSTH11L = 0x34)都不行,是不是有什么使能开关需要设置?数据手册里貌似没有提到。
奇怪的是只有TSTH11这个寄存器不能写入,换另一片芯片还是这样,TSTH00~TSTH10 以及 TSTH12~TSTH15 都可以。
有谁用过这个单片机的这个功能吗?求解!
作者: coody_sz    时间: 2022-9-16 17:51
这些是扩展的寄存器,访问前要先设置 P_SW2 |= 0x80;
作者: littlespider    时间: 2022-9-16 19:20
本帖最后由 littlespider 于 2022-9-17 07:36 编辑
coody_sz 发表于 2022-9-16 17:51
这些是扩展的寄存器,访问前要先设置 P_SW2 |= 0x80;

这个设置了,跟它类似的寄存器TSTH00等都能写入,就是单单TSTH11不得
  1. for (i = 0; i < 16; ++i) {
  2.         TI = 0;
  3.         SBUF = tkey_thresholds[i] >> 8;
  4.         while(!TI);
  5.         TI = 0;
  6.         SBUF = tkey_thresholds[i];
  7.         while(!TI);
  8.         TI = 0;
  9.                                        
  10.         th_start[i] = tkey_thresholds[i];                                       
  11. }
  12.                         
  13. for (i = 0; i < 16; ++i) {
  14.         TI = 0;
  15.         SBUF = th_start[i] >> 8;
  16.         while(!TI);
  17.         TI = 0;
  18.         SBUF = th_start[i];
  19.         while(!TI);
  20.         TI = 0;
  21. }
复制代码


上面代码运行打印结果:
26 29 38 28 41 D8 4E 3F 31 A2 32 23 33 7F 21 5D 23 41 2C 91 23 53 2A 20 FF FF FF FF FF FF FF FF
26 29 38 28 41 D8 4E 3F 31 A2 32 23 33 7F 21 5D 23 41 2C 91 23 53 00 00 FF FF FF FF FF FF FF FF
作者: wulin    时间: 2022-9-16 20:32
这个特殊功能寄存器位于扩展RAM区域,访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写
没有实际使用过这个功能,试试下面的两种设置方法。打开STC8H.H头文件可以看到扩展的寄存器。
#define TSTH11  (*(unsigned int  volatile xdata *)0xfb66)
#define TSTH11H (*(unsigned char volatile xdata *)0xfb66)
#define TSTH11L (*(unsigned char volatile xdata *)0xfb67)

        P_SW2 |= 0x80;//打开
        TSTH11=0x1234;
        P_SW2 &= 0x7f;//关闭


        P_SW2 |= 0x80;//打开
        TSTH11H=0x12;
        TSTH11L=0x34;
        P_SW2 &= 0x7f;//关闭




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1