定时器4实验
来源:互联网 发布:javascript功能 编辑:程序博客网 时间:2024/05/18 00:39
下面的这个代码主要是使用定时器3来控制led灯的亮灭的,使用的单片机是粤嵌的cc2530底板。
/*** 项目名称:定时器4实验* 时间:2014年1月5日10:16:04* 作者:林少油**/#include <ioCC2530.h>#define YLED P1_0#define BLED P1_1#define LIGHTOPEN 1#define LIGHTCLOSE 0#define uint unsigned int#define uchar unsigned charuint Count=0;//计数器uchar LedFlag=0;//闪烁标志void Delay(uint n);void Led_T3_Init(void);/*********************************** 定时器初始化宏定义**********************************/#define Timer34_Init(timer) \ do{ \ T##timer##CTL |=0X04; \ T##timer##CCTL0 =0x00; \ T##timer##CC0 = 0X00; \ T##timer##CCTL1 =0x00; \ T##timer##CC1 =0x00; \ }while(0) /********************************** 定时器T3/4溢出中断寄存器位的宏定义*********************************/#define Timer34_OverFlaw_Interrupt(timer,val) \ T##timer##CTL = (val)?(T##timer##CTL | 0x08):(T##timer##CTL & ~0x80)/********************************** 定时器T3/4启动寄存器位的宏定义********************************/#define Timer34_Start(timer,val) \ T##timer##CTL = (val)?(T##timer##CTL | 0x10):(T##timer##CTL & ~0x10)/********************************** 定时器T3/4分频设置寄存器位的宏定义*********************************/#define Timer34_Div(timer,val) \ do{ \ T##timer##CTL &=~0xe0; /*先把前3位清0,以便下面能够够正确的设置这3位寄存器位*/ \ T##timer##CTL = (val==2)?(T##timer##CTL | 0x20): /*2倍分频*/ \ (val==4)?(T##timer##CTL | 0x40): /*4倍分频*/ \ (val==8)?(T##timer##CTL | 0x60): /*8倍分频*/ \ (val==16)?(T##timer##CTL | 0x80): /*16倍分频*/ \ (val==32)?(T##timer##CTL | 0xa0): /*32倍分频*/ \ (val==64)?(T##timer##CTL | 0xc0): /*64倍分频*/ \ (val==128)?(T##timer##CTL | 0xe0): /*128倍分频*/ \ (T##timer##CTL | 0x00); /*不分频*/ \ }while(0);/********************************** 定时器T3/4模式控制寄存器为的宏定义*********************************/#define Timer34_Mode(timer,val) \ do \ { \ T##timer##CTL &=~0x03; /*先把这2位清0,以便下面能够正确的设置这2个寄存器位*/ \ T##timer##CTL = \ (val==1)?(T##timer##CTL | 0x01): /*倒计数,从T3CC0到0x00的计数*/ \ (val==2)?(T##timer##CTL | 0x02): /*模,从0x00到T3CC0的计数*/ \ (val==3)?(T##timer##CTL | 0x03): /*正倒计数,从0x00到T3CC0重复计数,再降到0x00*/\ (T##timer##CTL | 0x00); /*自由运行,从0x00到0xff重复计数 */ \ }while(0);/********************************* @prief Led和T3的初始化函数********************************/void Led_T3_Init(){ CLKCONCMD &= ~0X7f; //选择32MHz的振荡器频率 while(CLKCONSTA & 0x40);//等待振荡器稳定下来 P1DIR |= 0x03; //P1.0和P1.1设置为输出 YLED=LIGHTOPEN; BLED=LIGHTCLOSE; Timer34_Init(3);//初始化T3寄存器 Timer34_Div(3,128);//选择128倍分频 EA = 1; //打开中断总开关 T3IE = 1;//打开定时器3的中断开关 Timer34_OverFlaw_Interrupt(3,1);//打开定时器3溢出中断的开关 Timer34_Mode(3,0);//选择定时器3自由运行模式,从0x00到0xff重复计数 Timer34_Start(3,1); //定时器3开始计数} main(){ Led_T3_Init(); while(1) { if(LedFlag) { YLED ^=1; BLED ^=1; } Delay(6400); }}/********************************** @prief 延时函数*********************************/void Delay(uint n){ uint i; for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++);}/*********************************@prief T3中断服务程序********************************/#pragma vector = T3_VECTOR__interrupt void T3_ISR(){ IRCON = 0X00; //中断清0 if(Count>=2441) { Count = 0; LedFlag ^= 1; } else { Count++; }}
0 0
- 定时器4实验
- 4、定时器中断实验
- 实验四:定时器实验
- ZigBee基础实验(四)--定时器3、定时器4
- 【实验六】定时器中断实验
- 51单片机定时器实验
- 中断和定时器实验
- mini2440 定时器中断实验
- mini2440 定时器实验
- 定时器/计数器设计实验
- 定时器/计数器实验报告
- 定时器中断实验
- 定时器中断实验
- 定时器中断实验
- stm32定时器中断实验
- 定时器中断实验
- 定时器中断实验
- s5pv210裸机实验之定时器
- 算法导论第25章 所有结点对的最短路径问题Floyd等
- svm系列八
- QTP中使用自定义vbs类
- 黑马程序员—学习有感
- svm系列九
- 定时器4实验
- 黑马程序员_01Java编程基础
- python3.3 import替代方案
- Cygwin安装
- 所有结点对的最短路径问题之Johnson算法
- Struts2前后台参数传递总结
- 什么是IaaS, PaaS和SaaS及其区别
- JavaSE_day1概述
- ubuntu如何调整屏幕亮度