定时器1控制实验.doc
文本预览下载声明
实验报告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);
}
}
}
更改代码之后的结果:
蓝灯一直在闪,红灯闪得比蓝灯慢。实验成功
显示全部