定时器中断可用两种方式处理:查询和进入中断处理。
TMOD = 0x01;
TH0 = (65536-65000) /256;
TL0 = (65536-65000) %6;
EA = 1;
ET0 = 1;
TR0 = 1;
Speak1 =1;
if(TF0==1) 查询中断标志
{
Speak1=~Speak1;
//TH0 = (65536-65000) /256;
//TL0 = (65536-65000) %6;
TF0=0;
}
}
TMOD = 0x01;
TH0 = (65536-65000) /256;
TL0 = (65536-65000) %6;
EA = 1;
ET0 = 1;
TR0 = 1;
Speak1=~Speak1;
//TH0 = (65536-65000) /256;
//TL0 = (65536-65000) %6;
Init_T0 ();
Speak1 =1;
while(1); 等待中断
}
if(a++==20)
Speak1=~Speak1;
关键字:51学习 定时器中断
引用地址:51学习之定时器中断
1.查询
void Init_T0 (void) 定时器初始化
{
}
void Main() 主函数
{ Init_T0 ();
2.进入中断处理
void Init_T0 (void) 定时器初始化
{
}
void Time0_Int() interrupt 1 中断处理函数
{
}
void Main() 主函数
{
对于查询方式,一定要手动清楚中断标志。
上面2段程序,我屏蔽了,中断时重新装计数初值的语句,程序都可正常运行,所以我认为无论对于那种处理方式,重装初值都不必要。
初始化时,可定义输出口的初始状态。而在处理中断时,一定要用取反语句。手动置0或1,程序不能正常运行。
对于方式2,开始main中没写最后的while(1),程序不正常运行。
上述定时最大为65535,约65ms.如果计时大于此,可在中断中处理。
程序如下:
int a;
void Time0_Int() interrupt 1
{
{ a=0;
}
}
呵呵,在写上面这一小段时,开始没写a=0,灯一直亮,后来参考下,发现不清0.a一直变大,程序只能执行一次。
推荐阅读最新更新时间:2024-03-16 14:44
STM32定时器中断设置方法
今天调试了STM32的定时器功能,STM32定时器比较多,但调试都是一样的,寄存器都是一一对应的。就拿TIM2举例说明。在网上搜了好多关于定时器的设置,但大多数都是一个版本,而且都是针对库函数操作的,让人看起来一头雾水,对于初学者很是不利(我也是初学者)。下面我将自己的定时器设置过程一一记录下来,以供大家参考,我们共同学习 首先定义定时器头文件,也就是定义寄存器以供操作: //************************************************************************* // // TIM2-Register // //***********************
[单片机]
stm32mp1 Cortex M4开发篇6:TIM定时器中断
写在前面: 本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器、LED灯、数码管、蜂鸣器、震动马达、按键中断、风扇等),本篇是M4控制资源扩展板中的一篇。 资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种助主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提
[单片机]
ARM9 S3C2440—中断和定时器的初始化配置
ARM9 S3C2440的寄存器特别多,这也是它和单片机不同处之一,对ARM的编程主要也是对寄存器的操作,可是寄存器多了以后,就很容易忘记对某个寄存器的设置,如果能够总结一下寄存器配置的步骤,使得其有章可循,那么应用的时候就可以对号入座了。如果长时间不去使用ARM的话,再次使用的时候重新翻看烦人的芯片用户手册,显得就浪费时间了,这样,趁着熟悉的时候记录下这些要点,以后稍加翻看就能唤起记忆,这也是自己写这些博客的缘由。 定时器初始化配置步骤主要有: 1、rTCFG0和rTCFG1的设置 首先要设置定时器的时钟频率, Timer input clock Frequency= PCLK / {prescaler va
[单片机]
51单片机学习:串口通信实验
实验名称:串口通信实验 接线说明: 实验现象:下载程序后,当串口助手发送数据给单片机,单片机原封不动转发给串口助手显示 注意事项:使用黄色跳线帽将CH340旁的P5端子的UTX和P30短接,URX和P31短接,出厂默认已短接好 ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; /***************************
[单片机]
51单片机定时器T0的使用1-中断法
/********************************************** 方法1:延时法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:T0用于定时,方式1,定时时间50ms,中断方式,定时时间到,TF1=1,利用模拟串口发送字符0x67 **********************************************/ #include reg52.h #define uchar unsigned char sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; #de
[单片机]
msp432快速入门第七节之定时器中断
(一)定时器基本功能解析 在用户手册中我们可以看到MSP432P401R的两种定时器,分别是Timer32定时器和TAx定时器,在此依次对其进行介绍,最后使用TA定时器进行工程实战。 (1)TA定时器 Usermanual中的介绍为: 解释为:TimerA定时器是一个16位的定时计数器,每个定时器有7路比较寄存器,支持捕获,比较,定时,PWM等模式,支持中断,可在中断中判断7路比较寄存器中哪个产生中断。 主要寄存器就是配置寄存器,CNT计数器,频率基准,CCR各路比较值寄存器等等,这些寄存器一般是Timer外设通用的。 (2)Timer32定时器 首先看Usermanula的介绍: 解释为:Timer32是一个可以
[单片机]
PIC单片机-利用Timer2定时器的溢出中断实现动态扫描数码管
编写程序,令数码管的显示顺序为:0123,1230,2301,3012。 数码管显示分静态扫描和动态扫描,动态扫描显示一般分两种方式 1、选用一个数码管位,写断码显示,延时一定的时间,关闭显示,选择下一位,依次类推,完成数码管的多位扫描显示,这种方式比较耗CPU资源。 2、利用定时器,每隔一个固定的时间去选通,写断码,这种方式可以降低CPU的占用时间,同时,每个数码管显示时间固定,不存在“抖”的现象。 本程序中使用第二种方式,利用Timer2定时器的溢出中断实现动态扫描,Timer2包含一个周期控制寄存器,可以自动控制溢出周期。周期控制寄存器PR2的存在使得TIMER2的计数值有一个可以自由设定的上限。当TIMER
[单片机]
MSP430定时器中断程序
#include msp430g2452.h int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0; //P1.0设定为输出 P1OUT |= BIT0; //P1.0拉高 TACCTL0 = CCIE; //CCR0中断使能 TACCR0 = 50000; //终点值 //使用连续计数模式的话,此值不会有影响 TACTL = TASSEL_2 + MC_2;//控制定时器A 选择timer时钟ACLK和连续计数模式 _EINT
[单片机]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月13日历史上的今天
厂商技术中心