• 大小: 23KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签:

资源简介

基于 ATMEGA-16 Timer 的 PWM 与 Proteus 仿真, 在 ICC AVR 平台开发. 学习 AVR 单片机定时器资源的简单例子,采用定时器的溢出与比较中断方式实现的 PWM

资源截图

代码片段和文件信息



#include 
#include 

#define PPM_PORT  PORTB
#define PPM_DIR   DDRB
#define PPM_Pin   BIT(7)

unsigned int timeValue = 2100;

#define Counter     (65536 - timeValue)
#define Compare    (Counter + 400)


/* PPM 初始化 */
void PPM_Init(void)
{
/* -------------- GPIO 管脚初始化 -------------- */
PPM_PORT |= PPM_Pin;
PPM_DIR  |= PPM_Pin;

  /* -------------- 定时器初始化 -------------- */
TCNT1 = Counter;    /* 定时器初值 产生溢出中断 */ 
OCR1A = Compare;    /* 匹配比较输出 - 0.4ms 高电平 */

TIMSK  |= (1 << 4) | (1 << 2); /* 开启比较 A 中断和溢出中断允许 */
TCCR1B |= 0x02;                /* 启动定时器 普通模式 8 分频 */

}


void Peripheral_Init(void)
{
/* 禁止所有中断 */
CLI();           

/* 禁止 JTAG */
MCUCR  = 0x00;
MCUCSR = 0x80;  
GICR   = 0x00;

PPM_Init();

/* 开全局中断 */
SEI();    
}

/* T1 比较中断服务程序 在 TCNT1 = OCR1A */
#pragma interrupt_handler timer1_comp_isr:7
void timer1_comp_isr(void)
{
/* 输出低电平 持续到溢出中断 */ 
PPM_PORT &= ~PPM_Pin;    
}

/* T1 溢出中断服务程序 */
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
TCNT1 = Counter;

/* 输出高电平 持续到溢出中断 也就是 0.4ms */
PPM_PORT |= PPM_Pin;   
}

void main(void)
{
Peripheral_Init();

while(1)
{
NOP();
}
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10178  2016-06-25 13:58  2、AVR - Timer\Code\Project\main.lis

     文件       2607  2016-06-25 13:58  2、AVR - Timer\Code\Project\main.o

     文件       1819  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.cof

     文件        808  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.dbg

     文件        892  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.hex

     文件          9  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.lk

     文件       6764  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.lst

     文件        612  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.mak

     文件       1974  2016-06-25 13:58  2、AVR - Timer\Code\Project\TIMER.mp

     文件       1266  2016-06-25 13:58  2、AVR - Timer\Code\Project\Timer.prj

     文件         52  2016-06-25 14:01  2、AVR - Timer\Code\Project\TIMER.SRC

     文件       1366  2016-06-25 13:58  2、AVR - Timer\Code\source\main.c

     文件      69802  2016-06-25 13:59  2、AVR - Timer\Proteus\Timer.DSN

     文件       1338  2016-11-04 20:49  2、AVR - Timer\Proteus\Timer.PWI

     目录          0  2016-06-25 10:27  2、AVR - Timer\Code\include

     目录          0  2016-11-04 14:38  2、AVR - Timer\Code\Project

     目录          0  2016-11-04 14:38  2、AVR - Timer\Code\source

     目录          0  2016-11-04 14:38  2、AVR - Timer\Code

     目录          0  2016-11-04 20:49  2、AVR - Timer\Proteus

     目录          0  2016-11-04 14:38  2、AVR - Timer

----------- ---------  ---------- -----  ----

                99487                    20


评论

共有 条评论

相关资源