简介:本文主要为关于定时器0溢出中断的程序处理。
//---------------------------------------------------------------------
//Copyright(c) 博控设计joecongmin 2010 All righr reserved
//文件名:timer0_test1.c
//文件描述:用定时器1完成100US定时,一秒钟到后取反PC1口
//外接的LED灯,实现LED灯的闪烁。
//实验目的:学习AVR 单片机的定时器0用作定时器用的方法
//当前版本号:V1.0
//完成时间:2010-4-7 13:02:45
//修改记录:
//修改时间:
/起草时间:2010-4-7 8:45:01
//--------------------------------------------------------------------
//----------------------------start------------------------------------
#include"iom88v.h"
#define uint16 unsigned int
#define uchar unsigned char
void delay (uint16 i);
void flash_led(void);
void timer0_init(void);
uchar timer_cnt = 0;//定时器1计数个数
void main(void)
{
DDRC |= 0x02; //PC1 output
timer0_init();
while(1)
{
//flash_led();
}
}
//-------------------------------------------------------------------
//函数原型:void delay (uint16 i);
//入口参数:uint16 i:延时变量
//出口参数:无
//功能:实现延时功能
//-------------------------------------------------------------------
void delay (uint16 i)
{
uchar j;
while(i--)
{
for(j=125;j>0;--j)
{
;
}
}
}
//--------------------------------------------------------------------
//
//功能:非定时下实现LED灯的闪烁
//--------------------------------------------------------------------
void flash_led(void)
{
PORTC |= 0x02; //PC1 = 1;
delay(3000);//
PORTC &= 0xfd; //PC1 = 0;
delay(3000);//
}
/*-----------------------------------------------------------------
函数名称: void timer0_init(void)
函数功能: 定时器0初始化 256预分频 定时一秒
参 数:
返 回 值: 无
-----------------------------------------------------------------*/
void timer0_init(void)
{
TCCR0A &= 0xfc; //11111100
TCCR0B = 0x05; //1024分频
SREG |= 0x80; //全局中断使能
TIMSK0 =0x01; // 定时器0溢出中断使能
}
//--------------------------------------------------------------------
//
//
//定时器0中断服务子程序,工作在普通计数模式1024分频,初值为0每256拍溢出
//中断频率 8000000/1024/256 =30.5HZ
//-------------------------------------------------------------------
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
timer_cnt++;
if(timer_cnt>=15)//30.5HZ 15分频 =2HZ即亮0.5秒灭0.5秒
{
timer_cnt = 0;
if((PORTC &= 0x02)==0x02)
PORTC &= 0xfd; //PC1 = 0;
else
PORTC |= 0x02;
}
}
上一篇:基于AVR单片机与DS18B20的实时温度采集与分析系统
下一篇:基于ATMEL AVR单片机的居家安全卫士系统实现
推荐阅读最新更新时间:2024-11-02 22:38
设计资源 培训 开发板 精华推荐
- NIOS-DEVKIT-2C35, Nios II Development Kit, Cyclone II Edition 为基于 Altera Cyclone II 器件开发嵌入式系统提供了硬件平台
- OP249GSZ-REEL7瞬态输出阻抗测试治具典型应用电路
- 使用 ams AG 的 AS1329A-BWLT 的参考设计
- EVAL-ADAU1442EBZ,用于评估 ADAU1442 SigmaDSP 的评估板
- mipi-csi-bridge
- LM324EDR2G 维恩桥振荡器运算放大器的典型应用
- 具有 SCSI-2 有源端接的 LT1086CM-3.3 低压差稳压器的典型应用
- 重庆交通NFC卡
- 基于 SCM-i.MX 6SX SoC i.MX 6 应用处理器的 EVB-SCMIMX6SX、SCM-i.MX 6SX 评估板
- MC78M08ACDTRKG 8V 电流升压稳压器的典型应用