⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main._c

📁 使用Attiny24的T0、T1两个定时器产生2路的PWM波,一路8位,一路10位
💻 _C
字号:
/*--------------------------------------------------------
   Atiny24-PWM:  此版本使用T0、T1共两路PWM,但目前两者还不能独立
   PWM mode:  
     TCCR0A:  COM0A1-COM0A0-COM0B1-COM0B0 - - WGM01-WGM00 
	 TCCR0B:  FOC0A-FOC0B - - WGM02-CS02-CS01-CS00
	 TCCR1A:  COM1A1-COM1A0-COM1B1-COM1B0 - - WGM11-WGM10
     TCCR1B:  ICNC1-ICES1 - WGM13-WGM12-CS12-CS11-CS10                          
---------------------------------------------------------*/
#include "iot24v.h"
#include "macros.h"
#include "selffile.h"

unsigned int OCR0_temp,OCR1_temp;
/*----------------------------------------
  主程序
----------------------------------------*/
void  main(void)
{
    NOP();
    CLI();
	WTCHDOG_init();
	OCR0_temp=0;
	OCR1_temp=0;
	
    MCU_init();
	WDR();
	SEI();
	while(1)
	{
	   Delay_nms(500);
	   OCR0_temp+=1;
	   OCR1_temp+=0x10;
	   if(OCR0_temp>0xff)
	      OCR0_temp=0;
	   if(OCR1_temp>0x3ff)
	      OCR1_temp=0;
	
	   OCR0A=OCR0_temp;
	   OCR1A=OCR1_temp;
	   WDR();
	}
}

/*----------------------------------------
  系统初始化
----------------------------------------*/
void  timer1_init(void)
{
	TCNT1H=0x00;
	TCNT1L=0x00;
	OCR1AH=0x00;             
	OCR1AL=0xff;
	TIMSK1=0x00;
	TCCR1A=(1<<COM1A1)|(1<<WGM10)|(1<<WGM11);    
	TCCR1B=(1<<CS10);
}

void  timer0_init(void)
{
    TCCR0B=0x00;
	TCNT0=0x00;      //0xb0
	OCR0A=0x80;
	TIMSK0=0x00;
	TCCR0A=(1<<COM0A1)|(1<<WGM00); 
	TCCR0B=(1<<CS00);
}

void  MCU_init(void)
{
    DDRA=(1<<PA6)|(1<<PA5);
	DDRB=(1<<PB2);
	MCUCR = 0x00;
    GIMSK = 0x00;
    timer0_init();
	timer1_init();
}

/*----------------------------------------
  看门狗设置
----------------------------------------*/
void  WTCHDOG_init(void)     //WTCHDOG: use the least frequency,about 2S
{
    WDR();
	WDTCSR=0x9f;
	WDTCSR=0x0f;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -