×

定时器、PWM、ICP范例(AVR 定时器使用范例)

消耗积分:10 | 格式:rar | 大小:33 | 2008-11-01

分享资料个

/***********************************************
****      AVR 定时器使用范例                   ***
****                                        ***
**** 作者:  HJJourAVR                        ***
**** 编译器:WINAVR20050214                   ***
***********************************************/
/*
本程序简单的示范了如何使用ATMEGA16的定时器
 AVR定时器的要点介绍
 T0工作于CTC模式,输出1KHz/2KHz 50%占空比的方波
 T1工作于快速PWM模式兼输入捕捉
 T2工作于相位修正PWM模式,输出490Hz的8bit PWM波
     
出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器
对于定时器,AVRstudio的软件仿真是不准确的。
*/

#include
#include
#include
//时钟定为8MHz,F_CPU=8000000

//管脚定义
#define ICPKEY   6  //ICP1  PD6 按键模拟ICP输入
#define PWM0   3  //OC0   PB3
#define PWM1A   5  //OC1A  PD5
#define PWM1B   4  //OC1B  PD4
#define PWM2   7  //OC2   PD7

//宏定义
#define PWM1A_ON()  PORTD|= (1<#define PWM1A_OFF()  PORTD&=~(1<

//全局变量
volatile unsigned int ICP_Time;  //记录ICP输入捕捉事件的发生时刻
volatile unsigned char T2PWM;  //设置T2的PWM值
volatile unsigned char T0OCR;  //设置T0的时间值

//仿真时在watch窗口,监控这些变量。

void timer0_init(void) //CTC模式输出1KHz/2KHz方波
{
 OCR0  = T0OCR;  //设定TOP值
 //TOP=8000000/(2*64*1000)-1=61.5  选61  1.008KHz(0.992mS)
 //TOP=8000000/(2*64*2000)-1=30.25 选30  2.016KHz(0.496ms)
 TCCR0 = (1< //64分频,CTC模式,OC0取反输出方波
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !