要使用PIC的TIMER0,首先需要看数据手册,熟悉寄存器配置
这里需要用到OPTION,INTCON的配置,还有TMR0计数值的预置。
典型应用程序:利用定时中断实现发光管一闪一闪功能。
源程序:
#include
#define uchar unsigned char
#define uint unsigned int
#define LED1 RC0
///////////////////////初始化设置程序////////////////////////////////
void Init(void)
{
PORTA = 0B00000000;
PORTB = 0B00000000;
PORTC = 0B00000000;
TRISA = 0B00000000;//设置PORTA口为输出
TRISB = 0B00000001;//设置RB0为输入,作为按键口
TRISC = 0B00000000;//设置RC输出
ADCON1=0B11111111;//设置为数字I/O
counter=0;
OPTION=0B01010011;//配置中断和定时器0
TMR0=5;
T0IE=1;//使能定时器中断0
GIE=1; //全局中断使能
}
///////////////////////定时中断程序////////////////////////////////
void interrupt timer0_int(void)
{
T0IF=0;//清除中断标志位
TMR0=5; //重新设置定时器时间
counter++;
if(counter==250)
{
counter=0;
LED1=!LED1;
}
}
///////////////////////主程序////////////////////////////////
void main (void)
{
Init();//初始化程序
PORTC=0XFF;
PORTB=0XFF;
while(1);
}
关键字:PIC16F72 TIMER0 定时器
引用地址:
PIC16F72 TIMER0定时器练习程序
推荐阅读最新更新时间:2024-03-16 15:08
STM32F407ADC多通道+定时器触发+DMA模式设置
#include adc.h u8 UpdataTIM = 0; //更新TIM2定时器标志 u16 CurrentFreq = 500;//默认市电频率,单位为0.1hz ADBASE_TYPE uAD_Buff_A ; //ADC采集缓存A ADBASE_TYPE uAD_Buff_B ; //ADC采集缓存B //考虑到可能出现的数据处理时间较长的问题,临时添加缓存 //u16 uAD_IN_BUFF ; ADBASE_TYPE *CurrentBuffPtr = NULL; //当前缓存指针 static void ADCInit_GPIO(void) { GPIO_InitTypeDef G
[单片机]
STM32F0(5)定时器PWM
// 经过下面的设置之后,该设置的引脚就会产生PWM波 void TIM1_PWM_Init(void) { // 配置引脚的复用功能 RCC- AHBENR |= RCC_AHBENR_GPIOAEN; GPIOA- AFR |= 0x00000002; GPIOA- MODER |= GPIO_MODER_MODER8_1; GPIOA- MODER &= ~GPIO_MODER_MODER8_0; GPIOA- OSPEEDR |= GPIO_OSPEEDR_OSPEEDR8; GPIOA- OTYPER |= GPIO_OTYPER_OT_8; // 配置PWM波的相关属性 RCC- APB2ENR |= RCC_APB2
[单片机]
STM32复习笔记(七)定时器&定时器中断
一、STM32定时器: STM32F10x系列总共最多有8个定时器: 二、三种STM32定时器区别: 三、通用定时器功能特点描述: STM32 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 位于低速的APB1总线上(APB1) 16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。 4 个独立通道(TIMx_CH1~4),这些通道可以用来作为: ① 输入捕获 ② 输出比较 ③ PWM 生成(边缘或中间对
[单片机]
SPCE061A使用时基,实现从8Hz到1024Hz的定时器
#include SPCE061A.H unsigned int g_uiOutput=0,iii=0; void IRQ6(void) __attribute__ ((ISR)); void IRQ6(void) { if(*P_INT_Ctrl&C_IRQ6_TMB1)//C_IRQ6_TMB1对应于main()中的*P_INT_Ctrl_New|=XXXXXXX { if(g_uiOutput==64)//用于查看是否真的以秒为累加,64为频率数 { g_uiOutput=0; iii++; } g
[单片机]
定时器实验
实验 定时器实验 一.实验目的 1.学习8051内部定时器/计数器的使用和编程方法 2.进一步掌握中断处理程序的编写方法 二.实验说明 对内部定时/计数器的编程主要是定时常数的设置和有关控制寄存器的设置。本实验使用定时器功能产生1秒钟定时,程序运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光二极管每隔一秒钟点亮一次。 与定时器有关的寄存器有TMOD(工作方式寄存器)和控制寄存器(TCON)。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON控制定时器的运行或停止,并在定时器溢出时设置相应的标志位,产生定时器中断。 单片机的定时器作定时功能时,是对机器周期计数。每个机器周期的长度是1
[单片机]
MSP430学习点滴——看门狗定时器
看门狗有三种工作模式:停止模式,计时器模式,看门狗模式。 控制寄存器WDTCTL由两部分组成,高8位用作口令,低8位实现对WDT的控制操作。要实现对WDT的操作控制,必须先写入高字节看门狗口令。口令为5AH,头文件里一般将WDTPW宏定义为5AH.WDTCTL寄存器各位定义如下: 15~8 7 6 5 4 3 2 1 0 口令 HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0 IS0 IS1 选择看门狗定时器的定时输出,其中T是WDTCNT的输入时钟源周期。一般宏定义WDTIS0为0x0001,WDTIS1为0x0002. 0 T*2^15(PUC复位后的值) 1 T*2^13 2 T*2^9 3
[单片机]
STM32 HAL库 定时器中断
//定时时间t=(Prescaler +1)*(Period +1) /clock(定时器时钟评率) ` MX_TIM3_Init(); HAL_TIM_Base_Start_IT(&htim3); //(必须要,启动定时器中断) static void MX_TIM3_Init(void) { /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig =
[单片机]
基于LPC2129定时器捕获功能的车速信号采集系统
引言 汽车传感器是汽车计算机系统的输入装置,它把汽车运行中各种工况信息,如车速、各种介质的温度、发动机运转工况等,转化成电信号传给计算机,以便汽车运行处于最佳工作状态。自20世纪80年代以来,传感器在汽车领域上的应用不断扩大,它们在汽车电子稳定性控制系统(包括轮速传感器、陀螺仪以及刹车处理器)、车道偏离警告系统和盲点探测系统(包括雷达、红外线或者光学传感器)各个方面都得到了应用。 车速传感器是汽车传感器中基础而且重要的一部分。车速是汽车道路实验中的重要参数,它与车轮力、踏板力和车轮转速等参数相结合,对整车动态性能的分析、制动系统的性能匹配和ABS防抱死系统的开发,以及操纵稳定性实验的准确性有着重要的意义和应用价值。 为了
[单片机]