Re: Сопряжение дозиметра с МК.
Добавлено: Пт июл 13, 2012 17:40:21
Я чёто из даташита не понял, как включить делилку на 8, на пин Т0. Т.к. пин Т0 подкючается цифрами 00000111, а делилка цифрами 00000010.
Здесь можно немножко помяукать :)
https://radiokot.ru:443/forum/
Код: Выделить всё
#define F_CPU 8000000 // Инициализация
#include <avr/io.h>
#include <util/delay.h>
void maim(void)
{
DDRB=0b011011;
PORTB=0b10010;
MCUCR=0b01000000;
GTCCR=0b10000000;
asm("sei");
{
PORTB=001000 // Запускаю генератор
TCCR0B=0b00000111; // Запускаю счётчик
_delay_ms(1000);
TCCR0B=0b00000000; // Счётчик выключается
if (TCNT0>500) // Если насчитал больше 500, зажечь синий светик
{
PORTB=000001;
_delay_ms(5000)
PORTB=000000;
}
else if (TCNT0>300) // Если более 300, то ещё и зелёный
{
PORTB=000010;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0>200) // А если более 200, то ещё и красный
{
PORTB=010000;
_delay_ms(2000)
PORTB=000000;
}
asm("sleep") // Потом сон
}
}Код: Выделить всё
#define F_CPU 8000000 // Инициализация
#include <avr/io.h>
#include <util/delay.h>
void maim(void)
{
DDRB=0b011011;
PORTB=0b10010;
MCUCR=0b01000000;
GTCCR=0b10000000;
asm("sei");
{
PORTB=001000 // Запускаю генератор
TCCR0B=0b00000111; // Запускаю счётчик
_delay_ms(1000);
TCCR0B=0b00000000; // Счётчик выключается
if (TCNT0>300) // Если насчитал больше 300, зажечь синий светик
{
PORTB=000001;
_delay_ms(5000)
PORTB=000000;
}
else if (TCNT0>200) // Если хотя бы более 200, то ещё и зелёный
{
PORTB=000010;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0<100) // А если менее 100, то ещё и красный
{
PORTB=010000;
_delay_ms(2000)
PORTB=000000;
}
asm("sleep") // Потом сон
}
}