рд╕реНрдХреВрд▓ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдорд╛рдЗрдХреНрд░реЛрдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХрд╛ рд╢реМрдХ рдерд╛, рд░реЗрдбрд┐рдпреЛ рдХреНрд▓рдм рдореЗрдВ рдЧрдП, рдХрдИ рд╕рд░рд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ред рдлрд┐рд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп, рдХрд╛рдо, рд╡рд┐рд╡рд╛рд╣ рдФрд░ рдмрд╣реБрдд рдХрдо рд╣реА рдЙрдирдХреЗ рд╢реМрдХ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛редрдЕрдкрдиреЗ рдШрд░ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛, рдХреАрдорддреЛрдВ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдПрд╡реАрдЖрд░ рдпрд╛ рдПрд╕рдЯреАрдПрдо рдкрд░ рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рднрд╛рд╡реБрдХ рд╣реЛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдХрдИ рдордВрдЪреЛрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЪрдпрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЧрд▓рдд рдерд╛, рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рдерд╛ред рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд▓рдЧрддреА рд╣реИ: рдПрдХ рдореНрдпреВрдЬрд┐рдХ рдкреНрд▓реЗрдпрд░ рдЬреЛ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб, рдпрд╛ рдерд░реНрдорд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рд╛рд░реНрдо рдШрдбрд╝реА рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдЦреЗрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП ...рдЖрдИрдПрди рд╕реАрд░реАрдЬрд╝ рдХреЗ рдЧреИрд╕-рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рд╕рдВрдХреЗрддрдХреЛрдВ рдФрд░ рдШрдбрд╝рд┐рдпреЛрдВ рдкрд░ рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛, рдмрдЪрдкрди рд╕реЗ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдЖрдИ рдереА рдХрд┐ рдПрдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рдореИрдВрдиреЗ рддрд░рд╛рдЬреВ рдкрд░ рдирдВрдмрд░реЛрдВ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рд╡реЗ рдкрддрд▓реЗ рддрд╛рд░реЛрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЪрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣рд╛рдВ рдЕрд▓рдЧ рд╣реЛ рдЧрдПредрдпрд╣ рддрдп рд╣реИ - рдореИрдВ рдШрдбрд╝реА рднрд░ рдХрд░реВрдВрдЧрд╛ред рдЧреИрд╕-рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рд╕рдВрдХреЗрддрдХ рд▓рдЧрднрдЧ 180 рд╡реЛрд▓реНрдЯ рдХреЗ рд╡реЛрд▓реНрдЯреЗрдЬ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП, k155id1 рдЪрд┐рдк рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЙрдЪреНрдЪ рд╡реЛрд▓реНрдЯреЗрдЬ рдЪрд┐рдк, рдПрдХ рдмрд╛рдЗрдирд░реА-рджрд╢рдорд▓рд╡ рдбрд┐рдХреЛрдбрд░ред рдЙрдЪреНрдЪ рд╡реЛрд▓реНрдЯреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖ рдкреАрдбрдмреНрд▓реВрдПрдо рдЪрд┐рдк рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдФрд░ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рдЪрд┐рдк рдпрд╛ рд╕рдорд╛рдкреНрдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдШрдбрд╝реА рднреА рд╣реИредрдПрдХ рд╕рд╛рдзрд╛рд░рдг Atmega8 рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╡рд░рдг рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдХрд┐ рдПрдХ рдПрдирд╛рд▓реЙрдЧ-рдЯреВ-рдбрд┐рдЬрд┐рдЯрд▓ рдХрдирд╡рд░реНрдЯрд░ рдФрд░ рдкрд▓реНрд╕-рдЪреМрдбрд╝рд╛рдИ рдореЙрдбреНрдпреВрд▓реЗрд╢рди, рд╕реАрд░рд┐рдпрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрджрд┐ рдерд╛, рдФрд░ рд╡реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреЗрд╡рд▓ рдШрдбрд╝реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдХреЗрддрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдХреЛрдбрд░ рднреА рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдо рдХреА рдмрд╛рдд рдереА, рдпрд╣ рдЗрддрдирд╛ "рд╢рдХреНрддрд┐рд╢рд╛рд▓реА" рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕реЗ рдШреВрдордиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВредрдирддреАрдЬрддрди, рд╕рд░реНрдХрд┐рдЯ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╕реНрдкреНрд░рд┐рдВрдЯрд▓реИрдпреВрдЯ рдореЗрдВ рдПрдХ рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдЬреЛрдбрд╝реЗ рдХрд╛ рдЬрдиреНрдо рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдореЗрдВ рд╣реБрдЖ:
рдПрдХ рдмреЛрд░реНрдб рдореЗрдВ рд╕рдм рдХреБрдЫ рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╣реИ, рджреВрд╕рд░реЗ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрддрдХ рдкрд░:
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ atmega8 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рднреА рддреАрди рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рдШрдбрд╝реА рдХреНрд╡рд╛рд░реНрдЯрд░ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрд╡рдпрдВ рдЖрдВрддрд░рд┐рдХ RC рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред PWM рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреВрд╕реНрдЯрд░ рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ рдЙрдЪреНрдЪ рд╡реЛрд▓реНрдЯреЗрдЬ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, 28 рдкреИрд░ рдЪрд╛рд░ рдореЗрдВ 12 рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЛ рд░реЛрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереЗ, рдФрд░ рдХреБрдЫ рдФрд░ рдмрд▓реНрдм рдмрдиреЗ рд░рд╣реЗредрдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЗрдХрдЯреНрдареЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:
рдФрд░ рдпрд╣ рд░реЛрд╢рдиреА рдХрд░рддрд╛ рд╣реИ:
рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдмрдиреЗ рд░рд╣реЗ, рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдИ рдЕрд▓рдЧ рдкреАрдбрдмреНрд▓реВрдПрдо рдФрд░ рдЖрд░рдЯреАрд╕реА рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЖрдХреНрд░рд╛рдордХ рдирд╣реАрдВ рд╣реИредрдмреА рдмреА рдиреЗ рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛрдбрд╝рд╛, рдПрдХ рдкреНрд░реЛрдЯреАрд╕ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд, рдпреБрдЧрд▓ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛: рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕реЗ
рдкреНрд░рдореБрдЦ рдпреЛрдЬрдирд╛ рд▓реАрдПрд╕рдЖрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//
void init_pwm (void)
{
//
DDRB=0xFF; //OC1A,OC1B,OC2 тАФ
TCCR1A=(1<<COM1B1)|(1<<WGM10)|(1<<WGM11); // OC1A
TCCR1B=(1<<CS10)|(1<<WGM12)|(1<<WGM13); // OC1B
//
OCR1A=250;
OCR1B=215; // 0 200/170 250/215
}
volatile unsigned char second, minute, hour, h, m;
int voltage_ADC, dimm;
// 2
ISR (TIMER2_OVF_vect)
{
if(second++ >= 59)
{
second = 0;
minute++;
}
if(minute > 59)
{
minute = 0;
hour++;
}
if(hour > 23)
hour = 0;
//set_time(hour,minute,second); //
}
ISR (TIMER0_OVF_vect)
{
PORTC |= (1 << PC2);
}
ISR (ADC_vect)//
{
voltage_ADC = ADCW;//
if(voltage_ADC<260 && OCR1A<300){OCR1A++;OCR1B=OCR1A-dimm;}
if(voltage_ADC>260 && OCR1A>170){OCR1A--;OCR1B=OCR1A-dimm;}
ADCSR |= (1<<ADSC);//
}
//
int main(void)
{
unsigned char r;
unsigned char mode;
init_pwm(); //
PORTD=0x00; // D 0, D
DDRD=0xFF; // D , 5
PORTC = 0b00000000; DDRC = 0b11101111;
TIMSK &= ~(1 << OCIE2)|(1 << TOIE2); // T2
ASSR |= (1 << AS2); // T2
TCNT2 = 0; //
TCCR2 |= (1 << CS22)|(0 << CS21)|(1 << CS20); // 128-(32768/128 = 256 /c)
TIMSK |= (1 << TOIE2); // 2
TCCR0|=(0<<CS02)|(1<<CS00);
//TIMSK |= (1 << TOIE0); // 2
//ads
ADMUX|= (1<<REFS0)|(1<<REFS1)|(1<<MUX2); //
//ADCSRA|=(1<<ADEN)|(1<<ADFR)|(1<<ADIE)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
sei(); //
hour = 23; //
minute = 13;
second = 23;
mode=1;
while (1) //
{
/*
PORTD |= (1 << PD1); // 1
PORTD &= ~ (1 << PD1); // 1
*/
dimm=35;
PORTC &= ~ (1 << PC2);
if(mode==1){m=minute; h=hour;}
if(mode==2){m=second; h=minute;}
if(mode==3){m=voltage_ADC%100; h=voltage_ADC/100;};
for (r=0;r<4;r++)
{
if(r==1)
{
PORTC |= (1 << PC3);//
if (m/10==0) PORTD |= (1 << PD3);//0
if (m/10==1) PORTD |= (1 << PD2);//1
if (m/10==2) PORTB |= (1 << PB1);//2
if (m/10==3) PORTB |= (1 << PB3);//3
if (m/10==4) PORTB |= (1 << PB4);//4
if (m/10==5) PORTD |= (1 << PD5);//5
if (m/10==6) PORTD |= (1 << PD6);//6
if (m/10==7) PORTD |= (1 << PD7);//7
if (m/10==8) PORTB |= (1 << PB0);//8
if (m/10==9) PORTD |= (1 << PD4);//9
}
if(r==0)
{
PORTC |= (1 << PC5);//
if (m%10==0) PORTD |= (1 << PD3);//0
if (m%10==1) PORTD |= (1 << PD2);//1
if (m%10==2) PORTB |= (1 << PB1);//2
if (m%10==3) PORTB |= (1 << PB3);//3
if (m%10==4) PORTB |= (1 << PB4);//4
if (m%10==5) PORTD |= (1 << PD5);//5
if (m%10==6) PORTD |= (1 << PD6);//6
if (m%10==7) PORTD |= (1 << PD7);//7
if (m%10==8) PORTB |= (1 << PB0);//8
if (m%10==9) PORTD |= (1 << PD4);//9
}
if(r==2)
{
PORTD |= (1 << PD1);//
if (h/10==0) PORTD |= (1 << PD3);//0
if (h/10==1) PORTD |= (1 << PD2);//1
if (h/10==2) PORTB |= (1 << PB1);//2
if (h/10==3) PORTB |= (1 << PB3);//3
if (h/10==4) PORTB |= (1 << PB4);//4
if (h/10==5) PORTD |= (1 << PD5);//5
if (h/10==6) PORTD |= (1 << PD6);//6
if (h/10==7) PORTD |= (1 << PD7);//7
if (h/10==8) PORTB |= (1 << PB0);//8
if (h/10==9) PORTD |= (1 << PD4);//9
}
if(r==3)
{
PORTD |= (1 << PD0);//
if (h%10==0) PORTD |= (1 << PD3);//0
if (h%10==1) PORTD |= (1 << PD2);//1
if (h%10==2) PORTB |= (1 << PB1);//2
if (h%10==3) PORTB |= (1 << PB3);//3
if (h%10==4) PORTB |= (1 << PB4);//4
if (h%10==5) PORTD |= (1 << PD5);//5
if (h%10==6) PORTD |= (1 << PD6);//6
if (h%10==7) PORTD |= (1 << PD7);//7
if (h%10==8) PORTB |= (1 << PB0);//8
if (h%10==9) PORTD |= (1 << PD4);//9
}
_delay_ms(3);
PORTC &= ~ (1 << PC3);
PORTC &= ~ (1 << PC1);
PORTC &= ~ (1 << PC5);
PORTD &= ~ (1 << PD1);
PORTB=0x00;PORTC=0x00;PORTD=0x00;
_delay_ms(1);
}
}
}