单片机学习小组
登录
直播中
李中宏
7年用户
1304经验值
私信
关注
如何通过定时器T1中断方式控制LED1周期性闪烁?
开启该帖子的消息推送
单片机
物联网
如何通过定时器T1中断方式控制LED1周期性闪烁?
回帖
(1)
李天竹
2022-1-25 10:56:30
/**************************************/
/* CC2530例程 */
/*例程名称:定时器(中断方式) */
/*描述:通过定时器T1中断方式控制LED1周期性闪烁
**************************************/
#include
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0 //定义LED1为P1_0口控制
uchar count=0;
//函数声明
void InitLed(void); //初始化P1口
void InitT1(); //初始化定时器T1
//初始化程序
/**
/
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
LED1 = 0; //LED1灯初始化熄灭
}
//定时器初始化
void InitT1() //系统不配置工作时钟时默认使用内部RC振荡,即16MHz
{
T1CTL = 0x0F; //128分频,正计数/倒计数模式,计数值由T1CC0L和T1CC0H确定
T1CC0L=0x12;
T1CC0H=0x7A;
//T1OVFIM=1;
T1IE=1;
EA=1;
//T1STAT= 0x21; //通道0, 中断有效
}
/
函数名称:main
功 能:main函数入口
入口参数:无
出口参数:无
返 回 值:无
***************************/
void main(void)
{
InitLed(); //调用初始化函数
InitT1();
while(1)
{
}
}
/***************************
函数名称:T1_INT
功 能:定时器1中断处理函数
入口参数:无
出口参数:无
返 回 值:无
***************************/
#pragma vector=T1_VECTOR
__interrupt void T1_INT(void)
{
T1STAT&=~0x21;
++count;
if(count == 3) //如果溢出次数到达3说明经过了1.5秒
{
LED1 = 1; //点亮LED1
}
if(count == 4) //如果溢出次数到达4说明经过了2秒
{
LED1 = 0; //熄灭LED1
count=0;
}
}
/**************************************/
/* CC2530例程 */
/*例程名称:定时器(中断方式) */
/*描述:通过定时器T1中断方式控制LED1周期性闪烁
**************************************/
#include
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0 //定义LED1为P1_0口控制
uchar count=0;
//函数声明
void InitLed(void); //初始化P1口
void InitT1(); //初始化定时器T1
//初始化程序
/**
/
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
LED1 = 0; //LED1灯初始化熄灭
}
//定时器初始化
void InitT1() //系统不配置工作时钟时默认使用内部RC振荡,即16MHz
{
T1CTL = 0x0F; //128分频,正计数/倒计数模式,计数值由T1CC0L和T1CC0H确定
T1CC0L=0x12;
T1CC0H=0x7A;
//T1OVFIM=1;
T1IE=1;
EA=1;
//T1STAT= 0x21; //通道0, 中断有效
}
/
函数名称:main
功 能:main函数入口
入口参数:无
出口参数:无
返 回 值:无
***************************/
void main(void)
{
InitLed(); //调用初始化函数
InitT1();
while(1)
{
}
}
/***************************
函数名称:T1_INT
功 能:定时器1中断处理函数
入口参数:无
出口参数:无
返 回 值:无
***************************/
#pragma vector=T1_VECTOR
__interrupt void T1_INT(void)
{
T1STAT&=~0x21;
++count;
if(count == 3) //如果溢出次数到达3说明经过了1.5秒
{
LED1 = 1; //点亮LED1
}
if(count == 4) //如果溢出次数到达4说明经过了2秒
{
LED1 = 0; //熄灭LED1
count=0;
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
物联网
怎样
通过
定时器
T1
查询
方式
去
控制
LED1
周期性
闪烁
?
2021-07-16
1185
请问CC2530的
定时器
应用的具体配置是怎样的?
2018-05-22
2716
怎样
通过
STM32
定时器
中断
配置去
控制
LED1
实现
LED1
状态取反呢
2021-11-23
2562
怎样
通过
定时器
0
中断
去
控制
D
1
指示灯间隔
闪烁
?
2021-07-16
1752
定时器
1
不能翻转
闪烁
2020-03-12
1477
用CC2530
定时器
T1
产生溢出
中断
如何实现?
2018-05-22
2828
请问51单片机
定时器
如何
控制
数码管与
led
共同
闪烁
?
2021-11-04
1839
定时器
中断
如何
控制
led
灯
闪烁
?
2022-02-15
3513
请问stm32
定时器
中断
如何
控制
led
灯
闪烁
?
2021-11-29
1800
如何使用STM32
定时器
的基本计数
定时
功能,
周期性
地让一个
LED
灯
闪烁
?
2022-02-08
1453
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分