文档详情

定时器1控制实验.doc

发布:2017-01-19约1.51千字共6页下载文档
文本预览下载声明
实验报告2 实验名称:定时器1 控制实验 实验原理: 其中T1CTL 为Timer1 定时器控制状态寄存器,通过该寄存器来设置定时器的模式和预分频系数。IRCON 寄存器为中断标志位寄存器, 通过该寄存器可以判断相应控制器Timer1 的中断状态。 实验原理图 实验结果: LED灯交替闪烁 2.修改频率为3.LED2的灯闪烁频率要比 原始代码: #includeioCC2530.h #define uint unsigned int #define uchar unsigned char //定义控制LED灯端口 #define LED1 P1_0 #define LED2 P1_1 uint counter=0;//统计溢出次数 uint TempFlag;//用来标志是否要闪烁 void Delay(uint); void Initial(void); //延时 void Delay(uint n) { uint i,t; for(i=0;i5;i++); for(t=0;tn;t++); } //初始化 void Initial(void) { P1DIR = 0x03; //P1_0、P1_1定义为输出 LED1=1; LED2=1;//熄灭 T1CTL=0x0d;//中断无效} void main() { Initial(); LED1=0; while(1) { if(IRCON0) { IRCON=0; TempFlag=!TempFlag; } if(TempFlag) { LED2=LED1; LED1=!LED1; Delay(6000); } } } 改进后代码: #includeioCC2530.h #define uint unsigned int #define uchar unsigned char //定义控制LED灯端口 #define LED1 P1_0 #define LED2 P1_1 uint counter=0; uint TempFlag; void Delay(uint); void Initial(void); //延时 void Delay(uint n) { uint i,t; for(i=0;i5;i++); for(t=0;tn;t++); } //初始化 void Initial(void) { P1DIR = 0x03; //P1_0、P1_1定义为输出 LED1=1; LED2=1; T1CTL=0x09;//寄存控制器TICTL用于控制定时器,设置频率为32 } void main() { Initial(); LED1=0; while(1) { if(IRCON0x02)//因为T11F在第二位 //判断TIIF是否在中断标志位置 { IRCON=0x0c; //1100 0000 TempFlag=!TempFlag; } if(TempFlag) { LED2=LED1; LED1=!LED1; Delay(10000); } } } 更改代码之后的结果: 蓝灯一直在闪,红灯闪得比蓝灯慢。实验成功
显示全部
相似文档