单片机技术与应用课件 15.(实训1)T1定时器自由运行模式下控制LED1亮灭.pptx
实训1-T1定时器自由运行模式下控制LED1亮灭zigbee技术开发主讲人:XXXZigbeetechnologydevelopment
实训1-T1定时器自由运行模式下控制LED1亮灭任务描述基于ZigBee模块做基础开发,利用定时功能实现每隔1sLED1闪烁1次。定时时间要求使用定时器1,32MHz时钟频率,工作模式为自由运行模式,8分频。
实训1-T1定时器自由运行模式下控制LED1亮灭1.知识分析任务分析01LED1闪烁→LED1与单片机端口对应关系→端口初始化函数02定时时间要求使用定时器1→定时器T1初始化函数03定时器T1中断服务函数→中断服务函数基本书写格式04保证程序完整性→添加头文件,定义相关变量,设计主函数
实训1-T1定时器自由运行模式下控制LED1亮灭2.技能分析任务分析实现定时器1自由运行模式下控制LED闪烁,必须清晰溢出次数的计算方法,熟练运用IAR软件进行自由运行模式下定时/计数功能相关函数的编程,并能编译、链接、调试程序,实训仿真演示。
实训1-T1定时器自由运行模式下控制LED1亮灭3.设备分析任务分析实训任务选择ZigBee实训模块如图所示,要会识读此实训模块电路图,并明确此模块上LED灯与CC2530单片机端口关系。
实训1-T1定时器自由运行模式下控制LED1亮灭程序设计思路引入头文件定义相关变量设计端口初始化函数设计定时器T1初始化函数设计定时器T1中断服务函数主函数
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭引入头文件定义相关变量设计端口初始化函数#includeiocc2530.h#defineLED1P1_0unsignedintcount;voidInit_Port(){P1SEL=~0x01;P1DIR|=0x01;LED1=0;}
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭设计定时器T1初始化函数voidinitial_T1(){EA=1;T1IE=1;TIMIF|=0x40;//或OVFIM=1;T1CTL=0x05;}使能总中断使能T1中断使能T1溢出中断设置分频系数和工作模式并启动定时器
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭设计定时器T1中断服务函数#pragmavector=T1_VECTOR__interruptvoidT1_ISR(void){T1IF=0;if(定时器溢出次数满足定时时间要求){……}else{count++;}}基本书写格式
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭溢出周期=分频数32×106×65536溢出次数=定时时间溢出周期本任务采用8分频,自由运行模式,所以其溢出周期约为:832×106×65536≈0.016s要实现1s闪烁1次,则溢出次数为:1/0.016=62.5,大约需要中断62次
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭设计定时器T1中断服务函数#pragmavector=T1_VECTOR__interruptvoidT1_ISR(void){T1IF=0;if(count62){LED1=!LED1;count=0;}else{count++;}}
任务实施实训1-T1定时器自由运行模式下控制LED1亮灭主函数?voidmain(void){CLKCONCMD=~0x7F;while(CLKCONSTA0x40);initial_T1();Init_Port();while(1);}晶振设置为32MHz等待晶振稳定调用T1初始化函数调用端口初始化函数
任务总结1.自由运行模式的工作原理及相关寄存器的配置2.自由运行模式下溢出周期及溢出次数的计算3.自由运行模式下T1初始化函数的设计思路4.自由运行模式下T1中断服务函数的设计思路实训1-T1定时器自由运行模式下控制LED1亮灭
谢谢观看THANKYOU