📄 time0.h
字号:
#ifndef __time0_h
#define __time0_h
#include <iom16v.h>
//#include <iom128v.h>
#include <macros.h>
#include <delay.h>
#include <parameter.h>
//---------------------------定时器0初始化------------------------------------//
void timer0_int(void)
{
DDRD |= 0xC0;
// TCNT0=178; // T/C0 开始值 定时10ms
// TCNT0=100; // T/C0 开始值 定时20ms
TCNT0=57; // T/C0 开始值 定时0.0002s
TCCR0=0x02;
//TCCR0=0x05;
// TCCR0.7=0: 不强制输出比较
// TCCR0.3.TCCR0.6(WGM01,WGM00)=00 : T/C0普通工作模式(定时和计数)
// TCCR0.5, TCCR0.4=00: 正常的端口操作,OC0未连接
// TCCR0.2~TCCR0.0=010: Ft0=Ftos/256
// 因为TCNT0=6->250,所以,计时中断250*256/Ftos
}
//-------------------------50HzPWM波产生函数---------------------------------//
//mega16
#pragma interrupt_handler timer0_ovf_isr:10
//mega128
//#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
static unsigned char tt; //tt用来保存当前时间在一秒中的比例位置
TCNT0=57;
tt++;
if(tt==99)
{
tt=0;
PORTD|=BIT(6);
}
if(scale==tt) //按照当前占空比切换输出高电平
{
PORTD&=~BIT(6);
}
if(tt==50)
{
PORTD|=BIT(7);
}
if(tt==50+scale)
{
PORTD&=~BIT(7);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -