当前位置: 首页 > news >正文

政府网站意义/网店推广网站

政府网站意义,网店推广网站,北京营销型网站建设公司,域名停靠网页应用大全软件免费3:定时器中断 上一节讨论的自由定时器其实就是一个不断自增的计数器而已,而我们常常需要的是一个定时的中断功能。H8的定时器可以提供两种形式的时钟中断。比较中断和溢出中断。比较中断就是设置一个值,在定时器的计数器到达这个数字的时候就…

3:定时器中断

上一节讨论的自由定时器其实就是一个不断自增的计数器而已,而我们常常需要的是一个定时的中断功能。H8的定时器可以提供两种形式的时钟中断。比较中断和溢出中断。比较中断就是设置一个值,在定时器的计数器到达这个数字的时候就发出中断。另一种溢出中断就是在计数器到达自己的最大值的时候产生一个溢出中断。对于一个H8的定时器它有两个16位比较寄存器,GRA,GRB。当GR*的数字和TCNT的值一样的时候比较成功,发出中断。

设置步骤

1:设置TCR寄存器选择时钟分频倍数。

   这是设置定时器的源,没什么好商量的,第一个设置没错。但是它的另一个重要功能就是设置TCNT清零的时机。如果是对GRA做比较,那么达到GRA的时候就可以清零TCNT了,如果是看GRB的话,就在GRB比较合适就清零。也可以设置溢出时清零。这样一个定时器就可以输出三个中断信号了。

2:设置TIER寄存器,选择允许输出的中断。

  GRA,GRB,OVF三种都可以产生中断,TIER就是设置选择哪个来产生中断的。你可能会问,这不是浪费么?其实不然,GRA和GRB是可以同时使用的,也就是说在GRA比较结束后还可以比较GRB,这样就可以实现输出不同占空比的波形,在PWM控制中非常有用。

3:定义中断服务函数。

   H8的C编译器有特殊的定义中断服务程序的方法

  #pragma interrupt(irp_100ms_handle)
  VOID irp_100ms_handle()
 {
      ...
 }

4:中断端服务函数的地址加入到VECT(中断向量表)中。

中断向量表对所有的中断都做了固定的映射,所以不能想象着去设置中断向量表,参见芯片的设计书进行编写。

2009122317255117.jpg

上面看到IMIA1是1号定时器的GRA比较中断位,在对应的地址设置终端服务函数就行了。

 

 1  .CPU 300HA
2 .SECTION V,CODE
3 .IMPORT _main
4 .IMPORT _irp_100ms_handle
5
6 .DATA.L _start
7 .DATA.L int_error
8 .DATA.L int_error
9 .DATA.L int_error
10 .DATA.L int_error
11 .DATA.L int_error
12 .DATA.L int_error
13 .DATA.L int_error
14 .DATA.L int_error
15 .DATA.L int_error
16 .DATA.L int_error
17 .DATA.L int_error
18 IRQ0: .DATA.L int_error
19 IRQ1: .DATA.L int_error
20 IRQ2: .DATA.L int_error
21 IRQ3: .DATA.L int_error
22 IRQ4: .DATA.L int_error
23 IRQ5: .DATA.L int_error
24 .DATA.L int_error
25 .DATA.L int_error
26 .DATA.L int_error
27 .DATA.L int_error
28 .DATA.L int_error
29 .DATA.L int_error
30 .DATA.L int_error
31 .DATA.L int_error
32 .DATA.L int_error
33 .DATA.L int_error
34 .DATA.L _irp_100ms_handle
35
36 .SECTION P,CODE,ALIGN = 2

 

上面写了很多代码才排到0x0070,其实不用这样辛苦,汇编中有地址声明的语句,这里就不详细说明了。整个中断的设置就完成了,注意,一般在中断中为了不被别的中断影响,会先关闭中断,执行自己的处理再开启中断允许。

 

(以上)

 

转载于:https://www.cnblogs.com/cbs-soft/archive/2009/12/23/1630823.html

相关文章: