长春抗癌研究所可信吗:H8/3048定时器设置
来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 12:52:12
#include
#include <
#include "kernel_id.h"
#include "sample1.h"
void main_task(VP_INT exinf)
{
unsigned int i = 0;
syslog(LOG_NOTICE, "Program starts.");
PB.DR.BIT.B6 = 1;
PB.DR.BIT.B7 = 1;
ITU1.TCR.BIT.TPSC = 0;
ITU1.TCR.BIT.CCLR = 1;
ITU1.TIOR.BIT.IOA = 2;
ITU1.GRAH = 0xAC;
ITU1.GRAL = 0xCD; //1/22.1184/1000)=2ms
ITU.TSTR.BIT.STR1 = 0; //关闭定时器
while (1)
{
PA.DR.BYTE = 0x0B;
if (!P7.DR.BIT.B3)
{
PB.DR.BIT.B6 = 0;
Flag = 1;
}
if(Flag)
{
ITU.TSTR.BIT.STR1 = 1; //开启定时器
if (ITU1.TSR.BIT.IMFA)
{
i++;
ITU1.TSR.BIT.IMFA = 0;
if(i==5000)
{
PB.DR.BIT.B7 = 0;
}
}
}
}
syslog(LOG_NOTICE, "Program ends.");
kernel_exit();
定时器初始化如下:
1.选择定时器时钟源。
2.选择计数清0方法。
3. 通过定时器I/O控制寄存器TIOR选择输出比较或输入扑捉功能。
4.装载初值。设置计数周期。
5.开启中断源。
6.启动定时器。
Viod Init_timer1()
{
ITU1.TCR.BIT.TPSC = 0; //选择定时器时钟源,内部时钟源。 ITU1.TCR.BIT.CCLR = 1; //选择TCNT由GRA比较相等清0。
ITU1.TIOR.BIT.IOA = 2; //I/O控制位,选择比较GRA相等时输1。
ITU1.GRAH = 0xAC;
ITU1.GRAL = 0xCD; //初值装载,计数周期T=2ms
ITU1. TIER.BIT.IMIEA = 1; //定时器中断允许寄存器,输入相等中断
ITU.TSTR.BIT.STR1 = 0; //关闭计数器
}