收藏 分销(赏)

定时器模块应用.doc

上传人:xrp****65 文档编号:7453827 上传时间:2025-01-05 格式:DOC 页数:4 大小:49KB 下载积分:10 金币
下载 相关 举报
定时器模块应用.doc_第1页
第1页 / 共4页
定时器模块应用.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
输入捕捉(IC)编程步骤:   初始化函数 TIOS---选择工作方式为IC TCTLx---设置对应位输入捕捉的方式(x=3、4,高位是3,低位是4) TSCRx---控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预分频 TIE---中断使能 中断函数 清除标志位---TFLG1 处理函数   【例程3】 //---------------------------------------------------------------------------// //功能说明:利用PP3通道产生40Hz,占空比为50%的方波 // 利用PT0采集方波的个数,并在PB口显示 //程序设计:电子设计吧 //设计时间:2010.01.13 //---------------------------------------------------------------------------// #include <hidef.h> /* common defines and macros */ #include <mc9s12dg128.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"   unsigned int Input_Num;   //----------------------时钟初始化------------------------------// void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz REFDV=1; //总线时钟=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08)); CLKSEL=0x80; } //--------------------通道0输入捕捉初始化-------------------// void ECT0_Init(void) { TSCR2=0x06; //禁止溢出中断,分频系数64(24/64MHz) TIOS_IOS0=0; //通道0为输入捕捉 TCTL4=0x01; //捕捉上升沿 TIE_C0I=1; //通道0输入捕捉中断允许 TSCR1=0x80; //使能定时器 } //---------------------PWM通道3初始化程序-------------------// void PWM_Init(void) { PWME_PWME3=0x00; // PWW is disabled 禁止 PWMPRCLK=0x33; // 0b0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置 PWMSCLA=150; // SA=A/2/150=10k 时钟设置 PWMSCLB=150; // SB=B/2/15 =10k 时钟设置 PWMCTL=0x00; // no concatenation 控制寄存器设置 PWMCLK_PCLK3=1; // PWM3-----SB 时钟源的选择 PWMPOL_PPOL3=1; // Duty=High Time 极性设置 PWMCAE_CAE3=0; // left-aligned 对齐方式设置 PWMPER3=250; // Frequency=SB/250=40 周期寄存器设置 PWMDTY3=125; // Duty cycle = 50% 占空比寄存器设置 PWME_PWME3=1; // enable 使能 } //----------------------主函数-------------------------// void main(void) { PLL_Init(); PWM_Init(); ECT0_Init(); DDRB=0XFF; PORTB=0X00; EnableInterrupts; for(;;) { } /* wait forever */ /* please make sure that you never leave this function */ } //--------------------转速计算:-------------------------------// // //智能车转速子函数 // //----------------------------------------------------------------// #pragma CODE_SEG NON_BANKED //定时器通道0输入捕捉中断 void interrupt 8 Timer0_Onput(void) { TFLG1_C0F=1; //清中断标志位 Input_Num++; PORTB=Input_Num; if(Input_Num>=255) { Input_Num=0; } } 输出比较(OC)编程步骤:   初始化函数 TIOS---选择工作方式为OC TCx---通道x的OC寄存器赋初值,经过N秒后进入第一次中断 TCTLx---设置对应位输入捕捉的方式(x=1、2,高四位是1,低四位是2) TSCRx---控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预分频 TIE---中断使能 中断函数 清除标志位---TFLG1 重新赋初值TCx 【例程4】 //---------------------------------------------------------------------------// //功能说明:利用PT0的输出比较功能,定时进入中断 // 利用PORTB显示定时的时间 //程序设计:电子设计吧 //设计时间:2010.01.15 //---------------------------------------------------------------------------//   #include <hidef.h> /* common defines and macros */ #include <mc9s12dg128.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"   //利用定时器输出比较功能产生定时中断 //----------------------变量定义----------------------// static unsigned int waittime = 0;   //---------------------时钟初始化-------------------// void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz REFDV=1; //总线时钟=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08)); CLKSEL=0x80; } //--------------------定时器初始化------------------// void ECT0_Init(void) { TIOS=0x01; //定时器通道0设置为输出比较 TC0=0x00ee; //赋初值,当TCNT从0计数到此值时第一次进入中断 TCTL2=0x02; //其他七路与定时器断开 执行的动作时:0通道输出清零 TSCR2=0x86 //溢出中断禁止 24M/64=2.67微秒,计一个数用2.67微秒 TSCR1=0x80; //使能定时器 TIE=0x01; //通道0输出比较中断允许 } //-----------------------主函数------------------------// void main(void) { PLL_Init(); ECT0_Init(); DisableInterrupts; DDRB=0xff; PORTB=0x00; for(;;) { EnableInterrupts; } } //-----------------------中断函数处理-------------------// #pragma CODE_SEG NON_BANKED void interrupt 8 Timer0_ISR(void) //8为定时器通道0的中断标号 { unsigned int m; TFLG1_C0F=1;//清中断标志位 DisableInterrupts; m=TCNT; TC0=m+37500; //37500*2.67us=10ms定时时间 waittime++; if(waittime>=255) { waittime=0; } PORTB=waittime; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服