- Код: Выделить всё • Развернуть
ПП
void select()
{
return;
}
Функция:
int getMax(int a, int b)
{
return (a>b)?a:b;
}
2) В главной функции на порт, к которому подключен светодиод, подать или 0 или 1 соответственно варианту подключения светодиода.
roboforum.ruТехнический форум по робототехнике. |
|
|
ПП
void select()
{
return;
}
Функция:
int getMax(int a, int b)
{
return (a>b)?a:b;
}
можно пример, пожалуйста (желательно чтобы было 4 уровня максимальной яркости, которые зависят от заряда кристалла)Подключаем к одному из выводов ШИМ светодиод, пишем программу
посмотрите пример на заглавнойGrayHunter писал(а): ШИМ светодиод, пишем программу - можно пример
Temp = 1;
if(Temp==PORTD.0) // получаем данные с Экрана/ножки PD0 и проверяем на перемычку
{
if(Temp==PORTD.1 || Temp==PORTD.2) // получаем данные с ножек PD1 и PD2 и проверяем на замыкание сразу нескольких перемычек
{
goto Fast_Burning; // если замкнуто несколько перемычек - перейти к быстрому прогоранию
};
Temp = 1; // кристалл в Экране (эту строку можно убрать)
??? - вернуться в место вызова этой подпрограммы - ???
};
Temp = 0; // кристалл НЕ в Экране
??? - вернуться в место вызова этой подпрограммы - ???
rcall Название_подпрограммы
Название_подпрограммы:
код_подпрограммы
ret ; конец подпрограммы. При этом продолжится выполнение программы, вызвавшей данную подпрограмму, с места вызова. Т.е., с команды, следующей за командой rcall
перечитал - я уже несколько раз разными способами задал один вопрос, а мне никак не могут полноценно ответить. Только вот "прочитай стопицот книг, чтобы научиться одной из популярных вещей". Не смешно, согласен, начинает надоедать.перечитайте эту страницу еще раз внимательно.
#include <mega8.h>
#include <delay.h>
unsigned char Temp;
qwerty1() // функция "do"
{
Temp = 1;
if(Temp==PIND.0)
{
if(Temp==PIND.1 || Temp==PIND.2)
{
goto Fast_Burning;
};
return;
};
Temp = 0;
return;
}
while (1 != 1);
void main(void)
{
DDRB = 0b00000001;
DDRD = 0b00000000;
PORTD = 0b00000111;
again:
qwerty1(); // вызываем "подпрограмму" "qwerty1"
if(Temp==1)
{
PORTD.0 = 1;
goto again;
};
PORTD.0 = 0;
goto again;
Fast_Burning:
PORTD.0 = 1;
delay_ms(60); // задержка
PORTD.0 = 0;
delay_ms(60); // задержка
goto again;
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10