本帖最后由 pzsh 于 2022-4-20 10:21 编辑
这个定时器的设置对不对,0.140MS溢出中断,中断函数对不对?
#include <mega8.h>; //包含单片机内部资源预定义
#include <delay.h>;
// 宏定义---
typedef unsigned int uint;
typedef unsigned char uchar;
#define NOP() #asm("nop")
void MCU_init (void); // 涵数声明---
uchar irtime; // 全局变量---
void main (void)
{
MCU_init(); // 初始化MCU
#asm("sei")
while (1)
{
if(irtime==100)
{
TCCR0=0X00;
irtime=0;
}
}
}
// ------------------------------------------------- //
void MCU_init (void) //单片机初始化
{
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x02;
GIFR=0xC0;
GIFR|=(1<<INTF0);
TCCR0=0X02; //WGM01=0、WGM00=0,普通模式;COM01=0、COM00=0,PB3为普通I/O(OC0不与引脚相连)
//CS02=0、CS01=1、CS00=0,8分频
TCNT0=0x74; //定时器频率=8M/8=100000HZ,定时器初值设定时间=(256-116)/100000=0.140ms
//OCR0 =0x73; //匹配值
TIMSK |=0X01; // 允许中断
}
// ------------------------------------------------- //
interrupt[TIM0_OVF] void timer_ovf(void)
{
irtime++;
TCNT0=0X74;
} |