合泰触摸按键定时器中断(配手册讲解和一点例程)

合泰触摸按键单片机BS83A04A-3定时器中断

1、定时器的选择

在这里插入图片描述

PX30上的资源虽然不多但是定时器还是有几个的。触控按键的定时器是厂家已经配好的,没事不要去修改。这里我们选择上面的TIMER作为定时器。

2、定时器介绍

在这里插入图片描述

多的不说了,圈的地方看一下。TMR寄存器最大只能计数到255(FFH)。例如如果想计数200次你可以这样写:

_tmr = 56;//计数次数 = 255-_tmr

3、TMRC寄存器

在这里插入图片描述

时钟源有两个:一个是系统时钟8M(fsys)的,另一个是内部的低速时钟32khz(fsub)的。**无论你要求什么样的时基,这里都必须选8M的系统时钟。**问就是32khz那个不准(我选了32khz的时钟之后,代码就不受控制了)。_ton是定时器的控制位,请在合适的位置开启它以便开始计数。**最后分频就看个人需求了。

4、配置例程

 _tmr=56;   //定时器初值为56; 
 _tmrc=0x13;  //定时器为系统时钟,1:8分频,每隔1us就计数一次。计数200次即200us。5次即可实现1ms延时。
 _tf=0;   //清除中断标志位
 _emi = 1;//总中断
 _te = 1;//中断使能位

5、中断以及中断向量

在这里插入图片描述

TF在中断中被置位后会自己消除标志位的,用的时候可以不判断TF。

在这里插入图片描述

写中断函数的时候名字乱写都行但是中断向量绝对不可以乱写,比如我们这次触发的是定时器的中断所以向量我们填0xC。

6、中断函数例程:呼吸灯

1s取反一次pa4的电平,count在之前已经定义了。定时器见配置例程。
DEFINE_ISR (Time_Counter,0xc)
{
  if(count == 5000){
      _pa4 = ~_pa4;
      count = 0;
  }
}

7、输出输入端口相关寄存器

PAPUn:上拉电阻控制,0除能/1使能。

PACn:输入输出模式控制,0/输出/1输入。

PAn:端口A引脚的电平设置。


版权声明:本文为mafumafu65原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。