教学目标与重难点
【内容01】强化定时器倒计数模式和模模式的应用。
【内容02】掌握多定时器联合应用的基本逻辑。
【内容03】完成实训项目:定时器3和定时器4同时间隔定时。
——–学生实践实操,老师讲解演示。
【内容04】专创融合专题。
【重点】实训项目:定时器3和定时器4同时间隔定时。
【难点】多定时器联合应用的程序设计思路。
教学单元核心内容与学习资源
实训案例:定时器3和定时器4同时间隔定时
新建工程,编写代码,在XMF09B/XMF09C开发套件上,完成以下任务:
1-选择内部16MHz时钟的128分频作为计数器3和计数器4的计数信号。
2-以倒计数模式启动定时器3,进行1毫秒的间隔定时。
3-以模模式启动定时器4,进行1毫秒的间隔定时。
4-在定时器3的中断服务函数中,每隔1秒翻转D4灯的开关状态,在定时器4的中断服务函数中,实现4秒的间隔定时,并翻转D6灯的开关状态。

#define D4 P1_1
#define D6 P1_4
unsigned int count3 = 0, count4 = 0;
/*=====================定时器3初始化函数=======================*/
void Init_Timer3()
{
T3CC0 = 0x7D;
T3IE = 1;
EA = 1;
T3CTL =0xFD; //倒计数模式,启动定时器3
}
/*====================定时器3中断服务函数======================*/
#pragma vector = T3_VECTOR
__interrupt void Service_Timer3()
{
count3++;
if(count3 == 1000) //1秒间隔定时到
{
D4 = ~D4;
count3 = 0;
}
T3CTL =0xFD;
}
/*=====================定时器4初始化函数=======================*/
void Init_Timer4()
{
T4CC0 = 0x7D;
T4IE = 1;
EA = 1;
T4CCTL0 |= 0x04; //开启定时器4通道0的比较模式
T4CTL =0xFE; //模模式,启动定时器4
}
/*====================定时器4中断服务函数======================*/
#pragma vector = T4_VECTOR
__interrupt void Service_Timer4()
{
count4++;
if(count4 == 4000) //4秒间隔定时到
{
D6 = ~D6;
count4 = 0;
}
}
/*==========================主函数============================*/
void main()
{
Init_Port(); //端口初始化
Init_Timer3(); //定时器3初始化
Init_Timer4(); //定时器4初始化
while(1); //死循环
}
