timer.c
来自「dsp2407的一个中断服务程序简单例程」· C语言 代码 · 共 48 行
C
48 行
#include "F2407REGS_c.h"
void Timer1_Initializing()
{
EVAIMRA=EVAIMRA|0x0080; // 仅允许定时器1的周期中断
/* 0000,0000,1000,0000 =0x0080
0000 0~~~ ~~~~ ~~~~ [reserved]
~~~~ ~0~~ ~~~~ ~~~~ [T1OFINT ENABLE]
~~~~ ~~0~ ~~~~ ~~~~ [T1UFINT ENABLE]
~~~~ ~~~0 ~~~~ ~~~~ [T1CINT ENABLE]
~~~~ ~~~~ 1~~~ ~~~~ [T1PINT ENABLE]1:允许定时器1的周期中断
~~~~ ~~~~ ~000 ~~~~ [reserved]
~~~~ ~~~~ ~~~~ 0~~~ [CMP3INT ENABLE]
~~~~ ~~~~ ~~~~ ~0~~ [CMP2INT ENABLE]
~~~~ ~~~~ ~~~~ ~~0~ [CMP1INT ENABLE]
~~~~ ~~~~ ~~~~ ~~~0 [PDPINTA ENABLE]
*/
EVAIFRA=EVAIFRA&0x0080; // 清除定时器1周期中断标志
/* 0000,0000,1000,0000 =0x0080
0000 0~~~ ~~~~ ~~~~ [reserved]
~~~~ ~0~~ ~~~~ ~~~~ [T1OFINT FLAG]
~~~~ ~~0~ ~~~~ ~~~~ [T1UFINT FLAG]
~~~~ ~~~0 ~~~~ ~~~~ [T1CINT FLAG]
~~~~ ~~~~ 1~~~ ~~~~ [T1PINT FLAG]1:清除定时器1周期中断标志
~~~~ ~~~~ ~000 ~~~~ [reserved]
~~~~ ~~~~ ~~~~ 0~~~ [CMP3INT FLAG]
~~~~ ~~~~ ~~~~ ~0~~ [CMP2INT FLAG]
~~~~ ~~~~ ~~~~ ~~0~ [CMP1INT FLAG]
~~~~ ~~~~ ~~~~ ~~~0 [PDPINTA FLAG]
*/
T1CON=0x100C; // Timer1为连续增计数模式,预分频值为1,使用内部时钟
/* 0001,0000,0000,1100 =0x100C
00~~ ~~~~ ~~~~ ~~~~ [Free,Soft] 00:一旦仿真挂起后,定时器1立即停止
~~0~ ~~~~ ~~~~ ~~~~ [reserved]
~~~1 0~~~ ~~~~ ~~~~ [TMODE1,TMODE0] 10: 连续增计数模式
~~~~ ~000 ~~~~ ~~~~ [TPS2-TPS0] 000:预定标系数, x/1
~~~~ ~~~~ 0~~~ ~~~~ [T2SWT1] 0:定时器2使用自身的周期寄存器
~~~~ ~~~~ ~0~~ ~~~~ [TENABLE] 0: 定时器1不工作
~~~~ ~~~~ ~~00 ~~~~ [ TCLKS1, TCLKS0] 00: 使用内部CPU时钟
~~~~ ~~~~ ~~~~ 11~~ [TCLD1, TCLD0] 11: 保留
~~~~ ~~~~ ~~~~ ~~0~ [TECMPR] 0: 禁止定时器比较操作
~~~~ ~~~~ ~~~~ ~~~0 [SELT1PR]0: 该位在定时器1中保留
*/
T1PER=0x0F424; // Timer1的周期寄存器值设为200ms
// 也可用10进制数赋值,"T1PER=62500;"
T1CNT=0x00; // Timer1的计数器清零
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?