📄 timer.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -