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

📄 tarea 3.c~

📁 this is a dimmer designed with atmega16.
💻 C~
字号:
/*
Tarea 3
Dimmer
Presentado por:
Raymundo Yamamoto
2004-0081
*/

//Agregando libreria mega16.h
#include<mega16.h>           

//Declarando variables
	unsigned int	conteo=16;		//Entero sin signo 'conteo' 
        unsigned int 	cantidad_min=16;	//Entero sin signo 'cantidad_min'
        unsigned int	cantidad_max=256;	//Entero sin signo 'contidad_max'
        unsigned int	cantidad=16;		//Entero sin signo 'cantidad'

//Interrupcion para incrementar intensidad
interrupt [EXT_INT0] void isr_ext0()
{       
	if(conteo<cantidad_max)			//Limitando la maxima intensidad
	{
	conteo  =  conteo + cantidad;		//Incrementando conteo
	OCR1A	=  conteo; 			//Colocando nuevo conteo
	}	
}

//Interrupcion para decrementar intensidad
interrupt [EXT_INT1] void isr_ext1()
{       
	if(conteo>cantidad_min)			//Limitando la minima intensidad
	{
	conteo  =  conteo - cantidad;		//Decrementando conteo
	OCR1A	=  conteo;			//Colocando nuevo conteo
	}            	
}

//Interrupcion para el cruce por cero
interrupt [EXT_INT2] void isr_ext2()
{       
	TCCR1B	|=  0b00000100;			//Prescaler on
}

interrupt [TIM1_OVF] void overflow()
{
	TCCR1B	&=  0b11111000;			//Prescaler off
        TCNT1=0;				//Contador 1 en cero
}
//Programa principal
void main()
{
        //Programando registros
        DDRA	=  0b11111111;
        DDRB	&= 0b11111011; 			//Pin B2 entrada
        DDRB	|= 0b10000000;
        DDRD	&= 0b11110011;			//Pin D2 y D3 entrada
        DDRD	|= 0b00100000;			//Pin D5 salida
        TCCR1A	=  0b11110010;			//OC1A y OC1B en '0' en compare match y '1' en BOTTOM
        					//FOC1A y FOC1B en '0' para modo PWM
        					//WGM11 y WGM10 para modo 14
        TCCR1B	=  0b00011000;			//Input Capture Noise Canceler desactivado
        					//Input Capture Edge Select flanco negativo
        					//WGM13 y WGM12 para modo 14
        					//Prescaler off
        ICR1H	=  1;				//ICR1=256
        ICR1L	=  0;				//ICR1=256
        MCUCR	|= 0b00001111;			//ISC1 flanco positivo
        					//ISC0 flanco positivo
	MCUCSR	|= 0b01000000;			//ISC2 flanco positivo
	GICR	|= 0b11100000;			//INT1, INT0 y INT2 activados
	SREG	|= 0b10000000;			//Global interrupt activado
	SFIOR	|= 0b00000100;			//Pull-ups desactivado
	TIMSK	|= 0b00000100;
	OCR1A	=  conteo;			//Iniciando compare match
	TCNT1	=  0;				//Timer counter1 en cero	
	
	while(1);				//Dejar programa cerrado

}

⌨️ 快捷键说明

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